MCP server for German electronic invoicing: ZUGFeRD 2.x and XRechnung 3.x generation, validation, parsing, conversion, DATEV export, and German VAT rules lookup. peppol_lookup_participant and related Peppol network tools accept a bare German VAT ID (normalized to Peppol scheme 9930) or a full participant ID.
Critical gaps across all dimensions. Tool definitions are inferred from audit_vs_core.py and external plugin references rather than directly visible in source. No explicit schema definitions found in provided code. Descriptions are present but generic (10-50 chars, well below 50-200 char LLM-optimized baseline). Parameters lack type definitions and descriptions. No error handling guidance. No output schema documentation. This server wraps an external core plugin (mcp-einvoicing-core) but does not expose its own tool definitions clearly in the codebase provided.
Export invoice data in DATEV format for German accounting software
Look up EN 16931 codelist values (from core plugin)
Convert between ZUGFeRD profiles, XRechnung syntax, and other formats
Create a ZUGFeRD or XRechnung invoice from structured data
Parse a ZUGFeRD or XRechnung invoice from XML or PDF to structured data
Validate a ZUGFeRD or XRechnung invoice against schema and business rules
Check Peppol endpoint connectivity and capabilities (from core plugin)
No input schemas visible in provided source code. All 14 tools scored 0 for schema dimension. Cannot verify parameter types, constraints, or descriptions.
Tool definitions are inferred from audit_vs_core.py references and external plugin imports (mcp_einvoicing_core.*) rather than directly visible in server.py or main module. Actual tool registration code not provided.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | <=2025-11-25 | v2 |
Generate Peppol EUSR (End User Service Report) (from core plugin)
Look up a Peppol participant in the SMP network (from core plugin)
Look up Peppol MLS (Metadata Locator Service) entries (from core plugin)
Send an invoice via Peppol network (from core plugin)
Generate Peppol TSR (Transaction Summary Report) (from core plugin)
Resolve Peppol DNS SML/SMP endpoints (from core plugin)
Look up German VAT tax rules and rates
Descriptions are generic and under 50 characters (e.g., 'Look up German VAT tax rules and rates', 'Look up a Peppol participant in the SMP network'). LLM-optimized descriptions should be 50-200 chars with WHAT, WHEN, and prerequisites.
No parameter descriptions visible. LLMs cannot infer what 'invoice_data', 'format', 'participant_id', or 'endpoint' mean without explicit descriptions.
No error handling guidance visible. Tools like peppol_send_invoice (IRREVERSIBLE risk) and invoice_create (WRITE risk) lack recovery guidance, confirmation patterns, or actionable error messages.