Skip to main content
Glama

invowerk

Server Details

E-invoice checker for ZUGFeRD, Factur-X, XRechnung and Peppol BIS. Free web tool, API and MCP.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
invowerk-dev/invowerk
GitHub Stars
0

TDQS

A4.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: convert_invoice changes syntax/flavor, generate_invoice creates from JSON, parse_invoice reads into JSON, render_invoice produces HTML, validate_invoice checks compliance, and explain_errors explains rule codes. Input and output formats are well differentiated, so an agent can reliably select the right tool.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: convert_invoice, explain_errors, generate_invoice, parse_invoice, render_invoice, validate_invoice. The only minor variation is the plural noun in explain_errors, which is natural and does not break the pattern.

Tool Count5/5

Six tools is well-scoped for an e-invoice processing server. Each tool covers a necessary operation (create, read, convert, validate, render, explain) without redundancy, and the count sits comfortably in the ideal 3-15 range.

Completeness5/5

The set covers the full e-invoice lifecycle: generation from JSON, parsing to JSON, conversion between UBL/CII, validation against EN 16931 and German rules, rendering to HTML, and error explanation. The parse_invoice and generate_invoice pair explicitly enables editing, so no critical CRUD or workflow gaps are apparent.

Available Tools

6 tools
convert_invoiceConvert an e-invoice between UBL and CIIA
Read-only
Inspect

Convert an e-invoice to UBL or CII. The result is checked before it is returned.

Input: invoice_base64 is the base64 of an XML invoice or a ZUGFeRD / Factur-X PDF, at most 4 MB decoded; or pass the file as a download link in file. target_syntax is "ubl" or "cii". target_flavor is optional, "en16931" or "xrechnung"; without it the flavor of the source is kept.

Returns xml, syntax, flavor and self_validation (valid, finding_count). invowerk checks the converted XML before answering and never returns an invalid document. Input that cannot be read or converted fails with an error message.

Credits: 3 per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoThe file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.
target_flavorNoOptional: "en16931" or "xrechnung". Without it the flavor of the source is kept.
target_syntaxYesSyntax to convert to: "ubl" or "cii".
invoice_base64NoThe invoice file, base64-encoded. At most 4 MB decoded.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description layers on non-obvious behavior: a pre-return validation pass, a guarantee that invalid documents are never returned, the 4 MB decoded size limit, error behavior on unreadable input, and the 3-credit cost. This is exactly the operational context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then cleanly segmented into Input, Returns and Credits blocks with no wasted clauses. It is longer than strictly necessary given a full schema and output schema exist, which keeps it off a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a conversion tool with a nested-file parameter and an output schema, the description covers inputs, target selection, validation guarantee, failure mode and cost. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 every parameter including the 4 MB limit, the flavor default and the file-vs-base64 distinction. The description largely restates that content rather than adding syntax or format detail beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Convert) and resource (e-invoice) with both source and target formats named (UBL/CII, ZUGFeRD/Factur-X). An agent can distinguish it from parse_invoice, validate_invoice and render_invoice without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context on the two mutually exclusive input paths (base64 field vs file download link) and the flavor default, which is real operational guidance. It never names a sibling or an explicit when-not-to-use condition, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_errorsExplain error codesA
Read-only
Inspect

Explain rule codes in plain language. Works without an API key.

Covers the codes of validate_invoice findings and hints: EN 16931, XRechnung, ZUGFeRD and invowerk's own hint codes (IW-*).

Input: codes is a list of one or more codes, e.g. ["BR-CO-18", "BR-DE-21"]. Duplicates are removed. lang is "de" (default) or "en".

Returns lang and explanations. Each explanation has title, meaning, causes, fixes, severity, standard, bt_refs, xpath_hints and explain_url (the German page for the code). If any code is unknown, the call fails and names the unknown codes.

Credits: free. This tool is not metered.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the explanations: "de" (default) or "en".de
codesYesOne or more rule codes from validate_invoice, e.g. ["BR-CO-18", "BR-DE-21"].

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/openWorld annotations, it discloses real behavioral traits: duplicates are removed, unknown codes cause a hard failure that names the offending codes, and the call is free/unmetered. These are operationally relevant facts an agent cannot infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then scope, then input/output contract, then cost. Every line earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the input contract, the failure mode for unknown codes, the return shape, and the credit/no-auth situation. Even though an output schema exists, the extra context on error behavior and cost completes the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description nevertheless adds the dedup behavior for `codes` and restates the `lang` default and accepted values in prose. The added semantics are real but modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (explain) and resource (rule codes) and scopes it to the exact code families emitted by validate_invoice. An agent can distinguish it from the sibling validate_invoice, which produces the codes this tool consumes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Establishes clear context: it explains codes found by validate_invoice and hints (EN 16931, XRechnung, ZUGFeRD, IW-*), and notes it works without an API key. It does not state explicit exclusions or name alternative tools, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_invoiceCreate an e-invoice from JSONA
Read-only
Inspect

Create a valid EN 16931 e-invoice (UBL or CII XML) from JSON.

Input: invoice is a JSON object keyed on EN 16931 Business Terms, the same schema as POST /v1/generate, at most 4 MB. Main fields: syntax ("ubl" default, or "cii"), flavor ("en16931" default, or "xrechnung", which requires buyer_reference, the Leitweg-ID BT-10), invoice_number, issue_date (YYYY-MM-DD), currency, seller, buyer, lines, tax_breakdown, totals. invowerk writes your amounts as given. It does not compute or correct them.

Returns xml, syntax, flavor and self_validation. invowerk checks the XML before answering and never returns an invalid document. Invalid input, or XML that fails the check, returns an error, as does a busy (engine_busy) or overrunning (engine_timeout) generate.

Credits: 5 per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesThe invoice as a JSON object keyed on EN 16931 Business Terms, the schema of POST /v1/generate and of parse_invoice's `model`: syntax, flavor, invoice_number, issue_date, currency, seller, buyer, lines, tax_breakdown, totals.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint; the description adds substantial behavioral context beyond them: a 5-credit cost per call, an explicit guarantee that the XML is self-validated and never returned invalid, named error modes (engine_busy, engine_timeout), and the important caveat that amounts are written as given and not computed or corrected. That last point is exactly the kind of non-obvious behavior an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then Input, then Returns, then Credits — a predictable and scannable layout. Every sentence carries operative information (size limit, defaults, conditional requirement, no auto-correction, cost); there is no filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, nested-object generation tool with an output schema present, the description covers everything needed: input shape and limits, defaults, conditional field requirements, output fields, validation guarantee, error modes and cost. Nothing material is left for the agent to infer before invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100% and the single parameter is documented, so the baseline is 3; the description goes further by enumerating the main invoice fields, stating defaults ("ubl", "en16931"), the date format (YYYY-MM-DD), and the conditional dependency between flavor and buyer_reference. It adds real semantics the schema's flat field list does not carry, though it does not detail nested structures like seller, buyer, lines or tax_breakdown.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb (create), the artifact (EN 16931 e-invoice), the output format (UBL or CII XML), and the input form (from JSON). It is clearly distinguishable from siblings like convert_invoice, parse_invoice, validate_invoice and render_invoice, which are named in the sibling list and not conflated here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong contextual guidance: 4 MB input cap, default values for syntax/flavor, and the conditional rule that flavor="xrechnung" requires buyer_reference (Leitweg-ID BT-10). It also names the failure conditions (invalid input, failed self-check, engine_busy, engine_timeout). It stops short of explicitly routing the agent away from siblings such as validate_invoice or convert_invoice, so it is clear but not a full when/when-not statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_invoiceRead an e-invoice into JSONA
Read-only
Inspect

Read an existing e-invoice into JSON keyed on EN 16931 Business Terms.

The JSON is the input format of generate_invoice, so you can edit it and create the invoice again.

Input: invoice_base64 is the base64 of an XML invoice (UBL or CII) or a ZUGFeRD / Factur-X PDF, at most 4 MB decoded; or pass the file as a download link in file. A PDF may have at most 500 pages and 16 attachments.

Returns model (the invoice as JSON), detection (syntax, flavor, customization_id) and source ("xml" or "pdf-embedded"). A file that cannot be read fails with an error that starts with an error code, e.g. a PDF without embedded XML, a UBL credit note, malformed XML, or a busy (engine_busy) or overrunning (engine_timeout) read.

Credits: 2 per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoThe file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.
invoice_base64NoThe invoice file, base64-encoded. At most 4 MB decoded.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/openWorldHint already declaring the safety profile, the description still adds substantial operational context: 4 MB decoded cap, 500-page and 16-attachment PDF limits, accepted syntaxes (UBL, CII, ZUGFeRD/Factur-X), the exact failure modes (no embedded XML, UBL credit note, malformed XML, engine_busy, engine_timeout) and a cost of 2 credits per call. None of that is derivable from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then broken into Input / Returns / Credits sections. The sentences are dense with limits and error codes but each one carries actionable information, so there is little waste despite the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, nested-object tool with an output schema, the description covers the inputs accepted, the decoded size and page/attachment caps, the returned keys, the error-code convention, and the credit cost. An agent has everything needed to decide to call it and to interpret both success and failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 real constraint meaning on top: 'at most 4 MB decoded' and the 500-page/16-attachment limits for the PDF path, plus the explicit either/or between invoice_base64 and file. It stops short of explaining the base64 encoding/format expectations beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read an existing e-invoice into JSON') and pins the output shape ('keyed on EN 16931 Business Terms'), which is far more precise than siblings like convert_invoice or render_invoice. It names generate_invoice as a downstream consumer rather than as an alternative, so the boundary against read/convert siblings is only implied, not explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the round-trip workflow: the returned JSON is generate_invoice's input, so 'you can edit it and create the invoice again.' That is clear usage context, but there is no statement of when NOT to use it (e.g. for a PDF without embedded XML, or when the file is not an e-invoice), which would be the deciding exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_invoiceRender an e-invoice as HTMLA
Read-only
Inspect

Render an XML e-invoice (UBL or CII, e.g. XRechnung) as a readable HTML page.

invowerk uses the KoSIT XRechnung visualization. Use it to show a person what an e-invoice contains.

Input: invoice_base64 is the base64 of the XML, at most 4 MB decoded, or pass the file as a download link in file. PDFs are not accepted. lang sets the label language, "de" (default) or "en".

Returns html (a complete HTML document), lang, flavor (e.g. "xrechnung") and syntax (e.g. "ubl_invoice"). A file that is not an XML invoice, malformed XML or XML with a DOCTYPE fails with an error message, and so does a busy (engine_busy) or overrunning (engine_timeout) render.

Credits: 1 per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoThe file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.
langNoLanguage of the labels: "de" (default) or "en".de
invoice_base64NoThe invoice file, base64-encoded. At most 4 MB decoded.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, it discloses the 4 MB decoded size cap, that PDFs are not accepted, the specific failure modes (non-invoice XML, malformed XML, DOCTYPE, engine_busy, engine_timeout), and the 1-credit cost per call. These are substantial operational details the annotations do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then inputs, then returns, then error modes, then cost. Every sentence carries distinct information and none is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with an output schema and annotations already present, the description still covers inputs, return shape, failure modes and pricing. An agent has everything needed to call it and interpret the result; nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: the accepted XML flavors, the mutually exclusive file-vs-base64 input path, the label-language semantics of lang, and the PDF rejection constraint not stated in the schema. It does not need to re-explain file_id/download_url, which the schema documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (render) and resource (XML e-invoice) and names the accepted formats (UBL, CII, XRechnung) and output (HTML page). This clearly distinguishes it from parse_invoice, validate_invoice, convert_invoice and generate_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it to show a person what an e-invoice contains" gives a clear context for when to reach for this tool. It does not explicitly name the alternatives (parse_invoice, convert_invoice) or state when NOT to use it, so it stops just short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_invoiceCheck an e-invoiceA
Read-only
Inspect

Check an e-invoice against EN 16931 and German rules.

Input: invoice_base64 is the base64 of an XML invoice (UBL or CII) or a ZUGFeRD / Factur-X PDF, at most 4 MB decoded; or pass the file as a download link in file. explain=true adds an explanation to findings whose rule has one, in lang ("de" or "en").

valid is the result. For XRechnung the KoSIT validator decides. If it is unreachable, invowerk's own check with the same rules decides, verdict_source is "local" and official_degraded is true. disagreement is true when both ran and differ. findings lists each problem with rule_id, severity and message; pass the codes to explain_errors (free). pdfa_verdict is the PDF/A check of a PDF. hints never change valid. Unreadable input returns a finding, not an error. It fails with an error when the check is busy (engine_busy), ran longer than 20 s (engine_timeout) or the XML has more than 100,000 elements (document_too_complex).

Credits: 1 per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoThe file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.
langNoLanguage of the explanations: "de" (default) or "en".de
explainNotrue adds an explanation to each finding whose rule has one.
invoice_base64NoThe invoice file, base64-encoded. At most 4 MB decoded.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations: it explains the KoSIT-vs-local verdict fallback, verdict_source, official_degraded, disagreement semantics, that hints never change valid, that unreadable input yields a finding rather than an error, the three specific error codes, and the 1-credit cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded, with the core purpose first and output/failure semantics after. It is long, but nearly every clause carries operational information; only the output-field enumeration slightly overlaps the existing output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a mutation-free but open-world validator with 4 params, nested input objects, an output schema and a credit cost, the description covers inputs, outputs, degraded-mode behavior, and failure modes thoroughly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds meaning the schema lacks: accepted input formats (UBL, CII, ZUGFeRD/Factur-X PDF) and the 4 MB decoded limit, plus the file-vs-invoice_base64 relationship. It omits detail on the nested file object, but the schema covers that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check/validate) and resource (e-invoice) plus the exact rule sets applied (EN 16931, German rules), which immediately distinguishes it from parse_invoice, convert_invoice and render_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: two alternative input channels (invoice_base64 or file), when to set explain, and routes the agent to explain_errors for finding codes. It does not explicitly state when NOT to use this tool versus parse_invoice, so it stops short of a 5.

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.

  1. 6 tool updates
    • First observedconvert_invoice
    • First observedexplain_errors
    • First observedgenerate_invoice
    • First observedparse_invoice
    • First observedrender_invoice
    • First observedvalidate_invoice

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Validates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.
    2
    226 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP 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.
    6
    74 npm
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Model 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.
    50
    2
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Reads 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.
    2
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.