EU EN-16931 & XRechnung Deterministic Validator
Server Details
Official KoSIT EN 16931 & XRechnung XML validator issuing signed Ed25519 VCs. Zero retention.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool targets a clearly distinct compliance action and data type: PII redaction, sanctions/KYB screening, and EN 16931/XRechnung validation. There is no meaningful overlap in purpose or expected inputs.
All names use consistent snake_case with a verb-first pattern: redact_..., screen_..., validate_.... The naming is predictable and readable despite long domain-specific object names.
Three tools is on the low side but appropriate for a focused, deterministic compliance gate server where each tool covers a separate regulatory function. The set is well-scoped rather than padded.
The surface covers three key compliance gates: PII redaction, sanctions/KYB screening, and e-invoice validation. A minor gap exists around verifying or retrieving issued Ed25519 VCs, though that may be intentionally handled outside this zero-retention server.
Available Tools
3 toolsredact_gdpr_pii_textCInspect
Zero-retention GDPR PII redaction gate (IBAN, Tax-ID, HRB, Names) with signed Ed25519 VC.
| Name | Required | Description | Default |
|---|---|---|---|
| raw_text | Yes | Unstructured text containing potential DACH/EU PII. | |
| max_accepted_fee_eur | No | ||
| ap2_intent_mandate_id | No |
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 zero-retention processing and a signed Ed25519 VC, but it does not explain whether raw text is transformed or blocked, what the signed VC contains, authentication needs, or how the result is returned.
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?
The description is a single front-loaded phrase with no wasted sentences, so it is concise. It is somewhat dense with acronyms (IBAN, HRB, VC), which slightly reduces clarity, but the core purpose comes first.
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?
Given three parameters, no annotations, 33% schema coverage, and no output schema, the definition is too thin. It omits the roles of two parameters and does not clarify the return behavior of the signed VC, leaving meaningful gaps for an agent to call it correctly.
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 only 33%, and the description does not compensate. raw_text is described in the schema and its PII categories are implied in the description, but max_accepted_fee_eur and ap2_intent_mandate_id receive no meaning in either place.
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 a specific verb and resource: GDPR PII redaction on text, with named PII categories and a signed Ed25519 VC. It is clear enough to distinguish from the sanctions/KYB and e-invoice siblings by domain, but it does not explicitly differentiate itself from them.
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 guidance on when to use this tool versus alternatives, nor when not to use it. The word 'gate' weakly implies preprocessing, but the description leaves the agent to infer the workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_sanctions_and_kybCInspect
Deterministic EU FSF, UN & OpenSanctions KYB screening issuing signed Ed25519 Non-Hit VCs.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_name | Yes | Legal company or beneficiary name to screen. | |
| country_code | No | ISO-3166-1 alpha-2 country code. | DE |
| vat_or_lei_id | No | Optional EU VAT ID or LEI identifier. | |
| max_accepted_fee_eur | No | ||
| ap2_intent_mandate_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'Deterministic' and 'issuing signed Ed25519 Non-Hit VCs' usefully signal that the result is a cryptographically signed credential, but it never states what happens on a hit (presumably no VC is issued), whether calls are billed (the fee parameter implies cost), or whether screening state is stored. These are material behaviors for a compliance tool with no structured 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 front-loaded sentence with no wasted filler, which is good, but the density of unexplained acronyms (FSF, KYB, VC, AP2) makes it cryptic rather than efficient. Brevity here trades against comprehension.
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 annotations and no output schema, the description must explain result shape, hit-vs-non-hit behavior, and cost. It hints at the credential output but omits outcome semantics and billing, leaving an agent unable to predict what a call will do or return in the negative case.
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 60%, leaving max_accepted_fee_eur and ap2_intent_mandate_id with no description anywhere. The description adds zero parameter meaning and is silent on the fee ceiling, which is the economically significant control, and on what an AP2 intent mandate is required for.
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 a specific verb and resource ('KYB screening') and enumerates the exact sanctions lists screened (EU FSF, UN, OpenSanctions), plus the artifact produced (signed Ed25519 Non-Hit VCs). It is clearly distinct from the unrelated siblings (GDPR redaction, e-invoice validation). Domain jargon ('VCs', 'FSF', 'KYB') keeps it from being fully self-evident to a general agent.
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 use this tool, when not to, or what the prerequisites are (e.g., a mandate ID requirement). Siblings are in completely different domains so no differentiation is needed, but the agent is given no situational triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_en16931_e_invoiceCInspect
Official KoSIT EN 16931 & XRechnung XML validator issuing signed Ed25519 VCs. Zero retention.
| Name | Required | Description | Default |
|---|---|---|---|
| xml_content | Yes | Raw EN 16931 / XRechnung / UBL / CII XML string. | |
| max_accepted_fee_eur | No | ||
| ap2_intent_mandate_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does add genuinely useful behavioral context — 'official KoSIT', signed Ed25519 VCs, and 'zero retention' — which a caller could not infer from the schema. However, it omits what happens on invalid input (error vs. validation result), that a fee may be charged (implied by max_accepted_fee_eur), and the shape of the issued VC.
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 compact sentences, front-loaded with the core capability. It is efficient with little waste, though the density of jargon (KoSIT, VCs) and absence of any clarifying clause makes it slightly abrupt for a tool with three parameters.
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 validator that issues signed credentials with no output schema and no annotations, the description is under-specified: it does not explain the return value (the VC), invalid-input behavior, fee mechanics, or the mandate parameter. An agent cannot confidently invoke or interpret results from this text alone.
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 only 33%: xml_content is described, but max_accepted_fee_eur (with a default) and ap2_intent_mandate_id are undocumented in both schema and description. Because coverage is below 50%, the description is expected to compensate, yet it explains none of the parameters and never mentions the fee/mandate semantics.
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 ('validator' / validating) and resource ('EN 16931 & XRechnung XML'), so an agent knows exactly what it acts on. The domain is clearly distinct from the siblings (redaction, sanctions/KYB screening), though the description never explicitly differentiates itself.
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 guidance on when to use this tool, when not to, or what alternative applies when the XML is not EN 16931/XRechnung. Usage is only inferable from the tool name; no 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
redact_gdpr_pii_text - First observed
screen_sanctions_and_kyb - First observed
validate_en16931_e_invoice
Related MCP Connectors
Validate XRechnung, Peppol BIS 3 and EN 16931 invoices with KoSIT; explain rules; check auto-repair
XRechnung 3.0.2 validation with KoSIT. Free: 3 documents/day/IP. Optional annual licence.
KoSIT-verified German e-invoices: generate & validate ZUGFeRD, Factur-X, XRechnung, EN 16931.
Create and validate XRechnung, ZUGFeRD and Peppol e-invoices (KoSIT); Peppol lookup, rule help.
Related MCP Servers
- AlicenseAqualityCmaintenanceValidates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.2156 npmMIT
- AlicenseNot gradedqualityDmaintenanceEU e-invoice validation, as a developer API. Check whether an electronic invoice conforms to EN 16931 — the European standard behind France, Germany, Belgium, Poland and the 2030 ViDA mandate — with a single REST call. Structured JSON errors mapped to the official BR-* business rules. No enterprise sales call required.MIT

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- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to read, validate against the official KoSIT rules (no Java), create, and display XRechnung and ZUGFeRD e-invoices, and export incoming invoices as DATEV posting batches. Running it with a cloud language model sends invoice contents to that provider's service.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.