voxfactura-mcp
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) | — |
| 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 | chantiers |
| Liste / recherche clients | clients |
| CA facturé − dépenses d'un chantier | factures + dépenses |
| TVA collectée / déductible / nette | 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
11 toolsajouter_depenseA
Ajoute une dépense (permission expenses:write). Montants en texte (ex. « 240.00 »). Rattache à un chantier via chantier_id.
| 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 provided, the description carries the full burden. It discloses that the operation requires 'expenses:write' permission, that amounts are passed as text (e.g., '240.00'), and that it attaches to a chantier via chantier_id. This adds meaningful behavioral context beyond the schema, though it does not detail side effects or return values.
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 consists of three short clauses that front-load the action and provide only essential details. Every sentence contributes: the action, the permission, the format, and the relation. No filler 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 7-parameter create tool with no output schema and no annotations, the description covers the main aspects an agent needs: the operation, permission, amount format, and chantier association. It does not describe return values or error conditions, but given the simple creation semantics, this appears sufficient for basic invocation.
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 adds valuable semantics for key parameters: 'Montants en texte' clarifies that monetary amounts are strings, and 'Rattache à un chantier via chantier_id' explains the foreign key usage. While other parameters like 'designation' and 'fournisseur' are self-explanatory by name, the description could have elaborated more systematically, but the most critical ones are covered.
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 starts with 'Ajoute une dépense' (Adds an expense), which is a specific verb+resource. It clearly distinguishes the tool from siblings like 'depenses' (list) by indicating this is the create operation. The mention of permission and chantier linkage further clarifies 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 clearly implies when to use the tool: when adding an expense. It provides sufficient context by stating the permission and the chantier linking behavior. However, it does not explicitly mention exclusions or alternatives among siblings, so it falls 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.
chantiersA
Liste les chantiers, éventuellement filtrés par statut (en_cours, termine…).
| Name | Required | Description | Default |
|---|---|---|---|
| statut | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that this is a read-only list operation and mentions filtering by status. It does not detail return format or side effects, but for a simple list tool, this is minimally sufficient.
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 that conveys the action and the optional filter. No wasted words.
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?
The tool is simple with one optional parameter and no output schema. The description covers the core list functionality and filter option, but the ellipsis ('…') does not enumerate all possible statuses, leaving the agent to guess the full set. It is adequate but has gaps.
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 provides a single 'statut' parameter with no description and no enum values. The description adds meaning by giving example values ('en_cours, termine…') and indicating the filter is optional ('éventuellement'), which helps the agent understand expected values and behavior.
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 'chantiers' (construction sites) with an optional status filter, using a specific verb and resource. It distinguishes from sibling tools like 'marge_chantier' (margin calculation) and 'clients' (client list) by focusing on the chantier entity.
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: call this to list chantiers, optionally filtered by status. It does not explicitly mention when to prefer this over alternatives or provide exclusions. However, the context is clear enough for a simple list tool.
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). Chaque ligne : {designation, quantite, prix_unitaire_ht, taux_tva}. Le devis n'est jamais envoyé automatiquement : l'artisan le relit et l'envoie dans VoxFactura.
| Name | Required | Description | Default |
|---|---|---|---|
| objet | No | ||
| lignes | Yes | ||
| client_id | Yes | ||
| 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 burden. It discloses the permission required (devis:write), the draft state, and the non-sending behavior, which are key side-effects. However, it doesn't mention return values or error handling, leaving some behavioral aspects undisclosed.
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 only two sentences, front-loaded with the main action. Every sentence adds value: the first defines the operation and permission, the second details line structure and the non-sending behavior. No redundancy.
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 creation tool with no annotations or output schema, this description covers the core context: purpose, permission, line item schema, and post-creation behavior. Missing details like return format or parameter constraints are minor gaps given the simple create operation.
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 specifies the structure of the 'lignes' array items ({designation, quantite, prix_unitaire_ht, taux_tva}), which is essential. However, it does not explain 'client_id', 'chantier_id', or 'objet', though some are inferred by their names.
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's function: 'Crée un devis en BROUILLON' (creates a draft quote). The verb+resource+state is specific, and it distinguishes itself from sibling tools like factures and clients by focusing on devis creation.
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 explains that the devis is never sent automatically, indicating the tool is for drafts only and the user must later review/send it in VoxFactura. This provides clear usage context, though it doesn't explicitly mention alternative tools for sending or managing quotes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depensesA
Liste les dépenses (factures de frais), filtrables par chantier 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 burden of behavioral disclosure. It states the primary read behavior ('Liste') and the filtering capability, but does not disclose return format, pagination, ordering, or potential side effects. For a list tool, this is adequate but not rich.
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, well-structured sentence that front-loads the core action ('Liste les dépenses') followed by the filtering detail. Every word earns its place; there is no redundancy or extraneous 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?
Given the tool's simplicity (two optional filters, no output schema, no annotations), the description provides the essential context: what it does and how to filter. It does not explain return values in detail, but the verb 'Liste' implies a list response. It lacks pagination/ordering details, but for a basic list tool, this is acceptable.
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 0% description coverage, but the tool description explicitly states that the parameters are filters ('filtrables par chantier ou catégorie'), mapping directly to 'chantier_id' and 'categorie'. This adds meaningful semantics beyond the bare parameter titles and defaults, though it does not specify exact formatting or value 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 states the specific verb 'Liste' (lists) and the resource 'dépenses (factures de frais)' (expenses/expense invoices), clearly distinguishing it from siblings like 'factures' (invoices) and 'ajouter_depense' (add expense). It also mentions the filtering capability, making the purpose precise and unambiguous.
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 clearly implies when to use this tool (when you need to list expenses) and highlights its filter options (chantier or category). It does not explicitly name alternatives or exclusions, but the context and naming relative to siblings provide sufficient guidance for a simple list tool.
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 identifiant.
| Name | Required | Description | Default |
|---|---|---|---|
| facture_id | Yes |
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. It mentions that the response includes line items ('lignes comprises'), but does not address error conditions, required permissions, or response format. This is minimal but not misleading for a simple fetch-by-ID 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, concise sentence. It immediately states the core purpose ('Détail d'une facture'), then adds the essential scope ('lignes comprises') and lookup method ('par son identifiant'). 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?
Given the tool's low complexity (one parameter, no nested objects, no output schema), the description adequately covers its main function: retrieving a detailed invoice with lines by ID. Missing error-handling or response-shape details are minor given the simplicity, but a brief note on return structure would improve completeness.
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 one parameter 'facture_id' with no description (0% coverage). The description's 'par son identifiant' clarifies that this parameter is the invoice identifier, adding meaning beyond the raw schema. However, it does not provide examples or constraints beyond the integer type already in the schema.
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's function: 'Détail d'une facture (lignes comprises) par son identifiant' specifies a detail/get action on the invoice resource, including line items. It distinguishes itself from the sibling tool 'factures' (likely a list) by emphasizing the singular detail aspect and identifier-based 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?
The phrase 'par son identifiant' implies the tool is used when you have a specific invoice ID and need its full details, distinguishing it from the sibling 'factures' list tool. However, it does not explicitly state when not to use it or name alternatives, leaving some room for interpretation.
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.
| 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?
No annotations are provided, so the description carries the full burden of revealing behavioral traits. It only states that it lists invoices and can filter; it does not disclose whether the operation is read-only, any side effects, authentication requirements, or pagination behavior. This is a significant gap for a tool with no annotation support.
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 that states the primary purpose and key optional filters. It is concise with no unnecessary words, making it easy for an agent to parse quickly.
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, no annotations, and three optional parameters, the description is minimal. It does not explain what the returned list contains (beyond 'factures'), does not mention the limit parameter's existence or default, and does not clarify how this tool relates to siblings like 'factures_impayees' or 'facture'. The ambiguity around 'émises' could confuse an agent selecting between tools.
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?
With 0% schema description coverage, the description must compensate. It explains that the tool can be filtered by 'statut' and 'chantier' (mapping to statut and chantier_id), but it does not address the 'limit' parameter or provide any detail on accepted status values. Partial compensation, but incomplete.
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 the specific verb 'Liste' (lists) and identifies the resource as 'factures émises' (issued invoices), which clearly indicates a listing operation. It does not explicitly distinguish from sibling tools like 'factures_impayees' or 'facture', but the scope is reasonably clear.
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 optional filtering by status or site, which implies the tool is used for browsing invoices with those filters. However, it does not provide explicit guidance on when to use this tool versus alternatives like 'factures_impayees' for unpaid invoices or 'facture' for a single invoice.
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.
marge_chantierA
Marge d'un chantier : 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?
With no annotations, the description carries the full burden. It discloses the calculation method (invoiced revenue minus expenses) and the required permissions, which are key behavioral details. It does not mention return format or error behavior, but the formula and permission requirement provide substantial transparency for a simple read/calculation tool.
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 short sentences, both informative: the first defines the calculation, the second states the permission requirement. No redundant or filler content. Information is front-loaded with the purpose immediately.
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 one-parameter calculation tool with no output schema and no annotations, the description adequately covers the core purpose, calculation, and permission precondition. It could optionally specify the return format (e.g., currency), but the overall context is complete enough for an agent to invoke the tool correctly.
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 one parameter, chantier_id, with 0% coverage in the description. The description does not explain what chantier_id represents or how to provide it, relying entirely on the parameter name and tool name for inference. Since schema coverage is low, the description should compensate but does not.
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 defines the tool as computing the margin of a job site, with an explicit formula ('chiffre d'affaires facturé moins les dépenses'). This specific verb+resource+definition distinguishes it from siblings like factures, depenses, and chantiers, which are list/creation tools.
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 clear context for when to use the tool: to obtain a margin for a chantier. It also states a prerequisite (permissions for factures and dépenses). While it does not explicitly name alternatives or exclusions, the tool's uniqueness and the provided formula make its intended usage unambiguous.
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). 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?
The description discloses the required permission (payments:write) and explains the meaning of an empty montant (full payment) versus a filled one (partial), adding behavioral context beyond the schema. However, it does not mention side effects, reversibility, or error handling for already-paid invoices.
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 that states the primary action first, followed by concise and relevant parameter detail. There is no extraneous information, and every phrase adds value.
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 mutation tool, the description covers the primary action, required permission, and parameter semantics. It lacks details on return values or possible errors, but the tool is straightforward and no output schema is present, so this is reasonably 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 adds meaning to the `montant` parameter by specifying its textual format (e.g., '500.00') and the distinction between empty (total balance) and non-empty (partial payment), which the schema does not convey. The `facture_id` parameter is not explained, but its purpose is evident from its name and the tool's function.
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's function with a specific verb ('Marque') and resource ('une facture payée'), making its purpose unambiguous. It also distinguishes this tool from siblings like 'factures_impayees' which lists unpaid invoices, whereas this tool performs the action of marking one as paid.
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 the tool is used to mark an invoice as paid and explains partial payment behavior, but it does not explicitly state when to use this tool over alternatives or offer any exclusion criteria. The context is clear but not formalized.
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.
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 11 tools
Most tools target distinct resources/actions, but 'factures_impayees' overlaps with 'factures' since the latter can filter by status. 'marge_chantier' and 'recap_tva' are both summary tools but on different metrics, so they remain clear.
All tool names follow a consistent pattern: lowercase with underscores, plural nouns for list operations, singular for detail, and verb_noun for mutations. Predictable and coherent across the set.
With 11 tools, the set is well-scoped for a billing/accounting domain, covering clients, projects, invoices, expenses, quotes, VAT, and margin without bloat or redundancy.
Read operations are solid, and some writes exist (create devis, add expense, mark paid), but there are notable gaps: no create_invoice, no update/delete for factures, clients, or chantiers, limiting full lifecycle workflows.
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.3216 npm2MIT
- AlicenseNot gradedqualityDmaintenanceMCP server enabling AI assistants to manage invoices, contacts, products, and other accounting data through the Bukku API.6MIT
- AlicenseAqualityAmaintenanceMCP 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.-