MaFactureOK
Server Details
Vérifie une facture électronique (Factur-X, UBL, CII), un SIREN/SIRET, une TVA ; explique un rejet.
- Status
- Healthy
- Uptime
- 100.0% over 14 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a distinct primary input/action, but there is notable overlap: verifier_tiers also checks VAT validity and verifier_tva also returns registry company data, so the boundary between the two checks is fuzzy. Similarly, valider_facture's 'correction attendue' output overlaps expliquer_code_rejet's explanatory role. The differing inputs (file vs. code vs. SIREN/SIRET vs. VAT) still make selection workable.
All four tools follow a clean verb_noun snake_case pattern in French (expliquer_code_rejet, valider_facture, verifier_tiers, verifier_tva). Consistent use of 'verifier_' for registry/VAT checks and clear verb prefixes throughout.
Four tools is lean but well-matched to a focused e-invoice validation service; each tool earns its place. Slightly thin — no bulk or maintenance operations — but not over-scoped.
Covers the core lifecycle of validation (validate a file, explain a rejection code, verify counterparty identity, verify VAT) with no obvious dead ends for the stated purpose. Minor gaps such as bulk validation or code-to-correction lookups in one call are workable around.
Available Tools
4 toolsexpliquer_code_rejetExpliquer un code de rejet ou une règle de validationARead-onlyInspect
Traduit en clair un motif de rejet ou de refus de facture électronique (codes AFNOR XP Z12-012 : REJ_SEMAN, REJ_ADR, DEST_INC, NON_TRANSMISE, TX_TVA_ERR…) ou une règle de validation EN 16931 / française (BR-CO-15, BR-FR-10, BR-S-08…) : signification, action attendue, faut-il un avoir. Sans clé, données du site MaFactureOK.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Code tel que reçu, par exemple REJ_SEMAN ou BR-CO-15 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds useful context beyond them: it names the returned content (signification, action attendue, faut-il un avoir) and discloses the data source/auth condition ('Sans clé, données du site MaFactureOK').
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?
One dense sentence, front-loaded on the action, with the code families and output content packed efficiently. It is long but every clause (code families, output fields, no-key note) carries information.
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 output schema, the description must convey what comes back, and it does (meaning, expected action, whether a credit note is needed). Combined with the readOnly annotation and the data-source note, an agent has enough to call it correctly; only explicit alternative-routing guidance is missing.
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 description coverage is 100% and the single 'code' parameter already carries examples (REJ_SEMAN, BR-CO-15). The description's longer code enumeration reinforces the accepted format but adds little beyond the schema, so baseline 3 applies.
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 ('Traduit en clair') and a precise resource (rejection reasons / validation rules for electronic invoices), with concrete code families (AFNOR XP Z12-012, EN 16931, BR-CO-15). An agent can distinguish this explanatory tool from the sibling validators (valider_facture, verifier_tva) without opening the schema.
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?
The description makes the usage context inferable ('un motif de rejet … tel que reçu') but never states when to call this instead of valider_facture or verifier_tiers, nor does it exclude any cases. Adequate implied usage, no explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valider_factureVérifier une facture électronique (dépôt de fichier)ARead-onlyInspect
Ouvre une carte de dépôt dans la conversation. L'utilisateur y glisse sa facture électronique (PDF Factur-X, XML UBL ou CII, 15 Mo au maximum) ; le fichier est envoyé directement à MaFactureOK, analysé puis effacé, et la carte affiche le verdict (valide, à vérifier, invalide), chaque anomalie en français avec la correction attendue, et l'état des entreprises de la facture au registre officiel. À appeler dès que l'utilisateur veut vérifier, valider ou comprendre le rejet d'une facture qu'il possède en fichier. Aucun argument : le fichier n'est jamais transmis par le modèle.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint and openWorldHint; the description goes well beyond them by disclosing the interaction model (a drag-and-drop card, not a model-supplied argument), the 15 MB size cap, that the file goes directly to the third-party MaFactureOK service and is deleted after analysis, and exactly what the card returns (verdict, per-anomaly French explanations with expected correction, company registry status).
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?
It is one dense but well-ordered paragraph: mechanism first, then output, then the usage trigger, then the no-argument note. Every clause carries information, though the single-block format and long sentence make it slightly harder to scan than a split structure would.
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 output schema, the description fully carries the return contract (verdict values, anomaly explanations, registry status) and the input contract (formats, size limit, privacy handling). Nothing needed to invoke or interpret the result is missing.
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?
The schema is empty (0 parameters), so the baseline is 4, but the description adds real meaning: "Aucun argument : le fichier n'est jamais transmis par le modèle" explains both the absence of parameters and the mechanism by which input reaches the tool, removing any temptation for the agent to construct a file argument.
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 concrete verb and resource (opens an upload card to verify an e-invoice) and names the accepted formats (PDF Factur-X, XML UBL/CII), the verdict outcomes, and the registry check. This clearly separates it from the sibling checks verifier_tva, verifier_tiers and expliquer_code_rejet.
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?
"À appeler dès que l'utilisateur veut vérifier, valider ou comprendre le rejet d'une facture qu'il possède en fichier" gives an explicit trigger plus an implicit boundary (the invoice must exist as a file). It never names the sibling tools as alternatives, so the routing is inferred rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verifier_tiersVérifier une entreprise (SIREN ou SIRET)ARead-onlyInspect
Vérifie un ou plusieurs SIREN (9 chiffres) ou SIRET (14 chiffres) au registre officiel des entreprises et auprès de VIES : existe-t-elle, est-elle active ou cessée, sous quel nom et à quelle adresse, son numéro de TVA est-il valide. À utiliser avant de payer une facture ou de créer un client. Sans clé : 5 identifiants par appel, 30 par jour. Avec une clé gratuite (https://mafactureok.com/api) : 25 par appel, 200 par jour.
| Name | Required | Description | Default |
|---|---|---|---|
| identifiants | Yes | SIREN ou SIRET, espaces et points tolérés |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety and openness (readOnlyHint=true, openWorldHint=true), yet the description still adds substantive behavior: two external data sources, quota tiers per call/per day, and how to lift the limit via a free key. It does not explain batch-failure semantics for the up-to-25 identifiers, which is the main remaining gap.
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 sentences: purpose and return contents first, then the usage trigger, then quota and key information. Every clause carries information an agent needs, and nothing is repeated from the schema or annotations.
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 single-parameter, read-only, no-output-schema tool, the description covers purpose, trigger, data sources, and quota constraints. Return-value shape is unnecessary given the enumerated checks, and error-code interpretation is plausibly delegated to the sibling expliquer_code_rejet.
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 100% and the schema already states that SIREN or SIRET strings are accepted with spaces and dots tolerated. The description adds digit-length semantics (9 for SIREN, 14 for SIRET) and confirms plural input, which the schema does not state, so it earns a step above the baseline 3.
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 (verifying SIREN/SIRET against the official registry and VIES) and enumerates exactly what is returned: existence, active/ceased status, name, address, and VAT validity. It is clear on its own, but it never distinguishes itself from the sibling verifier_tva, which overlaps on the VAT-validity check.
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?
It gives an explicit triggering context ('À utiliser avant de payer une facture ou de créer un client'), which is real decision guidance rather than generic filler. It stops short of naming alternatives or exclusions, so nothing tells the agent when to prefer verifier_tva or valider_facture over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verifier_tvaVérifier un numéro de TVA intracommunautaire françaisARead-onlyInspect
Vérifie un numéro de TVA intracommunautaire français (FR + 2 caractères + 9 chiffres) : clé de contrôle, validité auprès du service européen VIES, et entreprise associée au registre officiel (nom, adresse, active ou cessée). Numéros français uniquement ; pour un autre pays, utiliser VIES directement. Sans clé : quota réduit ; clé gratuite facultative.
| Name | Required | Description | Default |
|---|---|---|---|
| numero | Yes | Numéro de TVA, par exemple FR42456500537 ; espaces tolérés |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds substantive behaviour: the three-stage verification pipeline, the returned company fields (nom, adresse, active ou cessée), the reduced quota without a key, and the free optional key as an authentication path. That is well beyond what the annotations convey.
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 dense sentence, front-loaded with the operation and format, then the scope exclusion, then the quota caveat. No filler and nothing buried.
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 output schema, the description carries the return-value burden and does so by naming the three verification stages and the company fields returned. For a one-parameter read-only tool, an agent has everything needed to invoke it and interpret the result.
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?
Only one parameter, and the schema already documents it at 100% coverage with an example and space tolerance. The description still adds a structural breakdown of the expected value ('FR + 2 caractères + 9 chiffres'), which helps an agent construct or pre-validate input, so it edges above the baseline 3.
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 (Vérifie) and resource (numéro de TVA intracommunautaire français) and enumerates the three checks performed: control key, VIES validity, and associated company in the official registry. The scope restriction 'Numéros français uniquement' cleanly separates it from a generic VIES lookup.
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?
Gives an explicit exclusion and alternative: 'Numéros français uniquement ; pour un autre pays, utiliser VIES directement.' It also flags the authentication condition ('Sans clé : quota réduit ; clé gratuite facultative'), so an agent knows both when to call it and how quotas shape the call.
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.
4 tool updates
- First observed
expliquer_code_rejet - First observed
valider_facture - First observed
verifier_tiers - First observed
verifier_tva
Related MCP Connectors
Conformité Factur-X : 21 critères PDF/A-3, XML CII EN 16931 et BR-FR. Analyse locale, gratuite.
Validate Factur-X, CII & UBL e-invoices free, no key. Generate compliant invoices from JSON.
Validate, extract, repair and generate French Factur-X / EN16931 invoices via AgentForge API
Vérification B2B française : SIRET, SIRENE, dirigeants RNE, santé d'entreprise. Hébergé en France.
Related MCP Servers
- AlicenseAqualityBmaintenanceRead and check European e-invoices (Factur-X, ZUGFeRD, XRechnung, UBL, CII) from an AI assistant: contents in plain text plus an EN 16931 consistency check.2MIT
- AlicenseAqualityDmaintenanceValidates EU electronic invoices (Peppol, XRechnung, FatturaPA, etc.) and explains validation error codes, enabling AI coding agents to check invoice validity and get fixes before rejection.317 npmMIT
- AlicenseAqualityCmaintenanceValidates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.2165 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides free read-only business checks for IBANs, EU VAT number format, Peppol e-invoice rules, supplier bank-detail changes, and CSV/XLSX data cleaning.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.