MCP Server
Let your AI assistant look up Peppol participants, validate invoices, plan your integration and send sandbox test invoices — through the same public API your code uses.
getpeppr hosts a Model Context Protocol server. Nothing to install: add the address to your assistant. Four tools work without an account; the three that act for your account ask you to sign in to getpeppr the first time you use one.
sk_live_…) is refused: keep it out of your assistant's configuration.
Connect your assistant
Claude Code
claude mcp add --transport http getpeppr https://api.getpeppr.dev/mcpThe public tools work at once. When you first call an account tool, run /mcp in Claude Code and sign in to getpeppr.
Codex
codex mcp add getpeppr --url https://api.getpeppr.dev/mcpRun codex mcp login getpeppr to sign in before using the account tools.
Cursor
{
"mcpServers": {
"getpeppr": { "url": "https://api.getpeppr.dev/mcp/auth" }
}
}Cursor uses a second address, https://api.getpeppr.dev/mcp/auth, which asks you to sign in when you connect: Cursor does not open a sign-in page when a tool asks for one later.
Tools
| Tool | Account | What it does |
|---|---|---|
lookup_participantLook up a Peppol participant | No | Whether an identifier is registered on the production Peppol network, with which provider, and what the directory says about it. |
validate_invoiceValidate an invoice | No | A UBL document against the official Peppol rulebooks, or an SDK-shaped JSON invoice against the SDK's rules. Says whether the document conforms — never whether getpeppr would send it. |
plan_integrationPlan a getpeppr integration | No | The steps for your case (your own company, or a platform sending for customers) and your countries, with the docs to read. |
search_docsSearch the getpeppr documentation | No | Up to five pages of these docs, each with a short prose excerpt; the page itself holds the code. |
create_test_customerCreate a sandbox test customer | Yes — writes (sandbox) | Platform accounts: a sandbox customer company (sub-tenant legal entity), through POST /v1/legal-entities. The same arguments again return the same company and its current status. |
send_test_invoiceSend a sandbox test invoice | Yes — writes (sandbox) | A sandbox invoice to the Peppol test receiver 9925:BE0314595348, through POST /v1/invoices. Lines without tax fields get your account's sandbox tax profile; while that profile is unchanged, the same arguments again return the same document, never a second one. |
get_document_statusGet a document's status | Yes — reads | The status of one of your documents, the category of a failed delivery, and its event timeline (types and times only). |
Limits
- Writes are sandbox only.
send_test_invoicesends only to9925:BE0314595348; any other receiver is refused. - No reception test. The MCP server sends and reads; receiving invoices is tested with webhooks.
- Public tools are rate limited, per network address and per minute: 20 lookups, 10 validations, 30 plans and 30 searches; lookups are also capped at 30 a minute across all callers, and at most 20 public calls run at once. Over a limit, the tool answers
mcp.rate_limited. - Validation size: a UBL document up to 1 MiB, a JSON invoice up to 500 lines. A JSON validation does not run the national rules some countries apply when you send; the answer names them.
- Account tools are rate limited per account: 30 test invoices an hour, 10 test customers a day and 30 status reads a minute. Over a limit, the tool answers
mcp.rate_limited. - Every account tool goes through the public API with a key of your organisation, so its errors and history are the API's. The MCP agent key has its own request budget, so an assistant never uses up the quota of your production integration.
- Temporarily off: getpeppr can turn the MCP tools off without notice to protect the service; they then answer
mcp.temporarily_disabled. The API itself is not affected.
What your assistant is told
When it connects, your assistant receives the journey to a first delivered test invoice, so it can lead you through it:
plan_integrationgives the steps and code for your case;search_docsfinds the pages to read.validate_invoiceandlookup_participantneed no account.- You create a free account and register your own company; the account tools then ask you to sign in.
send_test_invoicedelivers to the test receiver9925:BE0314595348. Platform accounts first create a test customer and send as it.get_document_statusfollows the document until it is delivered or failed.- Going live (an
sk_live_key, real receivers, webhooks) happens in the console and in your code, never through the MCP server.
Every tool result carries a code from the result catalogue and a sentence saying what to do next; a refusal by the API also carries the API's reason and, when the API names one, the rule that failed.
The MCP agent key
When you connect by signing in, getpeppr acts for your organisation with a sandbox API key named MCP agent — sandbox, listed on the console's API keys page. Any member of the organisation can use it through their assistant. It cannot archive a customer company or request an attestation, and it cannot exist in production.
- Turn it off: an organisation admin can switch off AI assistants (MCP) on the API keys page, or revoke the key, which does the same; a member cannot. Connected assistants stop acting for the organisation at once.
- Roles follow your organisation: when you sign in, creating a test customer needs the admin role. A role change or a removed member takes effect within a minute.