E-Invoice Checker
Server Details
Validate, parse and render EU e-invoices: XRechnung, ZUGFeRD, Factur-X, Peppol BIS 3.0, KSeF.
- Status
- Healthy
- Uptime
- 99.9% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- vpukhalskyi/einvoicechecker-mcp
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: detect identifies format, parse extracts JSON, validate runs rules, fix repairs, and the two render tools produce different output formats. The two meta tools (list_supported_formats, my_usage) are unambiguous. There is slight thematic overlap between detect and parse, but descriptions make the boundary clear.
Most tools follow a consistent verb_noun pattern with shared _invoice suffix (detect_invoice, fix_invoice, parse_invoice, validate_invoice, render_invoice_html/pdf). The meta tools list_supported_formats and my_usage deviate slightly but remain readable and conventional.
Eight tools is well-scoped for an invoice checking/fixing/rendering service. Each tool earns its place, with distinct detection, parsing, validation, repair, rendering, and account-introspection roles.
The surface covers the full lifecycle: detect format, parse data, validate against official rule sets, fix errors, render HTML/PDF, plus format discovery and usage introspection. No obvious dead ends for the stated e-invoice purpose.
Available Tools
8 toolsdetect_invoiceDetect e-invoice formatAInspect
Identify the format, syntax, profile/customization and country standard of an e-invoice file. Cheap first step before validating.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Invoice XML (UBL, CII, XRechnung, Peppol BIS, ZUGFeRD/Factur-X XML, KSeF FA(3)) as text | |
| content_base64 | No | A ZUGFeRD / Factur-X PDF (or any invoice file) as base64, when the invoice is not plain XML |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The "cheap first step" phrasing usefully signals low cost and implies a non-mutating inspection, but it does not state read-only behavior explicitly, permission requirements, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the purpose first, then the actionable sequencing hint. No filler, and the highest-value guidance (use this first) is placed after the purpose but still front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description profitably enumerates the return fields (format, syntax, profile/customization, country standard). It stops short of describing the response shape or behavior on unrecognized input, which leaves a small gap for a detection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (content, content_base64) are fully documented in the schema, including which formats each accepts. The description adds no syntax or format guidance beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (Identify) and the exact attributes returned (format, syntax, profile/customization, country standard) for a named resource (e-invoice file). This makes it clearly distinguishable from siblings like validate_invoice, parse_invoice, or render_invoice_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Cheap first step before validating" gives explicit sequencing guidance, implicitly routing agents to run this before validate_invoice. It lacks an explicit when-not statement or a named alternative tool, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_invoiceAuto-fix e-invoiceAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| totals | No | Allow recalculating document totals and VAT breakdown from the line amounts | |
| values | No | Values for data that is missing in the file | |
| content | No | Invoice XML (UBL, CII, XRechnung, Peppol BIS, ZUGFeRD/Factur-X XML, KSeF FA(3)) as text | |
| dry_run | No | Only report what would change | |
| content_base64 | No | A ZUGFeRD / Factur-X PDF (or any invoice file) as base64, when the invoice is not plain XML |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full load and does well: it discloses the deterministic fixing scope, the values-vs-needs_input fallback behavior for data absent from the file, the returned artifacts (change list, remaining errors, corrected XML), and a cost signal ('Counts as 2 requests'). It omits auth/permission requirements and failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense but well-ordered sentences: scope and fixable error classes first, opt-in totals second, data-fallback and outputs last. The parenthetical format list is long but load-bearing for format selection; nothing is purely redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the three return payloads and needs_input. For a 5-param tool with a nested values object and no annotations, this is nearly sufficient; only error/failure semantics and any permission prerequisites are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds relational meaning the schema cannot: values is only consumed for data missing from the file, and anything still unresolved surfaces in needs_input. totals=true is also framed as the condition that triggers total/VAT recalculation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fix) plus resource (EN 16931 invoice) and enumerates exactly which error classes are corrected (empty elements, decimals, date/code formats, specification ids), while distinguishing itself from validate_invoice/parse_invoice by being the corrective step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: it is the tool for repairing validation errors, with dry_run for previewing and totals=true as an opt-in escalation. It never explicitly names validate_invoice as the prerequisite for obtaining errors, so the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_formatsSupported e-invoice formatsBInspect
Which formats, profiles and rule sets this service supports, and what each tool costs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the payload contents (formats, profiles, rule sets, pricing per tool), which is real information beyond the name. However it does not say whether the list is static or account-specific, nor whether it is paginated, so key traits remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the resource and then the secondary cost information. Nothing is wasted, though the fragmentary phrasing lacks a leading verb, which slightly hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless discovery tool with no output schema and no annotations, the description does enumerate what the response contains, which is the main thing an agent needs. It falls short only on whether the answer is global or account-scoped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies; there are no parameter semantics to clarify and the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource this tool returns (formats, profiles, rule sets, plus per-tool costs), which lets an agent distinguish it from mutation/parsing siblings like parse_invoice or validate_invoice. It is phrased as a noun fragment rather than an explicit verb+resource, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the other seven tools, and no mention of prerequisites or ordering (e.g. call this before parse_invoice to learn accepted formats). Usage is only inferable from the 'list' prefix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_usageMy plan and usageAInspect
Plan, monthly quota, usage this month and subscription state of the API key used for this connection. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully signals that the call is 'Free' (no quota cost), which is genuine behavioral value, but it says nothing about authentication requirements, rate limits, or freshness of the reported usage figures. For a no-annotation tool this is partial disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no padding; the returned data fields are front-loaded. The trailing one-word fragment 'Free.' is slightly abrupt but still earns its place as a cost signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter read with no output schema, the description lists the four data points the caller will receive (plan, quota, monthly usage, subscription state), which is enough to decide whether to call it. Only the format/staleness of those values is left unspecified, a minor gap for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline for a parameterless schema applies. The description appropriately focuses on what is returned instead of inventing parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what is returned: plan, monthly quota, usage this month, and subscription state scoped to the API key of the connection. The verb is implicit (a read/retrieval) rather than stated, but the resource and scope are unambiguous, and no sibling (all invoice tools) is similar enough to require differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, but the tool's purpose (check your own plan/quota/subscription) makes the usage context self-evident, and there are no competing siblings that would need routing guidance. This is implied usage at minimum-viable level rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_invoiceParse e-invoice to JSONAInspect
Extract the invoice as normalised JSON: number, dates, seller, buyer, lines, VAT breakdown, totals, payment details. Works for every supported format.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Invoice XML (UBL, CII, XRechnung, Peppol BIS, ZUGFeRD/Factur-X XML, KSeF FA(3)) as text | |
| content_base64 | No | A ZUGFeRD / Factur-X PDF (or any invoice file) as base64, when the invoice is not plain XML |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden. It usefully discloses the extracted field set and format coverage (UBL/CII/XRechnung/Peppol/ZUGFeRD/KSeF per schema), but says nothing about error behavior on unsupported or malformed invoices, whether it silently repairs, or cost/rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, output shape front-loaded with no filler; the second sentence about format coverage is short and earns its place as a scope statement. No wasted clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned JSON fields, which is exactly what an agent needs to consume the result. Remaining gap is the absence of any error/failure behavior for invalid or unsupported input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (content, content_base64) and their format variants are already documented in the schema. The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Extract') plus resource ('the invoice') and an explicit output form ('normalised JSON'), with an enumerated field list (number, dates, seller, buyer, lines, VAT breakdown, totals, payment details). The JSON framing implicitly separates it from render_invoice_html/render_invoice_pdf, though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Works for every supported format' hints at applicability but never states when to choose this over validate_invoice, detect_invoice, or the render tools, nor any prerequisite such as detecting the format first. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_invoice_htmlRender e-invoice as HTMLAInspect
Human-readable invoice document (HTML, A4 print layout) from the XML, in the requested language.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Label language, default en | |
| content | No | Invoice XML (UBL, CII, XRechnung, Peppol BIS, ZUGFeRD/Factur-X XML, KSeF FA(3)) as text | |
| content_base64 | No | A ZUGFeRD / Factur-X PDF (or any invoice file) as base64, when the invoice is not plain XML |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the output is a human-readable HTML A4 document and that language is selectable, but says nothing about whether the operation is side-effect-free, deterministic, or how large/multi-page invoices are handled. Adequate but incomplete for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the output format and language qualifier are the most decision-relevant facts and come first. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does cover the return type (HTML document), which is the main thing. However, required parameters is 0 while the tool needs either content or content_base64 to function; the description never states this mutual dependency, leaving a real gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents lang, content, and content_base64 fully; the baseline is 3. The phrase 'in the requested language' only echoes the lang parameter and adds no format or default detail beyond the schema's 'default en'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (human-readable invoice document) and the output format (HTML, A4 print layout) produced from XML, which clearly separates it from the sibling render_invoice_pdf. The verb is implicit rather than stated ('Render' only appears in the name/title), so it falls just short of a fully self-contained verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer 'use this when you want an HTML/A4 rendering of an invoice'. No explicit when-to-use, when-not-to-use, or named alternative (e.g. render_invoice_pdf) is given, so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_invoice_pdfRender e-invoice as PDFBInspect
Human-readable PDF of the invoice (counts as 2 requests). Returned as a base64 resource.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | ||
| content | No | Invoice XML (UBL, CII, XRechnung, Peppol BIS, ZUGFeRD/Factur-X XML, KSeF FA(3)) as text | |
| content_base64 | No | A ZUGFeRD / Factur-X PDF (or any invoice file) as base64, when the invoice is not plain XML |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses two non-obvious traits: the call costs 2 requests (a quota/rate signal) and the result is returned as a base64 resource rather than a URL or inline text. It does not say which input parameter must be supplied, how errors surface, or what happens when neither content nor content_base64 is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the output format and the cost caveat front-loaded. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return channel (base64 resource) and the cost, which is what matters most with no output schema and no annotations. However, it omits input selection (content vs content_base64, mutual exclusivity) and the meaning of lang, leaving gaps for a 3-parameter conversion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with content and content_base64 well documented in the schema but lang carrying only an enum and no explanation. The description adds nothing about parameter usage, so it neither compensates for the lang gap nor improves on what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the output artifact precisely (a human-readable PDF of the invoice) and the sibling set makes the implied verb (render) obvious. It implicitly distinguishes itself from render_invoice_html by producing PDF rather than HTML, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or routing between this tool and render_invoice_html. The agent must infer that this is the choice when a PDF is wanted rather than an HTML view; no conditions, prerequisites, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_invoiceValidate e-invoiceAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kosit | No | Run the full KoSIT schematron (default true). false = schema and core checks only, faster | |
| content | No | Invoice XML (UBL, CII, XRechnung, Peppol BIS, ZUGFeRD/Factur-X XML, KSeF FA(3)) as text | |
| content_base64 | No | A ZUGFeRD / Factur-X PDF (or any invoice file) as base64, when the invoice is not plain XML |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose the return shape ('valid/invalid with every failed rule: id, severity, message, XPath') and that it delegates to external official rule sets per format. It does not state permission/auth needs, network or runtime characteristics, or that it is strictly non-mutating, so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the core action and return contract front-loaded. The parenthetical format/rule-set mapping is long but information-dense and non-redundant, so it earns its space; only minor tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the rule-set matrix and the failure-report shape well for a tool with no output schema and no annotations. It is incomplete on the practical contract, though: required=0 while one of content/content_base64 must actually be supplied, and the detect_invoice prerequisite is only implied rather than stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (kosit, content, content_base64) are already documented in the schema, which sets the baseline at 3. The description adds no syntax or format detail beyond the schema for kosit, content, or content_base64, and notably omits that one of the two content inputs is effectively required despite required=0.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run the official rule set for the detected format') and enumerates exactly which rule set applies per format (KoSIT, OpenPeppol, FA(3), HR-CIUS, Facturae, LHDN). This clearly separates it from sibling tools like detect_invoice, parse_invoice, and fix_invoice without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for the detected format' implies a detect_invoice step must precede this call, which is useful implied sequencing. However, it never explicitly says when to choose this over fix_invoice or parse_invoice, and names no exclusions or prerequisites for the content inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
render_invoice_html1 field changed- changed
Input schema / properties / lang / enumPrevious value: -[ - "en", - "de", - "fr", - "pl", - "nl", - "hr" -]New value: +[ + "en", + "de", + "fr", + "pl", + "nl", + "hr", + "es" +]
- Changed
render_invoice_pdf1 field changed- changed
Input schema / properties / lang / enumPrevious value: -[ - "en", - "de", - "fr", - "pl", - "nl", - "hr" -]New value: +[ + "en", + "de", + "fr", + "pl", + "nl", + "hr", + "es" +]
2 tool updates
- Changed
render_invoice_html1 field changed- changed
Input schema / properties / lang / enumPrevious value: -[ - "en", - "de", - "fr", - "pl", - "nl" -]New value: +[ + "en", + "de", + "fr", + "pl", + "nl", + "hr" +]
- Changed
render_invoice_pdf1 field changed- changed
Input schema / properties / lang / enumPrevious value: -[ - "en", - "de", - "fr", - "pl", - "nl" -]New value: +[ + "en", + "de", + "fr", + "pl", + "nl", + "hr" +]
1 tool update
- Added
fix_invoice
7 tool updates
- First observed
detect_invoice - First observed
list_supported_formats - First observed
my_usage - First observed
parse_invoice - First observed
render_invoice_html - First observed
render_invoice_pdf - First observed
validate_invoice
Related MCP Connectors
Create ZUGFeRD e-invoices from JSON or PDF, verify Factur-X, check VAT IDs and Peppol.
Create, validate, convert & extract compliant e-invoices (UBL, Factur-X, ZUGFeRD, XRechnung)
Generate, validate and read EN 16931 and Peppol BIS 3.0 e-invoices, in UBL and CII.
Validate, generate & convert EU e-invoices (UBL, CII, XRechnung, Factur-X) — EN 16931 pre-validated.
Related MCP Servers
- AlicenseAqualityCmaintenanceValidates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.2156 npmMIT
- AlicenseAqualityAmaintenanceModel Context Protocol (MCP) server for German Electronic Invoicing (ZUGFeRD 2.x / XRechnung 3.x). Provides tools to validate, generate, parse, and convert invoices compliant with EN 16931 and KoSIT.5040 PyPI2Apache 2.0
- AlicenseAqualityDmaintenanceMCP server for DACH e-invoicing. Create XRechnung (UBL) and ZUGFeRD 2.3 (Factur-X CII) invoices, validate against EN 16931 rules, extract data from XML, and convert between UBL, CII and JSON formats.666 npm2MIT

InvoiceInofficial
AlicenseAqualityAmaintenanceReads and validates any European e-invoice a business receives — XRechnung, UBL, CII, ZUGFeRD/Factur-X PDF, Peppol BIS 3, FatturaPA, KSeF FA(3) — into canonical EN 16931 JSON with plain-language fix hints in EN/DE/PL/IT/FR, plus PDF, CSV and DATEV export. Nothing is stored; works without a key on a small daily quota.5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.