Skip to main content
Glama
SamDreamsMaker

facturx-mcp

facturx-mcp

Serveur MCP pour la facturation électronique Factur-X — générez, validez et soumettez des factures conformes à la norme EN 16931 et à la réforme française B2B 2026 directement depuis Claude.

Installation

npm install -g facturx-mcp

Related MCP server: einvoice-mcp

Configuration Claude Desktop

Ajoutez dans ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows) :

{
  "mcpServers": {
    "facturx": {
      "command": "facturx-mcp",
      "env": {
        "FACTURX_LICENSE_KEY": "FTRX-..."
      }
    }
  }
}

Sans clé de licence, le mode gratuit est actif (10 générations/jour).

Outils disponibles

Outil

Plan

Description

facturx_generate

Gratuit (10/j)

Générer un XML Factur-X valide (EN 16931)

facturx_validate

Gratuit

Valider les données avant génération

facturx_parse

Gratuit

Parser un XML Factur-X existant

facturx_compute_totals

Gratuit

Calculer HT / TVA / TTC

facturx_create_pdf

Pro

Créer un PDF avec XML embarqué

facturx_extract_from_pdf

Pro

Extraire le XML depuis un PDF

chorus_submit

Pro

Soumettre sur Chorus Pro (B2G)

chorus_get_status

Pro

Statut d'une facture CPP

chorus_list_invoices

Pro

Lister les factures Chorus Pro

Tarifs

  • Gratuit — 10 générations/jour, outils Factur-X de base

  • Pro — 9.99 €/mois — Outils illimités + Chorus Pro → Acheter maintenant

  • Enterprise — 49.99 €/mois — Multi-comptes Chorus Pro + support prioritaire

Variables d'environnement

Variable

Obligatoire

Description

FACTURX_LICENSE_KEY

Non

Clé de licence Pro (format FTRX-...)

CHORUS_CLIENT_ID

Pro

Client ID PISTE (Chorus Pro)

CHORUS_CLIENT_SECRET

Pro

Client Secret PISTE

CHORUS_LOGIN

Pro

Login compte technique Chorus Pro

CHORUS_PASSWORD

Pro

Mot de passe compte technique

CHORUS_SANDBOX

Non

true pour le bac à sable (défaut: true)

Exemple

Génère une facture pour ma prestation du mois :
- Vendeur : ACME SAS, TVA FR12345678901, 10 rue de la Paix 75001 Paris
- Acheteur : CLIENT SA, 5 av. des Champs 69001 Lyon
- 10h de développement à 150€/h HT, TVA 20%
- Paiement à 30 jours, IBAN FR76...

Claude utilise automatiquement facturx_generate et retourne le XML Factur-X prêt à l'emploi.

Conformité

  • Norme EN 16931 (directive européenne 2014/55/UE)

  • Compatible Factur-X profils : MINIMUM, BASIC, EN_16931, EXTENDED

  • Compatible ZUGFeRD 2.x (Allemagne)

  • Prêt pour la réforme française e-facturation B2B (septembre 2026)

  • Intégration Chorus Pro (facturation B2G)

Licence

MIT — © 2026 facturx-mcp

Available Tools

9 tools
chorus_get_statusA

Récupère le statut de traitement d'une facture soumise sur Chorus Pro (identifiant CPP retourné lors du dépôt). Statuts possibles : DEPOSEE, EN_COURS_TRAITEMENT, VALIDEE, REJETEE.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceIdYesIdentifiant facture Chorus Pro (identifiantFactureCPP)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It indicates a read-only retrieval ('récupère') and enumerates possible statuses, but does not disclose behavior for unknown/invalid IDs, error conditions, or the exact return structure. This is adequate for a simple lookup but leaves notable gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence covers purpose, parameter provenance, and expected status values. There is no redundant information and it is front-loaded with the main action.

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?

For a one-parameter tool with no output schema, the description is largely complete: it tells the agent what identifier to supply and what statuses to expect. However, it does not specify the output format or error behavior, which would make it fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already defines invoiceId with high coverage, but the description adds useful operational meaning by explaining that the value is the CPP identifier returned at submission time. This links the parameter to a prior workflow step, going beyond the schema's static label.

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 clear action ('Récupère le statut de traitement d'une facture...'), names the specific resource (Chorus Pro invoice), and identifies the origin of the invoice identifier ('identifiant CPP retourné lors du dépôt'). The list of possible statuses further clarifies the domain. It is clearly distinct from siblings like chorus_submit (submission) and chorus_list_invoices (listing).

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?

Implies use after an invoice has been submitted, when the caller holds the CPP identifier returned at deposit time. This gives a clear operational context but does not explicitly mention when to prefer chorus_list_invoices or exclude alternative tools, so it falls just short of full guidance.

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

chorus_list_invoicesB

Liste les factures présentes sur Chorus Pro avec filtres optionnels par date, statut et pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page (défaut: 1)
statutNoFiltre statut : DEPOSEE, EN_COURS_TRAITEMENT, VALIDEE, REJETEE, SUSPENDUE
dateFinNoDate de dépôt fin (YYYY-MM-DD)
dateDebutNoDate de dépôt début (YYYY-MM-DD)
nbParPageNoNombre de résultats par page (défaut: 20)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'Liste les factures' without mentioning return format, pagination behavior, default values, or whether the operation is read-only. This is a significant gap for a tool with no other behavioral metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no redundant information. It concisely conveys the main action and available filters, making it easy to parse quickly.

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

Completeness2/5

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

The tool has 5 parameters, no output schema, and no annotations. The description only covers the basic listing intent and filter options, but omits critical context such as return structure, result limits, error cases, or any operational details an agent would need to correctly invoke and interpret results.

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 coverage is 100%, so the schema already describes all parameters. The description mentions filters by date, status, and pagination, which maps to the existing parameters, but adds no extra semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Liste') and specifies the resource ('les factures présentes sur Chorus Pro'), making the core purpose clear. While it doesn't explicitly name sibling tools, the action is distinct from chorus_submit or chorus_get_status, so an agent can reasonably infer the tool's role.

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 explains when to use the tool: to list invoices with optional date, status, and pagination filters. It does not provide explicit exclusions or alternative tool references, but the context is clear enough for an agent to select this tool for listing operations.

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

chorus_submitA

Soumet une facture Factur-X sur la plateforme Chorus Pro (obligatoire pour facturer l'État français). Requiert les variables d'environnement CHORUS_CLIENT_ID, CHORUS_CLIENT_SECRET, CHORUS_LOGIN, CHORUS_PASSWORD.

ParametersJSON Schema
NameRequiredDescriptionDefault
syntaxNoSyntaxe du flux (défaut: EN16931)EN16931
filenameYesNom du fichier (ex: facture-2024-001.xml)
xmlContentYesContenu XML de la facture

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry the disclosure burden. It explicitly mentions required environment variables for authentication, which is useful behavioral context. It does not disclose side effects, success/failure behavior, or response characteristics, so the transparency is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences covering action, purpose, and prerequisites. It front-loads the core action and integrates the mandatory context without unnecessary detail.

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

Completeness3/5

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

For a submission tool with no output schema, the description explains the purpose and authentication needs but omits what happens after submission, such as returned status or how to track via sibling tools. It provides partial but not complete operational context.

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 each parameter is already documented. The description adds no extra parameter meaning beyond the schema, matching the baseline for high coverage.

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?

The description states a specific action ('Soumet une facture Factur-X') and a clear target platform ('Chorus Pro'). It distinguishes this tool from siblings like facturx_generate and facturx_validate by focusing on submission as the unique operation.

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 provides clear context: this tool is mandatory for billing the French state, indicating when it should be used. However, it does not mention when not to use it or name alternatives, so it falls short of full directional guidance.

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

facturx_compute_totalsA

Calcule les totaux d'une facture (HT par ligne, sous-total HT, TVA ventilée par taux, TTC, montant à payer). Utile pour vérifier les montants avant génération.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesYes
currencyYesCode devise (ex: EUR)EUR

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden itself, and it does disclose the computed outputs (HT per line, subtotal, TVA by rate, TTC, amount payable), implying a pure calculation operation. However, it does not state whether the tool recomputes line totals or trusts the supplied totalAmount, nor does it describe error handling or idempotency, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the purpose first and the usage context second; every word earns its place. The output list is compactly parenthesized and the verification use case is front-loaded, making the description easy to scan.

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

Completeness3/5

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

The tool is moderately complex (nested lines array, two required parameters) with no output schema and no annotations, and the description helpfully lists the expected output components. But it omits the return shape, how inconsistencies between quantity/unitPrice and totalAmount are handled, and what input prerequisites exist, leaving gaps an agent would need to resolve before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is about 50%, so the description should compensate for undocumented parameters, but it adds no real input semantics beyond 'd'une facture.' It never explains that lines must be invoice lines with consistent quantity, unitPrice, and totalAmount, nor the role of currency; the lines container itself, quantity, and unitPrice remain undocumented.

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?

The description uses the specific verb 'Calcule' with a precise resource ('les totaux d'une facture') and enumerates the exact outputs: per-line HT, subtotal HT, TVA by rate, TTC, and amount payable. This makes it clearly distinct from the sibling tools (generate, validate, parse, create_pdf) without opening any schemas.

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 second sentence, 'Utile pour vérifier les montants avant génération,' explicitly identifies when to use the tool (before generation, for verification) and implicitly distinguishes it from facturx_generate and facturx_validate. It does not name alternatives explicitly or provide exclusions, so it stops short of a 5.

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

facturx_create_pdfA

Crée un PDF avec le XML Factur-X embarqué en pièce jointe (format requis par la norme). Optionnellement, peut intégrer le XML dans un PDF existant. Sauvegarde le résultat sur disque.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathYesChemin de sortie du PDF (ex: /tmp/facture.pdf)
xmlContentYesContenu XML Factur-X
sourcePdfPathNoOptionnel : chemin d'un PDF existant à enrichir avec le XML

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It does disclose the primary side effect: 'Sauvegarde le résultat sur disque' (saves to disk), which is the key mutating action. However, it does not clarify whether an existing output file is overwritten, whether the output directory must exist, or what happens on failure (e.g., invalid XML). These are secondary but useful details for a mutation tool without annotations.

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?

The description is efficient: two sentences, no filler, with the main action placed at the start. It conveys the essential behavior and the optional variant without redundancy. It is slightly verbose in phrasing but remains well-structured and readable. A 4 rather than 5 because it could be tightened (e.g., 'peut intégrer le XML dans un PDF existant' could be shortened, though clarity is not compromised).

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?

Given the tool's complexity is low (three parameters, no output schema, no nested objects), the description is sufficiently complete: it names the artifact type, the embedding mechanism, the optional existing-PDF path, and the disk write. Missing details (overwrite, error handling) are minor and would be expected in a summary, but they are not critical for a straightforward file-generation tool. The output format is implied (a PDF), even without an output schema.

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%, as all three parameters have descriptions. The description adds minimal new semantic value over the schema: it clarifies the optional parameter's purpose (embed XML in an existing PDF) and reinforces that the output is a PDF file. Because the schema already defines every parameter, the baseline of 3 applies; the description does not fill a coverage gap.

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?

The description clearly specifies a verb/action ('Crée un PDF'), the resource (a PDF with embedded Factur-X XML), and optional transformation (embed XML in an existing PDF). It distinguishes itself from sibling tools: it creates PDFs, whereas siblings like facturx_parse/extract read them, facturx_generate produces XML, and chorus_* handle submission. No ambiguity remains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the core use case (create a PDF with embedded Factur-X XML) and mentions the optional integration into an existing PDF, which implicitly communicates when one might choose this variant. However, it gives no explicit guidance on when not to use this tool, nor does it reference alternatives such as facturx_generate or how this tool fits in the generation/validation workflow. Usage is clear but not explicitly contrasted against siblings.

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

facturx_extract_from_pdfA

Extrait le XML Factur-X embarqué dans un PDF. Retourne le contenu XML.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdfPathYesChemin vers le fichier PDF Factur-X

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description bears the full burden. It does disclose the core behavior (extraction and return of XML), but it omits any detail about read-only nature, error behavior, or prerequisites. Since extracting is implicitly non-destructive, the description provides minimal adequate transparency, though not rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that front-loads the main action and states the return value. No unnecessary words or filler. Every word contributes to understanding the tool's purpose.

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?

For a low-complexity tool with one parameter and no output schema, the description is almost complete. It tells the agent what to provide (PDF path) and what to expect (XML content). Minor omissions like error handling or format validity are not critical for a straightforward extraction tool.

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 coverage is 100% with a clear description for pdfPath. The tool description adds no further meaning or examples beyond the schema's 'Chemin vers le fichier PDF Factur-X'. Baseline of 3 is appropriate as the schema already handles parameter documentation.

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?

The description clearly states the action (extract), the resource (XML embedded in a PDF), and the result (returns XML content). It distinguishes itself from siblings like facturx_parse or facturx_validate by specifying the extraction of embedded XML from a PDF specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives. There are related tools like facturx_parse or facturx_validate, but the description does not mention any conditions, exclusions, or comparisons. For a tool with many siblings, this is a clear gap.

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

facturx_generateA

Génère un fichier XML Factur-X valide (norme EN 16931 / UE) à partir des données de facturation. Calcule automatiquement les totaux HT, TVA et TTC. Retourne le XML et un résumé des montants.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate d'émission (YYYY-MM-DD)
buyerYes
linesYes
notesNoNotes libres sur la facture
numberYesNuméro de facture unique
sellerYes
dueDateNoDate d'échéance (YYYY-MM-DD)
paymentNo
profileNoProfil Factur-XEN_16931
buyerRefNoRéférence interne acheteur
currencyYesCode devise ISO 4217EUR
typeCodeNo380=facture, 381=avoir, 389=auto-facturation380
contractRefNoRéférence contrat
deliveryDateNoDate de livraison (YYYY-MM-DD)
purchaseOrderRefNoRéférence bon de commande

TDQS

A3.8/5.0
Behavior4/5

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

Annotations are absent, so the description carries the full burden. It clearly states and returns 'le XML et un résumé des montants', and mentions automatic calculation of HT/TVA/TTC totals. This goes beyond the elementary mention of what the tool does and gives useful behavior information — it does not hide the fact that it computes totals and returns a summary. Remaining unresolved traits such as error handling or read/write side effects are not disclosed, but for a generation tool this seems adequate.

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?

The description is a single, properly structured sentence (in French) that states the action, the object, the norm, the automatic calculations, and the return value. It’s concise and front‑loaded with the core purpose and output. Not a single redundant word, though it could be split into two sentences for readability; the density is worthwhile.

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

Completeness3/5

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

Given the tool’s complexity (15 parameters, 6 required, nested objects, no output schema) the description is lightweight: it mentions the return value (XML + summary) but lacks a clear statement about validation against EN 16931/UE, error cases, or how input fields map to output. However, the input schema already carries 73% of the description, and the tool’s responsibility is clear enough. This is a minimum viable description for a generator, but not a thorough guide for a complex, norm‑driven tool.

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 73%, and nested objects are well-documented there (e.g., countryCode, vatRate, vatCategory). The description adds no explicit parameter‑level guidance beyond implying the tool will compute totals. Given the high schema coverage, a score of 3 is fair — The description doesn’t contradict or enrich the schema, but it also doesn't need to carry much since the schema is rich.

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?

The description states a specific verb ('génère'), a precise resource ('fichier XML Factur-X'), and a scope (EN 16931/UE standard). It clearly distinguishes this tool from siblings like facturx_validate, facturx_parse, and facturx_create_pdf by focusing on XML generation, so an agent can easily select it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (to produce a legal/invoice XML) and mentions it comprises total computation, which hints at when to use it over facturx_compute_totals. However, it does not explicitly discuss when not to use this tool (e.g., if only totals are needed, facturx_compute_totals might be a better fit) nor mention other siblings that generate PDFs. The guidance is implied rather than explicit.

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

facturx_parseA

Parse un fichier XML Factur-X et extrait toutes les données de facturation sous forme JSON structuré. Compatible avec les profils MINIMUM, BASIC, EN 16931 et EXTENDED.

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlContentYesContenu XML Factur-X à parser

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the primary behavior (parse, extract to JSON) and scope (profiles), but does not mention error handling on invalid XML, read-only nature, limits, or output structure. It is adequate but lacks richer behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste: the first sentence states the core function and output, the second adds compatibility scope. It is well-structured and front-loaded with the action.

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

Completeness3/5

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

There is a slight ambiguity: the description says 'fichier XML' (XML file) while the schema parameter is 'xmlContent' (string content), which could confuse an agent about whether to provide a file path or content. Additionally, no output schema exists, and the description does not clarify what happens on invalid input or the exact JSON structure. These gaps make it incomplete for a fully informed call.

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% (xmlContent is described as 'Contenu XML Factur-X à parser'), so the schema already documents the parameter. The description adds no additional parameter semantics beyond what the schema provides, matching the baseline of 3.

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?

The description states a specific verb ('parse'), a precise resource (Factur-X XML file), and the output (structured JSON), which distinguishes it from sibling tools like facturx_generate (generation) and facturx_extract_from_pdf (PDF extraction). The compatibility with specific profiles adds clarity about scope.

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 clearly implies the tool is for parsing XML content, which provides context for when to use it. However, it does not explicitly mention alternatives or conditions for not using this tool, so it stops short of a full 5.

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

facturx_validateA

Valide les données d'une facture avant génération : vérifie les champs obligatoires, les formats (dates, codes pays, TVA), la cohérence des montants lignes. Retourne les erreurs bloquantes et les avertissements.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate d'émission (YYYY-MM-DD)
buyerYes
linesYes
notesNoNotes libres sur la facture
numberYesNuméro de facture unique
sellerYes
dueDateNoDate d'échéance (YYYY-MM-DD)
paymentNo
profileNoProfil Factur-XEN_16931
buyerRefNoRéférence interne acheteur
currencyYesCode devise ISO 4217EUR
typeCodeNo380=facture, 381=avoir, 389=auto-facturation380
contractRefNoRéférence contrat
deliveryDateNoDate de livraison (YYYY-MM-DD)
purchaseOrderRefNoRéférence bon de commande

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries behavioral disclosure. It clearly indicates the operation is non-mutating (checks, returns) and explains the result categories: blocking errors and warnings. It does not explicitly state the absence of side effects, but the verbs and return description implicitly convey a read-only validation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the main verb and object, then expands with specific validation checks and the output type. Every clause adds value; there is no redundant or filler content.

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

Completeness3/5

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

The tool is complex (15 parameters, nested objects, no output schema) and the description states the broad purpose and result types but does not detail the structure of returned errors/warnings or explain how an agent should interpret them. This leaves a clear gap for consuming the validation result, though it is minimally adequate for deciding whether to call the tool.

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?

The schema already covers 73% of parameters with descriptions (dates, country codes, VAT, line amounts), and the description's summary restates these same categories without adding parameter-level details. With high schema coverage, the baseline of 3 applies; the description does not compensate for the remaining undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a validator ('Valide les données d'une facture'), specifies what it checks (required fields, formats, line amount consistency), and states its output (errors/warnings). It situates the action 'avant génération', giving pipeline context, but does not explicitly name or differentiate any sibling tool.

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 phrase 'avant génération' is a clear temporal/usage condition, telling the agent to invoke this before creating an invoice. It does not explicitly mention alternatives or excluded cases, but this context is sufficient for choosing the tool among siblings that generate, parse, or compute totals.

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.

  1. 9 tool updatesv1.0.3
    • First observedchorus_get_status
    • First observedchorus_list_invoices
    • First observedchorus_submit
    • First observedfacturx_compute_totals
    • First observedfacturx_create_pdf
    • First observedfacturx_extract_from_pdf
    • First observedfacturx_generate
    • First observedfacturx_parse
    • First observedfacturx_validate

TDQS

A4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: generation, validation, parsing, totals computation, PDF creation, XML extraction, and separate Chorus Pro operations for submission, status, and listing. The overlap between compute_totals and generate is minimal because generate also creates the full XML document.

Naming Consistency5/5

All tool names follow a consistent pattern using the domain prefixes 'facturx_' and 'chorus_' followed by a verb (generate, validate, parse, compute_totals, create_pdf, extract_from_pdf, submit, get_status, list_invoices). The naming is uniform with snake_case and action-first ordering, making it predictable.

Tool Count5/5

With 9 tools, the server is well-scoped for the Factur-X lifecycle and Chorus Pro integration. Each tool serves a distinct step in the workflow without being overwhelming or redundant.

Completeness4/5

The toolset covers the main workflow from data validation, generation, PDF creation, XML extraction, to Chorus Pro submission and tracking. A minor gap is the lack of a dedicated tool to fetch a single facture detail from Chorus Pro beyond the list, but the existing surface is sufficient for core e-invoicing tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for DACH e-invoicing. Create XRechnung (UBL) and ZUGFeRD 2.3 (Factur-X CII) invoices, validate against EN 16931 rules, extract data from XML, and convert between UBL, CII and JSON formats.
    6
    22 npm
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for German e-invoice compliance (XRechnung 3.0 & ZUGFeRD 2.x) enabling AI agents to validate, generate, parse, and check compliance of electronic invoices per EN 16931.
    6
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that converts HTML or URLs to PDF, captures screenshots, and generates EU-compliant e-invoices (Factur-X/ZUGFeRD).
    22 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Italian electronic invoicing via the Invoicetronic API, enabling management of invoices through SDI with 20 tools for sending, receiving, exporting, and more.
    18
    MIT