voxfactura-mcp
Server Quality Checklist
Latest release: v0.1.1
- Disambiguation4/5
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.
Naming Consistency5/5All 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.
Tool Count5/5With 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.
Completeness3/5Read 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.
Average 3.9/5 across 11 of 11 tools scored. Lowest: 3.2/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 3 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
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.
Conciseness5/5Is 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.
Completeness2/5Given 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.
Parameters3/5Does 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.
Purpose4/5Does 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.
Usage Guidelines3/5Does 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.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of 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.
Conciseness5/5Is 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.
Completeness3/5Given 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.
Parameters4/5Does 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.
Purpose5/5Does 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.
Usage Guidelines2/5Does 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.
- Behavior3/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters4/5Does 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.
Purpose5/5Does 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.
Usage Guidelines2/5Does 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.
- Behavior3/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines3/5Does 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.
- Behavior3/5
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.
Conciseness5/5Is 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.
Completeness3/5Given 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.
Parameters4/5Does 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.
Purpose5/5Does 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.
Usage Guidelines3/5Does 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.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of 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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
- Behavior4/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines3/5Does 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the 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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters2/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the 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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
- Behavior3/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters4/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
- Behavior4/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters4/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mqrtingaler/voxfactura-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server