Skip to main content
Glama

Server Details

Generate, validate and read Factur-X / EN 16931 e-invoices (France, EU): PDF/A-3, CII, UBL 2.1.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

4 tools
embed_xmlEmbed Factur-X XML into a PDFA
Read-onlyIdempotent
Inspect

Combine a visual PDF you already have with a Factur-X (CII) XML into one PDF/A-3 Factur-X invoice.

Use when the PDF is produced by your own system and you only need the compliant hybrid file. Do not use
to create an invoice from data: call generate_invoice, which renders the PDF too. The XML is validated
first and rejected with rule ids if it fails. Nothing is stored. Returns a text summary plus the PDF/A-3
as a base64 embedded resource.
ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYesFactur-X / CII XML text for the same invoice; must pass the `check` rules or the tool fails
checkNoRule set the XML must pass before embedding: fr-ctc (default, France) or base (EN 16931 only)fr-ctc
languageNoDocument language written in the PDF metadata: fr or enfr
pdf_base64YesYour existing visual invoice PDF (any PDF, will be converted to PDF/A-3), base64 encoded

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations: it discloses that XML is validated first and rejected with rule ids, that nothing is stored, and that the return value is a text summary plus a base64-embedded PDF/A-3. These behaviors are not obvious from annotations alone and are valuable for the agent. No contradiction with readOnlyHint or idempotentHint exists.

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?

The description is compact and front-loaded with the core operation, then immediately gives usage guidance, then covers validation, side effects, and return format in a few efficient sentences. Every sentence earns its place with no redundancy or fluff.

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 four parameters, no output schema, and a meaningful validation step, the description covers everything an agent needs: what the tool does, when to use it, what happens on validation failure, whether state is persisted, and what the response contains. No critical operational context 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 all parameters clearly. The description adds some context by framing the relationship between pdf_base64 and xml as the same invoice, and confirms the output format, but it does not significantly enrich parameter-level meaning beyond the schema.

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 description clearly states the specific operation: combining an existing visual PDF with a Factur-X/CII XML into a PDF/A-3 hybrid invoice. It names the exact input and output artifacts and differentiates itself from generate_invoice, leaving no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool: when the PDF is already produced by the user's system and only the compliant hybrid file is needed. It also explicitly says what not to use it for and names the alternative generate_invoice, making the selection decision unambiguous.

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

extract_invoiceExtract e-invoice dataA
Read-onlyIdempotent
Inspect

Read an e-invoice and return its business data as JSON: number, dates, seller, buyer, totals, VAT breakdown, lines.

Use to get the content of a received invoice (Factur-X PDF, CII or UBL XML) for bookkeeping, matching
or summaries. Does not judge compliance: call validate_invoice for that. Read-only, nothing stored.
Returns {profile, fields{...}} and, with include_xml, the XML text.
ParametersJSON Schema
NameRequiredDescriptionDefault
xmlNoCII or UBL XML as plain text; alternative to document_base64, give exactly one
include_xmlNoAlso return the raw XML text (large); default false returns only the parsed fields
document_base64NoFactur-X PDF (the embedded XML is read) or a CII/UBL XML file, base64 encoded

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description adds useful behavioral context: 'Read-only, nothing stored' and the caveat that compliance is not evaluated. It also clarifies output shape and the optional include_xml effect. No contradiction with annotations, though much of the safety profile is already carried by 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?

Three tight sentences with no filler; the purpose and returned data are front-loaded, followed by usage guidance and the key caveat. Every sentence earns its place.

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 read-only extraction tool with a rich output schema and full parameter descriptions, the description covers formats, use cases, exclusion of compliance checking, storage behavior, and the include_xml option. 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 all three parameters including the alternative-to relationship and the default of include_xml. The description reinforces accepted formats (Factur-X PDF, CII or UBL XML) and include_xml behavior but adds no meaning beyond what the schema already provides.

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 description uses a specific verb ('Read') and resource ('e-invoice'), and enumerates the returned business data (number, dates, seller, buyer, totals, VAT breakdown, lines). It also distinguishes itself from validate_invoice by explicitly stating it does not judge compliance, so an agent can tell it apart from siblings.

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

Usage Guidelines5/5

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

It states when to use it ('get the content of a received invoice... for bookkeeping, matching or summaries') and points to the alternative for compliance ('Does not judge compliance: call validate_invoice for that'). This gives clear selection guidance against sibling tools.

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

generate_invoiceGenerate Factur-X invoiceA
Read-onlyIdempotent
Inspect

Create a new, compliant e-invoice (Factur-X PDF/A-3, CII XML or UBL XML) from structured invoice data.

Use when you have the invoice content (parties, lines, dates) and need the document. Do not use when you
already have a visual PDF and a Factur-X XML to combine: call embed_xml. To check a document you did not
create here, call validate_invoice; to read one, call extract_invoice.

The result is validated (XSD + schematron for `check`) before it is returned; on failure the tool returns
an error listing the failing rule ids (e.g. BR-CO-10, BR-FR-01) so you can fix the input and retry.
Nothing is stored. Returns a text summary (number, totals, warnings) plus the document as an embedded
resource: base64 PDF for facturx-pdf, XML text for cii-xml / ubl-xml.
ParametersJSON Schema
NameRequiredDescriptionDefault
checkNoRule set the output must pass before it is returned: fr-ctc (default) = EN 16931 + French CTC rules (BR-FR-*), base = EN 16931 only (non-French sellers).fr-ctc
outputNofacturx-pdf (default): PDF/A-3 with the visual invoice and the CII XML embedded, the format French platforms accept. cii-xml: the UN/CEFACT CII XML alone. ubl-xml: UBL 2.1 XML alone (Peppol-style).facturx-pdf
invoiceYesInvoice data: seller, buyer, lines, dates, payment terms. Amounts are decimal strings ("1200.00"), dates ISO 8601. Totals and the VAT breakdown are computed. Full JSON Schema in the resource facturx://schema/invoice.
profileNoFactur-X conformance level written in the XML: en16931 (default, full EN 16931 semantic model), extended (adds optional business terms), extended-ctc-fr (French B2B mandate profile), basicwl (no lines)en16931
languageNoLanguage of the visual PDF: fr or enfr
footer_textNoOptional footer text on the PDF

TDQS

A5/5.0
Behavior5/5

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

The description discloses important behavior beyond the annotations: the output is validated (XSD + schematron) before being returned, failure yields error rule IDs (BR-CO-10, BR-FR-01), nothing is stored, and the return structure is summarized (text summary + embedded resource with format-specific encodings). This is significant context the annotations do not provide.

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?

The description is well-organized and front-loaded: the core purpose appears in the first sentence, followed by clear routing guidance, then behavioral details. Each sentence earns its place without redundancy. The formatting with line breaks and bullet-like structure improves scannability for an agent.

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 complex generation tool with nested schemas, the description covers the key decision points (output format, check profile, when to use siblings), the expected input semantics, the validation behavior, and the return shape. It does not need to document every nested field because the schema already does that at 100% coverage. The absence of an output schema is compensated by a clear summary of the return value.

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

Parameters5/5

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

Although the schema has 100% coverage, the description adds crucial semantic meaning for the top-level parameters: it explains what 'check' rule sets mean (fr-ctc vs base), what each output format produces in practice, and clarifies that 'invoice' amounts are decimal strings and dates are ISO 8601. It also notes that totals and VAT breakdown are computed, which is not explicit in the schema's property descriptions alone.

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 description states a specific verb ('Create'), a clear resource ('compliant e-invoice), and enumerates the exact output formats (Factur-X PDF/A-3, CII XML, UBL XML). It distinguishes the tool from its siblings by explicitly naming embed_xml, validate_invoice, and extract_invoice and stating what each is for.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use ('Use when you have the invoice content...') and when-not-to-use ('Do not use when you already have a visual PDF and a Factur-X XML to combine: call embed_xml'). It also names the alternatives for validation and extraction, making routing unambiguous.

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

validate_invoiceValidate e-invoiceA
Read-onlyIdempotent
Inspect

Check whether an existing e-invoice (Factur-X PDF, CII or UBL XML) is compliant, and report why not.

Use on any document you did not produce with generate_invoice (supplier invoices, files from another
system) or to re-check after a fix. Do not use to read the invoice content: call extract_invoice.
Runs XSD then the EN 16931 schematron (plus French rules for fr-ctc). Read-only, nothing stored.
Returns {valid, profile, findings[]} where each finding has the rule id (e.g. BR-CO-10), severity and
message; a non-compliant document is a normal result, not an error.
ParametersJSON Schema
NameRequiredDescriptionDefault
xmlNoCII or UBL XML as plain text; alternative to document_base64, give exactly one
checkNofr-ctc (default): EN 16931 + French CTC rules (BR-FR-*). base: EN 16931 only.fr-ctc
document_base64NoFactur-X PDF (the embedded XML is read) or a CII/UBL XML file, base64 encoded

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 already declare readOnlyHint, idempotentHint, and openWorldHint false, and the description adds substantial behavioral detail: read-only, nothing stored, XSD then EN 16931 schematron, optional French CTC rules, and the important note that a non-compliant document is a normal result rather than an error.

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?

The description is concise, front-loaded with the core purpose, and every sentence earns its place. Usage guidance, validation pipeline, and response shape are all covered in four tight sentences without redundancy.

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 the rich annotations, full schema coverage, and presence of an output schema, the description covers all necessary context: what the tool validates, when to use it, what it runs, its read-only nature, and the shape of its result. Nothing critical 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 input schema already documents the parameters thoroughly. The description restates the document formats and mentions the alternative input methods indirectly, but adds little parameter-level meaning beyond what the schema provides.

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 description states a specific verb ('Check whether... is compliant, and report why not') and names the resource (existing e-invoice in Factur-X PDF, CII, or UBL XML). It clearly differentiates from extract_invoice (read content) and generate_invoice (producing documents).

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

Usage Guidelines5/5

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

Explicit guidance is given: use on documents not produced by generate_invoice, or to re-check after a fix. It also states when not to use it ('Do not use to read the invoice content') and names the alternative tool. This leaves no ambiguity about selection.

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. Dates show when Glama detected each change.

  1. 4 tool updates
    • Changedembed_xml4 fields changed
      • changedInput schema / properties / check / description
        Previous value: -"Rule set to enforce before embedding"New value: +"Rule set the XML must pass before embedding: fr-ctc (default, France) or base (EN 16931 only)"
      • changedInput schema / properties / language / description
        Previous value: -"Document language metadata"New value: +"Document language written in the PDF metadata: fr or en"
      • changedInput schema / properties / pdf_base64 / description
        Previous value: -"Your visual invoice PDF, base64 encoded"New value: +"Your existing visual invoice PDF (any PDF, will be converted to PDF/A-3), base64 encoded"
      • changedInput schema / properties / xml / description
        Previous value: -"Factur-X / CII XML text (must pass EN 16931 rules)"New value: +"Factur-X / CII XML text for the same invoice; must pass the `check` rules or the tool fails"
    • Changedextract_invoice3 fields changed
      • changedInput schema / properties / document_base64 / description
        Previous value: -"Factur-X PDF or XML file, base64 encoded"New value: +"Factur-X PDF (the embedded XML is read) or a CII/UBL XML file, base64 encoded"
      • changedInput schema / properties / include_xml / description
        Previous value: -"Include the raw XML in the result"New value: +"Also return the raw XML text (large); default false returns only the parsed fields"
      • changedInput schema / properties / xml / description
        Previous value: -"CII or UBL XML as text (alternative to document_base64)"New value: +"CII or UBL XML as plain text; alternative to document_base64, give exactly one"
    • Changedgenerate_invoice4 fields changed
      • changedInput schema / properties / check / description
        Previous value: -"Schematron rule set: EN 16931 base or + French CTC rules"New value: +"Rule set the output must pass before it is returned: fr-ctc (default) = EN 16931 + French CTC rules (BR-FR-*), base = EN 16931 only (non-French sellers)."
      • addedInput schema / properties / invoice / description
        Added value: +"Invoice data: seller, buyer, lines, dates, payment terms. Amounts are decimal strings (\"1200.00\"), dates ISO 8601. Totals and the VAT breakdown are computed. Full JSON Schema in the resource facturx://schema/invoice."
      • changedInput schema / properties / output / description
        Previous value: -"facturx-pdf (PDF/A-3 with XML, default), cii-xml or ubl-xml"New value: +"facturx-pdf (default): PDF/A-3 with the visual invoice and the CII XML embedded, the format French platforms accept. cii-xml: the UN/CEFACT CII XML alone. ubl-xml: UBL 2.1 XML alone (Peppol-style)."
      • changedInput schema / properties / profile / description
        Previous value: -"EN 16931 conformance level: en16931 (default), extended, extended-ctc-fr, basicwl"New value: +"Factur-X conformance level written in the XML: en16931 (default, full EN 16931 semantic model), extended (adds optional business terms), extended-ctc-fr (French B2B mandate profile), basicwl (no lines)"
    • Changedvalidate_invoice3 fields changed
      • changedInput schema / properties / check / description
        Previous value: -"EN 16931 base rules or + French CTC rules (default)"New value: +"fr-ctc (default): EN 16931 + French CTC rules (BR-FR-*). base: EN 16931 only."
      • changedInput schema / properties / document_base64 / description
        Previous value: -"Factur-X PDF or XML file, base64 encoded"New value: +"Factur-X PDF (the embedded XML is read) or a CII/UBL XML file, base64 encoded"
      • changedInput schema / properties / xml / description
        Previous value: -"CII or UBL XML as text (alternative to document_base64)"New value: +"CII or UBL XML as plain text; alternative to document_base64, give exactly one"
  2. 4 tool updates
    • First observedembed_xml
    • First observedextract_invoice
    • First observedgenerate_invoice
    • First observedvalidate_invoice

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • 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
    54
    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
    C
    maintenance
    Validates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.
    2
    21
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to locally parse, validate, audit, explain, generate, and convert XRechnung and ZUGFeRD/Factur-X e-invoices using official rule sets, fully offline with no API keys required.
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool targets a distinct operation: embed_xml combines existing PDF and XML, extract_invoice reads invoice data, generate_invoice creates new invoices, and validate_invoice checks compliance. The descriptions explicitly cross-reference each other with 'do not use' guidance, eliminating ambiguity.

Naming Consistency5/5

All tool names follow the same verb_noun pattern in snake_case: embed_xml, extract_invoice, generate_invoice, validate_invoice. The naming is predictable and consistent across the entire set.

Tool Count5/5

Four tools cover the core e-invoicing operations without redundancy or bloat. The count is well-scoped for the server's purpose, fits within the typical 3-15 range, and each tool earns its place.

Completeness5/5

The set covers the full document lifecycle relevant to Factur-X: generate (create), extract (read), validate (check), and embed (combine). No obvious gaps exist; the server's stated stateless nature means additional CRUD operations are unnecessary.

Resources