Skip to main content
Glama

Validate Factur-X / ZUGFeRD E-Invoice (EN 16931)

validate_facturx

Validate or parse a Factur-X, ZUGFeRD 2.x or XRechnung e-invoice (UN/CEFACT CrossIndustryInvoice XML) against EN 16931 business rules BR-01..BR-65, returning the detected profile (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED, XRechnung), violations with exact rule IDs, and extracted invoice JSON. PDF/A-3 attachment extraction is available on the HTTP API.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xmlYesRaw UN/CEFACT CrossIndustryInvoice XML (Factur-X 1.0.x / ZUGFeRD 2.x / XRechnung CII)
operationNoOperation to run: "validate" (default) returns the detected profile and rule violations, "parse" returns the extracted invoice

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses the output content (detected profile from a named list, violations with exact rule IDs, extracted invoice JSON) and flags a capability boundary (PDF/A-3 only on the HTTP API). It omits error/limit behavior, but for a validation tool the safety profile is largely self-evident.

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?

A single dense sentence, but it is front-loaded with purpose and then enumerates return values in order of usefulness. No filler, though the sentence is long enough that a reader must parse several clauses.

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

Completeness4/5

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

No output schema exists, so the description's enumeration of return values (profile, violations, invoice JSON) is doing necessary work, and the two-input surface is simple. Missing only the shape of error responses and any input size constraints.

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 both xml and operation are already documented, including the default of 'validate'. The description reinforces the operation semantics and accepted XML dialects but adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.

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 (validate/parse) plus the exact resource (Factur-X/ZUGFeRD 2.x/XRechnung CII e-invoice) and the standard applied (EN 16931 BR-01..BR-65). This clearly separates it from siblings like validate_peppol and parse_iso20022, which target different formats.

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?

The description distinguishes the two operations (validate vs parse) and discloses that PDF/A-3 extraction is only available via the HTTP API, which is actionable context. It does not, however, state when to reach for this tool over validate_peppol or how the two e-invoicing validators differ.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources