MCP server
Connect an assistant or agent to Klarbon over the Model Context Protocol: five tools to read, check and convert e-invoices and bank statements.
On this page
Endpoint: https://klarbon.app/mcp. Streamable HTTP with JSON answers, protocol versions 2025-06-18 and 2025-03-26, one JSON-RPC message per request, no session. Server version 1.0.0.
list_formats and open_invoice work without a key, within the anonymous limits. The
other tools need an API key from your account page
and spend the API balance first, then the same credits as the site, as each tool's description states.
Add Klarbon to your client
Any client that speaks MCP over HTTP
Give the client the address and an Authorization header. Configuration formats differ between clients; this is an example. Keep the key in an environment variable where supported.
{
"mcpServers": {
"klarbon": {
"type": "http",
"url": "https://klarbon.app/mcp",
"headers": {
"Authorization": "Bearer ${KLARBON_API_KEY}"
}
}
}
} Desktop assistants that start local servers
Some desktop assistants only start servers on your computer. The mcp-remote bridge, which needs Node.js, connects them to Klarbon. The key sits in the assistant's configuration file, so keep that file private.
{
"mcpServers": {
"klarbon": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://klarbon.app/mcp",
"--header",
"Authorization:${KLARBON_AUTH}"
],
"env": {
"KLARBON_AUTH": "Bearer kb_live_..."
}
}
}
} Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json in one. Cursor reads the key from the KLARBON_API_KEY environment variable.
{
"mcpServers": {
"klarbon": {
"url": "https://klarbon.app/mcp",
"headers": {
"Authorization": "Bearer ${env:KLARBON_API_KEY}"
}
}
}
} VS Code
For the Local harness, .vscode/mcp.json in the workspace supports this VS Code configuration format and its input variables. It is not the portable mcpServers format.
{
"inputs": [
{
"type": "promptString",
"id": "klarbon-key",
"description": "Klarbon API key",
"password": true
}
],
"servers": {
"klarbon": {
"type": "http",
"url": "https://klarbon.app/mcp",
"headers": {
"Authorization": "Bearer ${input:klarbon-key}"
}
}
}
} Files
Give each file as file_base64 or as file_url, a public https address. Addresses on
private, local or reserved networks are refused; Klarbon follows at most 3 redirects and checks each one.
Written files come back as embedded resources and in structuredContent. Files are processed for the request, without a document archive.
Tools
list_formats: List formats
Lists every e-invoice and bank statement format Klarbon handles, with what each can do now: open, check, convert from, convert to, make. Free, no API key needed.
open_invoice: Open an e-invoice
Reads an e-invoice (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, UBL, CII and more) into structured data: parties, lines, totals, VAT, payment details. Optionally returns print-ready HTML. Free; without an API key the anonymous daily limit applies. Files are processed for the request, without a document archive.
| Name | Description |
|---|---|
file_base64 | The file's bytes as base64. Give this or file_url. |
file_url | A public https address of the file. Private and local addresses are refused. |
filename | The file's name, which helps recognise its format. |
html | Also return the invoice as complete, print-ready HTML. |
locale | The language of the HTML's labels. One of en, de, fr, nl, it, es, pl, pt, ro. |
check_invoice: Check an e-invoice
Validates an e-invoice against EN 16931 and its national rules (XRechnung, Peppol BIS and others), with each finding explained in plain words and how to fix it. With country, also applies that country's national rules on top of EN 16931 (France: the CTC rules), only when asked; Klarbon never infers the country. Free within the account's daily checks; needs an API key.
| Name | Description |
|---|---|
file_base64 | The file's bytes as base64. Give this or file_url. |
file_url | A public https address of the file. Private and local addresses are refused. |
filename | The file's name, which helps recognise its format. |
ruleset | A rule set id, or auto (the default) to pick it from the file. Leave it out when you give country. One of auto, en16931-ubl, en16931-cii, en16931-ubl-creditnote, xrechnung-3.0-ubl, xrechnung-3.0-cii, peppol-bis3-invoice, peppol-bis3-creditnote, facturx-1.07-minimum, facturx-1.07-basicwl, facturx-1.07-basic, facturx-1.07-en16931, facturx-1.07-extended, zugferd-2.3-minimum, zugferd-2.3-basicwl, zugferd-2.3-basic, zugferd-2.3-en16931, zugferd-2.3-extended, facturx-1.09-minimum, facturx-1.09-basicwl, facturx-1.09-basic, facturx-1.09-en16931, facturx-1.09-extended, zugferd-2.5-minimum, zugferd-2.5-basicwl, zugferd-2.5-basic, zugferd-2.5-en16931, zugferd-2.5-extended, nlcius, nlcius-cii, fr-ctc, fr-ctc-cii. |
country | Also apply this country's national rules on top of EN 16931 (FR: the French CTC rules). Only when you give it; Klarbon never infers a country from the file. One of FR. |
convert_invoice: Convert an e-invoice
Converts an e-invoice to another format (for example UBL to XRechnung, or CII to a Factur-X PDF) and validates the result; only a valid file is returned. Costs 1 call per invoice from the account's API balance, or 1 credit once the API balance is empty, charged only on success. Needs an API key.
| Name | Description |
|---|---|
file_base64 | The file's bytes as base64. Give this or file_url. |
file_url | A public https address of the file. Private and local addresses are refused. |
filename | The file's name, which helps recognise its format. |
target (required) | A format id that list_formats shows with convertTo, such as xrechnung or peppol-bis-billing. |
profile | The profile, for formats that have several. |
label_locale | The language of a rendered PDF's labels. One of en, de, fr, nl, it, es, pl, pt, ro. |
idempotency_key | Any unique string. Calling again with the same key and arguments within 24 hours never charges again. |
convert_bank_statement: Convert a bank statement
Converts a bank statement file (CAMT.053, MT940, CODA, Norma 43, CFONB 120, BAI2, OFX, QIF and more) to another format such as CAMT.053, MT940, CSV or Excel, and checks that the balances reconcile. When the file leaves something open, such as the date order or the opening balance, the answer is a need: call again with the same file, the answer and the resume token. Costs 1 call per started 500 transactions from the account's API balance, or credits once the API balance is empty, charged only on success. Needs an API key.
| Name | Description |
|---|---|
file_base64 | The file's bytes as base64. Give this or file_url. |
file_url | A public https address of the file. Private and local addresses are refused. |
filename | The file's name, which helps recognise its format. |
target (required) | A bank format id, such as camt-053, mt940, bank-csv or xlsx. |
statement_number | The statement number MT940 and CODA carry. |
opening_balance | |
date_order | One of dmy, mdy, ymd. |
century | One of 1900, 2000. |
currency | |
decimal_separator | One of ., ,. |
account | |
resume | The resume token from the last need answer. |
idempotency_key | Any unique string. Calling again with the same key and arguments within 24 hours never charges again. |
Prices, limits and how to get a key: Klarbon for developers.