voxfactura-mcp
Summary: This MCP server bridges an AI assistant to the VoxFactura API so you can query your billing/accounting data in natural language and prepare drafts — all through a scoped vf_live_… API key (never sending anything to a client).
Invoices (factures): list unpaid invoices, list invoices filtered by status or job site (
chantier_id), and view a single invoice's detail including line items.Expenses (dépenses): list expenses, filtered by category or job site.
Job sites & clients: list job sites filtered by status, search/list clients by name.
Profitability: compute a job site's margin (billed revenue minus expenses).
Accounting / VAT: VAT recap (collected, deductible, net) over a date range.
Write actions (draft-oriented, require write scopes):
Create a draft quote for a client (with line items: designation, quantity, unit price excl. VAT, VAT rate) — never auto-sent.
Mark an invoice as paid (full or partial amount).
Add an expense, optionally linked to a job site and supplier.
Notes: Configuration relies on VOXFACTURA_API_KEY (mandatory) and an optional VOXFACTURA_API_BASE_URL (defaults to the Railway-hosted API). The schema exposes 11 tools — the README also advertises chantier, journal_ventes, journal_achats, and export_fec, which are not present in this schema despite being documented.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@voxfactura-mcpQuelles sont mes factures impayées ?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
voxfactura-mcp
Branche ton business VoxFactura sur ton assistant IA (Claude Desktop, Claude Code, ou tout client MCP). Tu poses tes questions en langage naturel :
« Quelles sont mes factures impayées ? »
« Quelle est ma marge sur le chantier Villa Michu ? »
« Combien j'ai dépensé chez Point P ce mois-ci ? »
« Donne-moi mon récapitulatif TVA du 1er trimestre. »
« Crée un devis brouillon pour le client 12 : 3 radiateurs à 450. »
L'assistant consulte tes données et peut préparer des brouillons ; il ne n'envoie jamais rien à un client (l'envoi reste une validation humaine dans VoxFactura). Tout passe par une clé API scopée que tu contrôles.
1. Crée une clé API
Dans VoxFactura : Réglages → Clés API → Créer une clé. Coche les permissions
voulues (lecture : factures, dépenses, chantiers, clients, comptabilité ;
écriture : créer des devis, marquer payé, ajouter des dépenses). Copie la clé
vf_live_… : elle n'est affichée qu'une seule fois.
Pour la marge chantier : factures + dépenses.
Pour le récap TVA / FEC : comptabilité.
Related MCP server: @centry-digital/bukku-mcp
2. Installe
pip install voxfactura-mcp
# ou, sans installer : uvx voxfactura-mcp3. Configure ton client MCP
Claude Desktop
Réglages → Développeur → Modifier la config :
{
"mcpServers": {
"voxfactura": {
"command": "voxfactura-mcp",
"env": { "VOXFACTURA_API_KEY": "vf_live_ta_cle_ici" }
}
}
}Redémarre Claude Desktop.
Claude Code
claude mcp add voxfactura -e VOXFACTURA_API_KEY=vf_live_ta_cle -- voxfactura-mcpVariables d'environnement
Variable | Rôle | Défaut |
| Ta clé API (obligatoire) | aucune |
| URL de l'API |
|
Outils
Outil | Rôle | Permission |
| Factures impayées | factures |
| Factures (filtres statut / chantier) | factures |
| Détail d'une facture | factures |
| Dépenses (filtres chantier / catégorie) | dépenses |
| Liste des chantiers (filtres statut / client) | chantiers |
| Détail d'un chantier | chantiers |
| Liste / recherche clients | clients |
| CA facturé − dépenses d'un chantier | factures + dépenses |
| TVA collectée / déductible / nette | comptabilité |
| Journal des ventes d'une période | comptabilité |
| Journal des achats d'une période | comptabilité |
| Fichier des écritures comptables de l'année | comptabilité |
| Crée un devis (brouillon) | devis:write |
| Marque une facture payée | payments:write |
| Ajoute une dépense | expenses:write |
API sous-jacente
Le serveur n'est qu'un habillage de l'API publique VoxFactura (lecture/écriture
scopée). Doc interactive : https://voxfacture-production.up.railway.app/api/v1/pub/docs.
Voir aussi llms.txt et examples/.
Licence
MIT.
Available Tools
15 toolsajouter_depenseC
Ajoute une dépense (permission expenses:write). Montants en texte (ex. « 240.00 »). Rattache à un chantier via chantier_id (numéro du chantier dans le compte).
| Name | Required | Description | Default |
|---|---|---|---|
| categorie | No | ||
| montant_ht | No | ||
| chantier_id | No | ||
| designation | Yes | ||
| fournisseur | No | ||
| montant_ttc | Yes | ||
| montant_tva | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that expenses:write permission is required and that amounts are passed as text (e.g. '240.00'), which is non-obvious behavior. But it does not disclose what a created expense returns, idempotency/duplicate handling, or error behavior for a write operation.
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?
Three short, front-loaded sentences with the action stated first and no filler. Efficient, though it leans on terse parentheticals rather than a fully structured statement.
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 7-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description is thin: it omits return behavior and most parameter meanings, so an agent lacks what it needs to call this confidently.
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 0%, so the description must compensate. It only explains montant_ttc's text format and chantier_id's meaning (worksite number in the account), leaving categorie, fournisseur, montant_ht, montant_tva and designation undefined—most of the 7 parameters are undocumented.
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 and resource ('Ajoute une dépense'), so an agent can tell it apart from the read-oriented sibling 'depenses'. However it never explicitly contrasts itself with that sibling, so the differentiation is implied rather than stated.
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 gives no when-to-use or when-not-to-use guidance and names no alternative among the many siblings (depenses, journal_achats, factures). The only implicit signal is the required permission expenses:write, which is a prerequisite, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chantierA
Détail d'un chantier par son numéro dans le compte (le champ id
renvoyé par la liste des chantiers).
| Name | Required | Description | Default |
|---|---|---|---|
| chantier_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It conveys that this is a read/lookup operation, but discloses nothing about permissions, error behavior (unknown id), or response shape.
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 compact sentence, front-loaded with purpose, with the parenthetical clarifying parameter origin. No wasted text.
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 lookup with no output schema, the definition covers input semantics but says nothing about what the detail response contains. Adequate but not complete given the missing output schema.
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 0% and the schema only names the type, but the description meaningfully explains that `chantier_id` is the `id` field returned by the chantiers list, adding real semantics beyond the bare integer type.
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+resource ("Détail d'un chantier") and scopes it to a single record by number. It implicitly distinguishes itself from the plural sibling `chantiers` by pointing to that list as the source of the id.
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 implies usage (fetch a detail by id obtained from the list) but does not state explicit when-to-use/when-not conditions or alternatives such as `marge_chantier`. Guidance is inferred rather than declared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chantiersB
Liste les chantiers, éventuellement filtrés par statut (en_cours, termine…)
ou par client (client_id = numéro du client dans le compte).
| Name | Required | Description | Default |
|---|---|---|---|
| statut | No | ||
| client_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Liste' implies a read operation, but nothing is said about result size, ordering, pagination, or whether all chantiers are returned by default when no filter is supplied — significant gaps for a list endpoint with zero annotation coverage.
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 front-loaded sentence stating the action before the filter conditions; no filler. The two filters are packed into one trailing parenthetical, which is dense but still readable.
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 and no annotations, the description should say more about what comes back and how results are bounded; it says nothing about return shape, ordering, or limits. The parameter gap is partly covered, but the behavioral/return gap is not.
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 0% — the properties are bare 'string'/'integer' with only titles — so the description must compensate, and it does: it enumerates example status values ('en_cours, termine…') and defines client_id as the client number within the account. It stops short of listing all valid statuses or their allowed set.
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+resource ('Liste les chantiers') and the two optional filter dimensions, so the operation is unambiguous. However, it never differentiates itself from the sibling 'chantier' (singular) or 'marge_chantier', leaving the agent to infer that this is the collection-level list versus a detail view.
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 phrase 'éventuellement filtrés par statut... ou par client' implies when the filters apply, so usage is implied rather than stated. There is no explicit guidance on when to prefer this tool over 'chantier' or 'clients', nor any exclusion or prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clientsA
Liste les clients, avec une recherche textuelle optionnelle.
| Name | Required | Description | Default |
|---|---|---|---|
| recherche | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Liste' implies a read-only operation, it does not mention output format, pagination, sorting, or any side effects. For a complete picture, more detail is needed.
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?
The description is a single, concise French sentence that is front-loaded with the action verb. Every word earns its place, with no redundant or extraneous content.
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 simple list tool with one optional parameter and no output schema, the description is minimally adequate. It states the purpose and parameter, but lacks details about the response format or any limits. It is not misleading, but could be more complete.
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 description explicitly explains the 'recherche' parameter as an optional text search, adding meaning beyond the raw schema which only shows a nullable string. This is sufficient for a single simple parameter, though it does not detail which fields are searched.
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 clearly states the tool lists clients and supports an optional text search. The verb 'Liste' is specific and the resource 'clients' is unambiguous, distinguishing it from sibling tools that deal with invoices, expenses, and projects.
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?
No guidance is provided on when to use this tool versus alternatives or any exclusions. The description simply states what it does, leaving the agent to infer usage context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creer_devis_brouillonA
Crée un devis en BROUILLON (permission devis:write). client_id et
chantier_id sont les numéros du client et du chantier dans le compte.
Chaque ligne : {designation, quantite, unite, prix_unitaire_ht, taux_tva},
plus en option prestation_id (numéro de la prestation du catalogue) et
nature (« bien » pour une vente, « service » sinon ; omise, elle suit la
prestation du catalogue puis le réglage du compte).
validite_jours : durée de validité (omis = celle réglée sur le compte,
30 jours par défaut). delai_execution : délai imprimé sur le devis
(ex. « 3 semaines après acceptation »). Le devis n'est jamais envoyé
automatiquement : l'artisan le relit et l'envoie dans VoxFactura. Son
numero est nul tant qu'il est brouillon : le numéro définitif lui est
attribué à l'envoi.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| objet | No | ||
| lignes | Yes | ||
| client_id | Yes | ||
| chantier_id | No | ||
| validite_jours | No | ||
| delai_execution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well. It discloses the required write permission, draft-only status, non-automatic sending, numbering behavior ('numero' null until sent), and default inheritance for optional fields.
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?
The description is front-loaded with the core action and every sentence adds substantive detail about defaults, line structure, or lifecycle. It is slightly long, but the density is justified by the creation complexity.
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 7-parameter create tool with no annotations or output schema, it supplies key defaults, permission requirements, and draft/numbering semantics. It is not fully complete because 'notes' and 'objet' are never explained and no return shape is described.
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 0%, so the description must compensate. It documents client_id, chantier_id, the nested 'lignes' item fields, validite_jours defaults, and delai_execution, but it leaves 'notes' and 'objet' completely undocumented.
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 opens with a specific verb and resource: 'Crée un devis en BROUILLON'. It also states the required permission (devis:write), making the action unambiguous and distinguishable from facture-oriented siblings.
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 implies when to use the tool by describing the draft workflow and that the quote is never sent automatically, but it does not explicitly contrast this with alternatives or provide clear when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depensesC
Liste les dépenses (factures de frais), filtrables par chantier (numéro du chantier dans le compte) ou catégorie.
| Name | Required | Description | Default |
|---|---|---|---|
| categorie | No | ||
| chantier_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Liste' implies a read operation, but it does not state whether results are paginated, how many records return by default, whether auth/permissions are required, or what happens when no filter is supplied (all expenses vs none).
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 front-loaded sentence with the verb first and filter options trailing; no wasted words. Slightly tight to the point of under-explaining, but structurally clean.
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 simple read/list tool with two optional filters and no output schema, the core purpose and filters are covered. Missing behavioral context (default scope, return shape, pagination) leaves the agent guessing about what a call with no arguments actually yields.
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 0%, so the description must compensate and it partially does: it explains that chantier_id is the 'numéro du chantier dans le compte' and that filter is by category. That adds real meaning beyond the bare schema, but 'categorie' gets no more than its plain-language equivalent and no accepted value format is given.
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 and resource ('Liste les dépenses') and clarifies the domain term ('factures de frais'). However, it never names the sibling that distinguishes it, notably 'ajouter_depense' (add expense), so an agent must infer the read-vs-write split from the verbs alone.
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 mentions that results are filterable by chantier or catégorie, which hints at usage, but gives no explicit when-to-use or when-not-to-use guidance relative to alternatives like journal_achats, factures, or ajouter_depense. Nothing tells the agent when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_fecB
Fichier des écritures comptables (FEC, texte tabulé) de l'année, à remettre à l'expert-comptable. Nécessite la permission comptabilité.
| Name | Required | Description | Default |
|---|---|---|---|
| annee | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the output format (tab-separated text), and the required accounting permission, but says nothing about how the file is delivered, whether the operation is read-only, or any size/period limits.
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 compact lines, front-loaded with the resource and format, then the audience and prerequisite. Nothing is padded, though the phrasing could be slightly tighter.
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 simple one-parameter export with no output schema, the description covers what is produced and the permission requirement, but omits how the result is returned and what the year value must be, leaving gaps an agent would need to guess at.
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 single parameter 'annee' has 0% schema description coverage. The description only refers to 'l'année', which merely restates the parameter name and adds no format, calendar-vs-fiscal-year, or range guidance, so it fails to compensate for the coverage gap.
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 gives a specific verb and resource: exporting the FEC (Fichier des écritures comptables) as a tab-separated text file for the year, and adds the intended recipient (the accountant). It is clearly distinct from narrower siblings like journal_ventes or journal_achats, though it does not explicitly name them.
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 states the purpose ('à remettre à l'expert-comptable') and the prerequisite permission, which implies when to use it, but never contrasts it with the related export/report siblings (journal_ventes, journal_achats, recap_tva) or says when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
factureA
Détail d'une facture (lignes comprises) par son numéro dans le compte
(le champ id renvoyé par la liste des factures).
| Name | Required | Description | Default |
|---|---|---|---|
| facture_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Détail' implies a read operation and 'lignes comprises' tells the agent line items are included, but there is no statement of permissions, behavior for an unknown id, or account scoping beyond the vague phrase 'dans le compte'.
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 tight sentence, front-loaded with the action and scope, with the parameter provenance placed in a parenthetical. Every clause earns its place; only the nested parentheses slightly reduce readability.
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 tool with no annotations and no output schema, the description covers purpose, the meaning and origin of the id, and what the response contains (invoice lines). What is missing — error behavior and auth expectations — is modest for a simple lookup.
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 0%, so the description must compensate, and it does: it explains that the parameter is the invoice number taken from the `id` field returned by the invoice list, which is far more useful than the bare `Facture Id` integer field. It stops short of restating the type or format constraints.
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 action ('Détail d'une facture'), the resource, and the scope ('lignes comprises'), and explicitly distinguishes itself from the list tool by stating the id comes from 'la liste des factures' (sibling `factures`). An agent can tell at a glance that this fetches one invoice in full rather than listing them.
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?
Usage is implied: call this after obtaining an id from the invoice list to inspect a single invoice. There is no explicit when-not guidance and no exclusions (e.g., versus `factures_impayees` or `marquer_facture_payee`), so the routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facturesB
Liste les factures émises, éventuellement filtrées par statut ou chantier
(chantier_id = numéro du chantier dans le compte).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| statut | No | ||
| chantier_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden, yet it only restates purpose. It doesn't mention pagination behavior, the 'limit' default, or the shape of returned data, all of which matter for a list endpoint.
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 front-loaded sentence with the core purpose first and filters second; every clause adds information. It is efficient, though a bit terse given the coverage gaps.
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?
No output schema or annotations exist, so the description should do more. It covers purpose and two filters but omits pagination/'limit' semantics and return structure, leaving gaps for an agent invoking it.
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 0%, so the description must compensate, and it does partially: it clarifies 'chantier_id' means the site number within the account and that 'statut' filters by status. The 'limit' parameter and valid 'statut' values remain undocumented.
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 and resource ('Liste les factures émises'), and adds scope via the optional filter mention. It's clearly distinguishable from the singular sibling 'facture', but it doesn't explicitly name alternatives like 'factures_impayees'.
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 phrase 'éventuellement filtrées par statut ou chantier' implies how the filters are used, giving modest usage context. It never states when to prefer this tool over siblings such as 'facture' or 'factures_impayees', and offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
factures_impayeesA
Liste les factures impayées (envoyées, partiellement payées, en retard).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Liste' implies a read-only query, but it does not explicitly state the absence of side effects, authentication requirements, or return format. The parenthetical statuses add useful context but do not disclose behavioral traits beyond the operation.
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?
The description is a single sentence that is front-loaded with the action and resource. It is concise with no unnecessary words, earning its place entirely.
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 simple list tool with no parameters and no output schema, the description is mostly complete. It clearly identifies what is returned (unpaid invoices with specified statuses). Missing is an explicit statement about being read-only or any confirmation of the output nature, but the simplicity of the tool reduces the burden.
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 tool has no parameters, and the schema is empty with 100% coverage vacuously. Since there are no parameters to explain, the baseline of 4 applies. The description adds no parameter information, which is acceptable given the absence of parameters.
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 uses a specific verb 'Liste' (lists) and a specific resource 'factures impayées' (unpaid invoices), clearly distinguishing it from sibling tools like 'factures' (all invoices) and 'facture' (single invoice). The parenthetical statuses further clarify the scope.
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 states what the tool does but provides no guidance on when to use it versus alternatives like 'factures' or 'marquer_facture_payee'. There is no mention of scenarios or exclusions, so the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
journal_achatsB
Journal des achats sur une période (dates AAAA-MM-JJ) : une écriture par dépense. Nécessite la permission comptabilité.
| Name | Required | Description | Default |
|---|---|---|---|
| fin | Yes | ||
| debut | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose a real behavioral trait (the accounting permission prerequisite) and the output granularity (une écriture par dépense), plus the date format. It does not state that it is a read-only operation, nor anything about ordering, pagination, or behavior on empty periods.
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 sentence that front-loads the resource and period, followed by two compact qualifiers. No filler, though the parenthetical date format slightly interrupts the main clause.
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 simple two-parameter read tool with no output schema or annotations, the essentials are present: scope, date format, permission requirement, and row granularity. Missing details about return contents (totals? ordering? empty results?) keep it at minimum-viable rather than complete.
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 0% and both parameters (debut, fin) are undocumented in the schema, so the description must compensate. It supplies the date format (AAAA-MM-JJ), which is genuinely useful, but does not clarify range inclusivity or whether fin is exclusive, leaving residual ambiguity.
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?
Names a specific resource (journal des achats) and scope (sur une période), so an agent can immediately distinguish it from journal_ventes and export_fec, which appear in the sibling list. It stops short of explicitly contrasting itself with those siblings, so it is clear but not fully differentiated.
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?
Provides context that it is a period-bounded report and that it requires the comptabilité permission, which lets an agent decide feasibility. However, it never states when to prefer this over journal_ventes, export_fec, or depenses, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
journal_ventesB
Journal des ventes sur une période (dates AAAA-MM-JJ) : une écriture par facture et avoir. Nécessite la permission comptabilité.
| Name | Required | Description | Default |
|---|---|---|---|
| fin | Yes | ||
| debut | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two useful traits beyond the name: the accounting permission requirement and the one-entry-per-invoice-and-credit-note output granularity. However, it says nothing about pagination, ordering, volume limits, or return format for a period report.
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, front-loaded sentence that packs purpose, date format, entry granularity, and the permission prerequisite with no redundant filler. Efficient, though the parenthetical date format interrupts the purpose statement slightly.
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 simple two-parameter read report with no output schema and no annotations, the description covers the essentials: what it returns, the required date format, and the auth requirement. Output structure is only summarized, but that is adequate at this complexity.
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 0%, so the description must compensate. It supplies the critical missing semantic — the date format (AAAA-MM-JJ) — and clarifies that the two parameters bound a period, which the schema alone (bare 'Debut'/'Fin' titles) does not convey.
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 resource (journal des ventes) with scope (sur une période) and defines the granularity: one entry per invoice and credit note. An agent can infer it differs from journal_achats, but the sibling is never named explicitly, so differentiation is left to inference.
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?
There is no explicit when-to-use guidance or statement of when a different tool (e.g. journal_achats, export_fec, recap_tva) would be preferred. The accounting-permission prerequisite is mentioned, but that is a precondition rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marge_chantierB
Marge d'un chantier (par son numéro dans le compte) : chiffre d'affaires facturé moins les dépenses. Nécessite une clé avec les permissions factures + dépenses.
| Name | Required | Description | Default |
|---|---|---|---|
| chantier_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the calculation formula and required API permissions, which is useful context, but omits whether the operation is read-only, the time period covered, and error behavior.
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 tightly written sentences with no filler. The purpose, formula, and prerequisite permission are front-loaded and easy to scan.
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 simple calculation tool with no output schema, the description covers the formula and permission requirement. However, it omits the time period for revenue and expenses and the return format, which are important for correct interpretation of the margin.
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 0% with one parameter. The description adds meaning by saying the chantier is identified 'par son numéro dans le compte', partially compensating for the lack of schema detail, but does not clarify format, range, or whether it matches the internal integer ID.
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 clearly that it computes the margin for a construction site, defined as billed revenue minus expenses. The resource and calculation are specific, though it does not explicitly differentiate itself from sibling tools like chantier or depenses.
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?
Provides only a permission prerequisite ('Nécessite une clé avec les permissions factures + dépenses') but no guidance on when to use this tool versus alternatives like chantier or factures. The agent must infer usage from the name and purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marquer_facture_payeeA
Marque une facture payée (permission payments:write). facture_id =
numéro de la facture dans le compte. montant (texte,
ex. « 500.00 ») pour un paiement partiel ; vide = solde le total.
| Name | Required | Description | Default |
|---|---|---|---|
| montant | No | ||
| facture_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required permission (payments:write) and the behavioral distinction between a partial payment and an empty montant settling the total balance. It omits reversibility, effects on existing payments, and error behavior.
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?
Three compact sentences with zero waste; the action and its permission, then each parameter's meaning, are front-loaded and easy to parse.
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 simple two-parameter mutation with no output schema and no annotations, the description covers the permission requirement, both parameters' meanings, and the partial/total settlement behavior. It is nearly complete, leaving only edge-case behavior (reversibility, overpayment) unstated.
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 0%, so the description must compensate and it does: facture_id is 'numéro de la facture dans le compte' and montant is described as text with a concrete example ('500.00') and the semantic that empty settles the total. Minor gap: no format constraints or bounds on montant beyond the example.
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+resource: 'Marque une facture payée' clearly identifies the mutation (mark an invoice as paid) on the facture resource. It is distinct from the read-oriented siblings (factures, facture, factures_impayees) but does not explicitly contrast with them.
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?
Usage is implied by the tool name and the partial-vs-full payment nuance ('paiement partiel ; vide = solde le total'), which tells the agent when to send a montant. However, there is no explicit when-to-use vs alternative guidance or mention of prerequisites beyond the permission string.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recap_tvaA
Récapitulatif TVA sur une période (dates AAAA-MM-JJ) : collectée, déductible, TVA nette. Nécessite la permission comptabilité.
| Name | Required | Description | Default |
|---|---|---|---|
| fin | Yes | ||
| debut | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It mentions the required accounting permission, the date format (AAAA-MM-JJ), and the returned fields. It does not explicitly state that the operation is read-only, but the word 'summary' implies it, and the permission note adds important context.
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?
The description is a single, front-loaded sentence containing all key information: purpose, date format, outputs, and permission. No unnecessary words or repetition.
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 simple summary tool, the description covers the essential aspects: what it does, the inputs' format, required permission, and the output fields. Without an output schema, this is sufficient for an agent to understand the tool's functionality, though it could optionally state whether the summary is global or filtered.
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 has no descriptions, so the description compensates by indicating the parameters define a period and specifying the date format. However, it does not explicitly map debut and fin to start and end dates, leaving some inference to the agent.
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 clearly states the tool produces a VAT summary for a date range, listing the specific computed values (collected, deductible, net VAT). This distinguishes it from sibling tools like factures or depenses by focusing on aggregated VAT reporting.
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 intended use is implied by the description: obtain a VAT summary for a period. However, it does not explicitly mention when to use this tool instead of alternatives or any exclusions, such as if a per-client breakdown is needed.
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.
6 tool updates
v0.2.0- Added
chantier - Changed
chantiers1 field changed- added
Input schema / properties / client_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Client Id" +}
- Changed
creer_devis_brouillon3 fields changed- added
Input schema / properties / delai_executionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Delai Execution" +} - added
Input schema / properties / notesAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Notes" +} - added
Input schema / properties / validite_joursAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Validite Jours" +}
- Added
export_fec - Added
journal_achats - Added
journal_ventes
11 tool updates
v0.1.1- First observed
ajouter_depense - First observed
chantiers - First observed
clients - First observed
creer_devis_brouillon - First observed
depenses - First observed
facture - First observed
factures - First observed
factures_impayees - First observed
marge_chantier - First observed
marquer_facture_payee - First observed
recap_tva
TDQS
Scored across 15 tools
Most tools target clearly distinct resources or views: factures vs facture, chantiers vs chantier, depenses vs journal_achats, etc. The singular/plural list-detail pairs and the subset relationship between factures and factures_impayees create some potential confusion, but descriptions make the boundaries usable.
The set mixes bare French nouns (factures, chantiers, clients), compound nouns (marge_chantier, journal_ventes, recap_tva), and imperative verb phrases (creer_devis_brouillon, marquer_facture_payee, ajouter_depense). Singular/plural is used meaningfully for list vs detail, but there is no single predictable verb_noun convention.
Fifteen tools sit in the upper end of the well-scoped range, but each tool has a clear role in the invoicing/accounting workflow. There is no obvious filler or redundant read-only tool.
The surface covers listing/detail reads, accounting journals, VAT summaries, FEC export, expense entry, payment marking, and draft quote creation. However, it lacks create/update/delete operations for clients, chantiers, and invoices, and the quote lifecycle stops at draft creation, which are notable gaps for an invoicing/accounting domain.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
- Frihet ERPOAuthio.frihet
AI-native ERP MCP: ES/EU fiscal compliance (VeriFactu/TicketBAI/Facturae), invoicing, tax, banking
MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for Invoice Ninja v5 API. Enables AI assistants to manage clients, invoices, quotes, payments, and time tracking through natural language.3220 npm2MIT
- AlicenseNot gradedqualityDmaintenanceMCP server enabling AI assistants to manage invoices, contacts, products, and other accounting data through the Bukku API.6MIT
- AlicenseAqualityCmaintenanceMCP server for Spanish accounting for freelancers and SMEs, enabling AI agents to issue invoices, OCR expense PDFs, reconcile bank transactions, and prepare quarterly VAT (Modelo 303).23MIT
- FlicenseNot gradedqualityBmaintenanceMulti-tenant MCP server connecting accounting software to AI assistants via ~87 tools. Supports Bokio (Swedish accounting) with mock mode for development.-