Invoiceproof

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 7, 2026

Validate, parse, fix and render EU e-invoices: XRechnung, ZUGFeRD, Factur-X, Peppol, KSeF.

VerifiedSTDIODesktop onlyFinanceBusiness & Commerce

Overview

AI-generated overview

Local bridge that forwards e-invoice tools to a hosted service, letting an assistant detect, parse, validate, fix and render European e-invoices.

What you can do
  • List supported formats, profiles, rule sets and per-tool costs
  • Detect the format, syntax, profile and country standard of an invoice file
  • Parse an invoice into normalised JSON with parties, lines, VAT and totals
  • Validate against the official rule set for the detected format and list failed rules
  • Fix deterministic EN 16931 errors, optionally recalculating totals, with a dry-run option
  • Render the invoice as HTML or PDF in a chosen label language, and check the API key's plan and usage
When to use it
Useful when you work with European e-invoices such as XRechnung, ZUGFeRD, Factur-X, Peppol BIS or KSeF and want an assistant to check, extract, repair or present them without leaving the chat.
Requirements
Runs locally via npx or Docker and needs network access to the upstream hosted service. An optional EINVOICECHECKER_API_KEY environment variable adds a bearer token; without it the anonymous rate limit applies. EINVOICECHECKER_MCP_URL can override the endpoint.
Before you install
The server holds no invoice logic; invoice content is sent to a third-party hosted service. Some tools count as two requests upstream, so usage and quota matter. fix_invoice can rewrite invoice data, so use dry_run first. An API key is a credential and should be kept in the client's env block.

Installation

In SourceWeft

  1. Open Invoiceproof in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

invoiceproof

invoiceproof is a thin local bridge to the eInvoiceChecker hosted MCP server, a service for working with European electronic invoices. It can tell you which formats are supported, identify an invoice you hand it, extract its contents as normalised JSON, check it against the official rule set for its format, repair the deterministic errors it finds, and render the document as HTML or PDF.

The bridge holds no invoice logic and validates nothing itself. It serves the upstream server's tool list locally — exactly as captured from the live endpoint — and forwards each tool call upstream, returning the result untouched. Coverage spans XRechnung, ZUGFeRD and Factur-X, Peppol BIS, KSeF, and the other formats and national rule sets the upstream supports.

Tools

No tool declares a required field; the invoice goes in as content (XML text) or content_base64 (a ZUGFeRD / Factur-X PDF or other file), both optional in the captured schemas.

  • list_supported_formats — which formats, profiles and rule sets the service supports, and what each tool costs. No arguments.
  • detect_invoice — identify the format, syntax, profile/customisation and country standard of an invoice file. The cheap first step before validating.
  • parse_invoice — extract the invoice as normalised JSON: number, dates, seller, buyer, lines, VAT breakdown, totals and payment details.
  • fix_invoice — deterministically repair validation errors of an EN 16931 invoice: empty elements, decimals, date and code formats, specification ids; with totals: true it also recalculates totals and the VAT breakdown from the lines. Data missing from the file can be supplied under values; anything still missing is listed in needs_input. dry_run reports changes without applying them. Counts as 2 requests upstream.
  • validate_invoice — run the official rule set for the detected format and return every failed rule with id, severity, message and XPath. kosit: false skips the full KoSIT schematron for a faster, schema-and-core-only check.
  • render_invoice_html — a human-readable invoice document in HTML (A4 print layout), with label language selectable via lang (en, de, fr, pl, nl, hr, es).
  • render_invoice_pdf — the same document as a PDF, returned as a base64 resource, with the same lang choices. Counts as 2 requests upstream.
  • my_usage — the plan, monthly quota, usage this month and subscription state of the API key used for the connection. Free. No arguments.

Configuration

  • EINVOICECHECKER_API_KEY (optional) — when set, every upstream request carries Authorization: Bearer <key>. When it is not set, no auth header is sent and the upstream's anonymous rate limit applies. The key is never required by this client.
  • EINVOICECHECKER_MCP_URL (optional) — override the upstream endpoint. Defaults to https://einvoicechecker.com/v1/mcp. (The override hook is this rebuild's own labelled reconstruction.)

Forwarding mechanics

On the first tool call the client opens a streamable HTTP session with the upstream: a JSON-RPC initialize request (protocolVersion 2025-03-26, clientInfo name invoiceproof), then a notifications/initialized notification, then the tools/call request carrying the caller's arguments unchanged. When the upstream answers initialize with an Mcp-Session-Id header, that value rides on every later request of the session, which is reused for the life of the process. Replies may arrive as plain JSON or as server-sent events; both are read.

Successful upstream results pass through verbatim, including any isError flag the upstream sets. Failures — a JSON-RPC error, a non-2xx status, an unreadable response, or a request that cannot be completed — come back as an isError result whose text starts with invoiceproof error: (this rendering is this rebuild's own labelled reconstruction).

CLI

Each tool is also a subcommand taking one JSON argument string (omit it for tools that take none):

bash
npx @reneturcios/invoiceproof list_supported_formatsnpx @reneturcios/invoiceproof validate_invoice '{"content":"<Invoice>...</Invoice>"}'npx @reneturcios/invoiceproof render_invoice_html '{"content":"<Invoice>...</Invoice>","lang":"de"}'npx @reneturcios/invoiceproof --version

Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

bash
npx -y @reneturcios/invoiceproof mcp

MCP client config:

json
{  "mcpServers": {    "invoiceproof": {      "command": "npx",      "args": ["-y", "@reneturcios/invoiceproof", "mcp"]    }  }}

To run the MCP server with an API key, add EINVOICECHECKER_API_KEY to the client's env block for this server.

Docker

bash
docker run -i ghcr.io/cloudcorprecords/invoiceproofdocker run --rm ghcr.io/cloudcorprecords/invoiceproof --version

The container's default command is mcp, so the first form is a stdio MCP server; any other arguments reach the CLI normally.

Development

bash
npm installnpm run buildnpm testnpm run dev

The test suite runs entirely against a stubbed JSON-RPC upstream — no live network calls.

License

MIT — see LICENSE.

Source: README.md at commit 735fed2

Tools

8

list_supported_formats

Supported e-invoice formats

Which formats, profiles and rule sets this service supports, and what each tool costs.

Takes no parameters.

detect_invoice

Detect e-invoice format

Identify the format, syntax, profile/customization and country standard of an e-invoice file. Cheap first step before validating.

Parameterscontentcontent_base64

parse_invoice

Parse e-invoice to JSON

Extract the invoice as normalised JSON: number, dates, seller, buyer, lines, VAT breakdown, totals, payment details. Works for every supported format.

Parameterscontentcontent_base64

fix_invoice

Auto-fix e-invoice

Fix validation errors of an EN 16931 invoice (XRechnung, Peppol BIS, ZUGFeRD/Factur-X XML, UBL, CII) deterministically: empty elements, decimals, date and code formats, specification ids; with totals=true also recalculates totals and the VAT breakdown from the lines. Data that is not in the file (Leitweg-ID, seller contact, endpoint ids, payment terms) is taken from "values"; missing ones are listed in needs_input. Returns the change list, the remaining errors and the corrected XML. Counts as 2 requests.

Parameterstotalsvaluescontentdry_runcontent_base64

validate_invoice

Validate e-invoice

Run the official rule set for the detected format (KoSIT for XRechnung/ZUGFeRD/Factur-X, OpenPeppol for Peppol BIS, FA(3) schema for KSeF, Porezna uprava HR-CIUS schematron for Croatian eRačun, Facturae XSD + calculation/NIF/DIR3 rules for Spain, LHDN SDK rules for MyInvois). Returns valid/invalid with every failed rule: id, severity, message, XPath.

Parameterskositcontentcontent_base64

render_invoice_html

Render e-invoice as HTML

Human-readable invoice document (HTML, A4 print layout) from the XML, in the requested language.

Parameterslangcontentcontent_base64

render_invoice_pdf

Render e-invoice as PDF

Human-readable PDF of the invoice (counts as 2 requests). Returned as a base64 resource.

Parameterslangcontentcontent_base64

my_usage

My plan and usage

Plan, monthly quota, usage this month and subscription state of the API key used for this connection. Free.

Takes no parameters.

Version history

1
  1. v0.1.0LatestNov 4, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts