MCP server for Spanish electronic invoicing (VERI*FACTU, Facturae/FACe, SII, Crea y Crece B2B), direct-to-authority, no intermediary
Server defines 20 tools with consistent naming (es__ prefix + verb_noun pattern) and reasonable descriptions (avg ~120 chars). All tools have input schemas with typed parameters. However, parameter descriptions are sparse or generic ('XML-serialized VERI*FACTU record' repeated across tools), output schemas are undocumented, and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Composition is sound (single responsibility per tool), but descriptions lack LLM-optimized context about when to use each tool vs. alternatives.
Build a SII (Suministro Inmediato de Información) invoice record
Cancel a previously submitted VERI*FACTU record
Check if Crea y Crece B2B mandate applies to a given entity
Detect the applicable e-invoicing regime based on tax address and SII enrolment
Generate a Crea y Crece B2B e-invoice (UBL 2.1 or Facturae format)
Generate a Factura-e 3.2.2 XML invoice (XAdES-EPES signed)
Generate QR code for VERI*FACTU record (HAC/1177/2024 Art. 10)
Output schemas undocumented. No tool returns a documented response structure. LLMs cannot plan downstream calls or extract required fields (e.g., submission_id from submit_verifactu_to_aeat). Agents must guess what fields are available.
Tool annotations missing. Tools have explicit risk classifications (WRITE, REVERSIBLE, READ_ONLY) but no readOnlyHint/destructiveHint/idempotentHint in schema. Agents cannot distinguish safe from destructive operations without reading descriptions.
Parameter descriptions are generic or repetitive. 'XML-serialized VERI*FACTU record' appears in 5+ tools without explaining when to use each. No guidance on dependencies (e.g., generate_verifactu_record must be called before validate_verifactu_record). LLMs cannot infer tool sequencing.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Generate a corrective SII record (for invoice corrections)
Generate a VERI*FACTU invoice record (HAC/1177/2024 compliant)
Get the compliance status of an invoice against Spanish e-invoicing regulations
Query the status of a Factura-e invoice submitted to FACe
Parse and extract structured data from AEAT XML responses (VERI*FACTU or SII)
Query the status of a submitted SII batch
Query the status of a submitted VERI*FACTU record
Sign a Factura-e XML with XAdES-EPES signature
Submit a batch of SII records to AEAT
Submit a signed Factura-e invoice to FACe (B2G platform)
Submit a VERI*FACTU record to AEAT (real-time reporting)
Validate a Factura-e XML against XSD schema
Validate a VERI*FACTU record against XSD schema
No error recovery guidance. Tools like submit_verifactu_to_aeat and submit_to_face have no documented error responses or recovery paths. If submission fails, agents have no guidance on retry logic, alternative tools, or user-fixable issues.
Credentials exposed as parameters. certificate_path and certificate_password appear in 6 tools (submit_verifactu_to_aeat, query_verifactu_status, sign_facturae_xades, submit_to_face, submit_sii_batch, query_sii_status). Passwords in tool params leak into agent logs and traces.