FacturX (Factur-X / ZUGFeRD e-invoicing)
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FACTURX_API_KEY | No | FacturX API key (free Sandbox key at https://facturxapi.com/api-key) | |
| FACTURX_BASE_URL | No | The FacturX API base URL. Defaults to https://api.facturxapi.com; it must use https. | https://api.facturxapi.com |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
FacturX API turns a complete ERP invoice JSON into a Factur-X PDF/A-3 (EN16931). Always call facturx_dry_run first (free); call facturx_convert only when it says ready=true, because each conversion consumes 1 invoice of the account quota. When a call fails, read error.code and error.api_message; use facturx_explain_error for an EN16931 rule (BR-…), a business term (BT-…) or an invoice JSON path.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| facturx_dry_runA | Check a complete ERP invoice JSON WITHOUT producing a file and WITHOUT using quota. Use it first, every time. Returns ready (true only when generationReadiness.status is 'ready'; success=false can still be ready), the readiness detail, request_id and idempotency_key. |
| facturx_convertA | Final conversion: COSTS 1 invoice of the account quota (refunded by the API when no file is produced). Call it only after facturx_dry_run returned ready=true. Writes factur-x.pdf and factur-x.xml into out_dir and returns their paths, sizes, sha256, the verified target and the idempotency_key. If the call fails without an answer, call again with the SAME idempotency_key: the API will not charge twice. |
| facturx_validateA | Validate an existing Factur-X PDF or CII XML file from the local disk against validation_target (default en16931, the same target as facturx_dry_run and facturx_convert; pass france_2026 to check the invoice is ready for a French PA, plateforme agréée). Returns valid, validationStatus, profile, target and the first errors as reported by the API. Counts 1 invoice of the account quota when the API returns a report. |
| facturx_explain_errorA | Explain an EN16931 / France 2026 rule (e.g. BR-CO-15), a business term (e.g. BT-1) or an invoice JSON path (e.g. totals.gross): returns the matching invoice fields from the API's public integration contract (JSON path, BT, rule, CII XPath, requirement). Free, no API key needed. API error codes (409/503 …) are not in this public source yet. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: dry-run readiness check on ERP JSON, final file generation, validation of existing PDF/XML files, and error/rule explanation. The descriptions explicitly enforce sequencing (dry_run before convert) and distinguish input types, leaving little room for misselection.
All tools consistently use the facturx_ prefix followed by snake_case verb or verb_noun names: dry_run, convert, validate, explain_error. The pattern is predictable throughout the small set.
Four tools are well scoped for a focused e-invoicing conversion server: preflight, generate, validate, and explain. Each tool earns its place, and there is no redundant or trivial surface.
The core lifecycle is covered: readiness check, conversion, validation, and error explanation. Minor gaps exist, such as no tool for account/quota status, listing supported validation targets, or extracting invoice fields from an existing file, but these are workaroundable.