NormAPI
com.normapi/mcpVersion 1.4.0Validate, generate and read German e-invoices (XRechnung, ZUGFeRD) against the official KoSIT rules.
Status
Responds91 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:08 UTC
- Latency
- 91 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- EU hosting detected (detected, not a legal statement)
- Registry data as of
- Nov 14, 2026, 21:12 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://normapi.com/mcpResponds91 msNo sign-in
Claude Code
claude mcp add --transport http normapi https://normapi.com/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: normapi
Remote MCP server URL: https://normapi.com/mcpCursor
{
"mcpServers": {
"normapi": {
"url": "https://normapi.com/mcp"
}
}
}VS Code
code --add-mcp '{"name":"normapi","type":"http","url":"https://normapi.com/mcp"}'Streamable HTTP
npm: @normapi/mcp 1.4.0Package only
npm (npx)
claude mcp add normapi -- npx -y @normapi/mcp@1.4.0Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
4 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
explain_ruleExplain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically break it, and how to fix it, with a link to the full page. Case does not matter. Schema findings (cvc-*) have no explanation. | No | Yes | Yes | No |
generate_invoiceProduce an e-invoice as `ubl` or `cii` XML or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data: an XRechnung for a public-sector buyer (profile `xrechnung`, the default), a plain EN 16931 invoice for a business (profile `en16931`). Totals are computed server-side in decimal arithmetic, and the document is validated against the official rules before it is returned. Data the rules do not permit is refused with the broken rules and how to fix each. Needs the user's NormAPI account; each generated document counts against that account's monthly allowance. | No | No | No | No |
parse_invoiceRead a received e-invoice — XRechnung or any EN 16931 invoice as UBL or CII XML, or a ZUGFeRD/Factur-X PDF — into structured data. `invoice` is in exactly the shape generate_invoice takes (fields the document lacks are left out); `stated` has the totals, the VAT breakdown and each line net as the document states them, as exact decimal strings; `notMapped` lists by path every value of the document the data does not carry. Send the XML as text in `xml`, the PDF base64-encoded in `pdfBase64`, or an uploaded file in `file` — exactly one. `validate: true` adds the KoSIT verdict. No account needed; 5 MB at most. | No | Yes | Yes | No |
validate_invoiceCheck an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; each business-rule finding comes with a plain-language meaning, cause and fix. Send the XML as text in `xml`, the PDF base64-encoded in `pdfBase64`, or an uploaded file in `file` — exactly one. No account needed; 5 MB at most. | No | Yes | Yes | No |
Details
- Registry status
- Active
- Published
- Nov 13, 2026
- Updated
- Nov 13, 2026
- Repository
- Not given
- Categories (suggested)
- Invoicing and accountingSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared