mcp-server-dolibarr
Click on "Install 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., "@mcp-server-dolibarrlist all commercial proposals from last month"
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.
mcp-server-dolibarr
An MCP server for Dolibarr ERP/CRM. Lets Claude (or any MCP-compatible client) read and manage your Dolibarr thirdparties (clients/suppliers), commercial proposals, contracts, and invoices directly — no manual API scripting needed.
Built by Nexora 360 Digital, released for anyone running Dolibarr to use for free.
Requirements
A running Dolibarr instance (v15+) with the REST API module enabled (Setup → Modules → API)
A Dolibarr API key for the user the assistant should act as (your user profile → API/REST tab → Generate Key)
Node.js 18 or newer
Related MCP server: clio-mcp
Installation
No install needed — run it directly with npx (see configuration below), or clone this repo and run npm install.
Configuration
The server reads two environment variables:
Variable | Description | Example |
| Your Dolibarr REST API base URL |
|
| The API key generated for your Dolibarr user |
|
Claude Code
claude mcp add dolibarr \
--env DOLIBARR_URL=https://your-domain.com/dolibarr/api/index.php \
--env DOLIBARR_API_KEY=your_api_key_here \
-- npx -y mcp-server-dolibarrClaude Desktop / other MCP clients
Add to your MCP config file (e.g. claude_desktop_config.json):
{
"mcpServers": {
"dolibarr": {
"command": "npx",
"args": ["-y", "mcp-server-dolibarr"],
"env": {
"DOLIBARR_URL": "https://your-domain.com/dolibarr/api/index.php",
"DOLIBARR_API_KEY": "your_api_key_here"
}
}
}
}Available tools
Connectivity
dolibarr_ping— verify the URL/API key are working
Thirdparties (clients/suppliers)
dolibarr_list_thirdpartiesdolibarr_get_thirdpartydolibarr_find_thirdparty_by_emaildolibarr_create_thirdpartydolibarr_update_thirdparty
Commercial Proposals (Quotes)
dolibarr_list_proposalsdolibarr_get_proposaldolibarr_create_proposaldolibarr_add_proposal_linedolibarr_validate_proposal
Contracts
dolibarr_list_contractsdolibarr_get_contractdolibarr_create_contractdolibarr_add_contract_line
Invoices
dolibarr_list_invoicesdolibarr_get_invoicedolibarr_create_invoicedolibarr_add_invoice_linedolibarr_validate_invoicedolibarr_get_invoice_pdf_url
Anything else
dolibarr_request— raw passthrough to any Dolibarr REST endpoint (/products,/users,/projects, etc.) for the parts of Dolibarr's huge API surface this server doesn't wrap explicitly yet.
Notes & known Dolibarr quirks
Proposals, contracts and invoices are created in two steps in Dolibarr's API: create the header first, then add line items separately (
*_linesendpoints). The tools above mirror that.Dolibarr 23.x line-creation silent-failure bug: on Dolibarr 23 instances,
POST /{proposals|invoices|contracts}/{id}/linesactually expects the body wrapped as{"request_data": {...fields...}}, not a flat object of fields (despite this not matching the field names documented for older Dolibarr versions). Sending a flat object doesn't error — it silently creates a blank line withspecial_code: "3"(no description, qty 0, price 0) instead of your real data.dolibarr_add_proposal_line,dolibarr_add_invoice_lineanddolibarr_add_contract_linealready wrap the body correctly to work around this. If you see blank/special_code: 3lines appearing on Dolibarr versions other than 23.x, check your instance's live schema at/api/index.php/explorer/swagger.jsonand adjustindex.jsaccordingly — Dolibarr's REST API shape has changed across major versions.On some Dolibarr versions, certain endpoints (e.g. contracts) only work reliably for admin/SuperAdmin API keys — if a non-admin key fails, try generating the key as an admin user.
country_idfor thirdparties follows Dolibarr's internal country table (e.g.144= Sri Lanka in standard Dolibarr installs) — check your instance if unsure.
Contributing
Issues and PRs welcome — this was built to scratch a real itch (managing client proposals/invoices via Claude) and intentionally keeps a dolibarr_request escape hatch so it stays useful even where dedicated tools haven't been written yet.
License
MIT — see LICENSE.
Available Tools
22 toolsdolibarr_add_contract_lineB
Add a line item to an existing contract (e.g. an annual hosting/maintenance service).
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | Yes | ||
| description | Yes | ||
| subprice | Yes | ||
| qty | No | ||
| tva_tx | No | ||
| date_start | No | Unix timestamp | |
| date_end | No | Unix timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states 'Add', but does not explain side effects, error conditions, or any constraints. For a mutation tool, this is insufficient.
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, well-formed sentence that is front-loaded and contains no fluff. Every word serves a purpose.
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 lack of output schema, sparse schema descriptions, and absence of annotations, the description is too minimal. It does not provide enough context for an agent to use the tool correctly without additional knowledge.
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 schema description coverage at only 29%, the description adds minimal parameter context (only an example). It fails to explain key fields like subprice, qty, or tva_tx, leaving gaps.
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 action ('Add') and the resource ('line item to an existing contract'), with an example that clarifies typical use. It is distinct from sibling tools like add_invoice_line or add_proposal_line.
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 use when an existing contract exists, but does not provide explicit guidance on when to use versus alternatives (e.g., creating a new contract vs. adding a line). No when-not-to or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_add_invoice_lineC
Add a line item to an existing draft invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | ||
| desc | Yes | ||
| subprice | Yes | ||
| qty | No | ||
| tva_tx | No | ||
| product_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It does not mention that adding a line item modifies the invoice, that the invoice must be in draft status, or any other side effects (e.g., recalculating totals). No authentication or error states are indicated.
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 with no fluff, achieving conciseness. However, it is too brief, lacking necessary details to be effective. The sentence structure is clear but under-specified.
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 complexity (6 parameters, no output schema, no annotations), the description is woefully incomplete. It does not explain return values, parameter formats, or preconditions, leaving the agent to guess critical usage details.
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 input schema has 0% description coverage, and the tool description adds no meaning to any parameter. The agent must infer from parameter names alone (e.g., 'subprice', 'tva_tx'), which is insufficient for correct invocation.
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 action ('Add a line item') and the target ('existing draft invoice'). It distinguishes from sibling tools like dolibarr_add_contract_line and dolibarr_add_proposal_line by specifying 'invoice'. However, it could be more precise by noting that only draft invoices are valid targets.
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 provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., invoice must be in draft status). It implies usage for adding line items but lacks explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_add_proposal_lineC
Add a line item to an existing commercial proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | Yes | ||
| desc | Yes | Line description | |
| subprice | Yes | Unit price excl. tax | |
| qty | No | ||
| tva_tx | No | Tax rate, e.g. 0 or 15 | |
| product_type | No | 0 = product, 1 = service |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'add', implying a write operation, but does not disclose side effects, permissions, or constraints (e.g., proposal must be editable, no mention of idempotency).
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, clear sentence with no unnecessary words. Perfectly concise and front-loaded with the key action and resource.
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 exists, and the description does not explain return values or side effects. Missing context about prerequisites (proposal existence), error cases, and typical usage patterns for a mutation tool.
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 no information about parameters beyond the input schema. Schema coverage is 67% (4 of 6 parameters have descriptions), which is moderate. The description does not compensate for the two undocumented parameters (proposal_id, qty), but the schema itself provides adequate detail for the rest.
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 action 'Add a line item' and the resource 'existing commercial proposal'. It is specific but does not differentiate from sibling tools that add lines to other resources (e.g., contracts, invoices), though the resource name itself distinguishes 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?
No guidance on when to use this tool vs. alternatives (e.g., creating a new proposal). No prerequisites mentioned, such as requiring the proposal to be in draft state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_create_contractB
Create a new contract header. Add line items afterwards with dolibarr_add_contract_line.
| Name | Required | Description | Default |
|---|---|---|---|
| socid | Yes | Thirdparty (client) ID | |
| date_contrat | No | Unix timestamp; defaults to now if omitted | |
| note_public | No | ||
| note_private | No | ||
| commercial_signature_id | No | Dolibarr user ID who signed internally | |
| commercial_suivi_id | No | Dolibarr user ID following up the account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description lacks any behavioral details such as return value, idempotency, permissions, or side effects. Since no annotations are provided, the description carries full burden but only states the action without further 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?
Very concise with two sentences. No wasted words, but could benefit from adding more value without increasing length significantly.
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 6 parameters, no output schema, and no annotations, the description is insufficient. It omits return value, required permissions, and failure behavior.
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 67%, leaving some parameters undocumented in both schema and description. The description adds no parameter-level information beyond what's 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?
Clearly states 'Create a new contract header' with specific verb and resource. Distinguishes from sibling tools by noting that line items are added separately via dolibarr_add_contract_line.
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?
Explicitly tells when to use (to create a contract header) and when not (lines are added later), and names the alternative sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_create_invoiceA
Create a new invoice header (draft). Add line items afterwards with dolibarr_add_invoice_line, then validate it.
| Name | Required | Description | Default |
|---|---|---|---|
| socid | Yes | Thirdparty (client) ID | |
| date | No | Unix timestamp; defaults to now if omitted | |
| note_public | No | ||
| note_private | No | ||
| cond_reglement_code | No | ||
| fk_proposal | No | Source proposal ID, if converting a quote to invoice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states only that the invoice is created as a draft, but does not disclose side effects, permissions required, or behavior around parameters like cond_reglement_code. Minimal but adequate.
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 with no unnecessary words. It front-loads the primary purpose and adds a helpful workflow note, every part earns its place.
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 6 parameters, no output schema, and no annotations, the description is minimally complete. It correctly identifies the tool's role and subsequent steps but lacks details about required fields, return values, or parameter format (e.g., date should be Unix timestamp). Adequate but could be richer.
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 50% (3 of 6 parameters have descriptions). The description adds no parameter information at all, failing to compensate for the undocumented parameters (note_public, note_private, cond_reglement_code). It adds no value beyond 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?
Description explicitly states 'Create a new invoice header (draft)', using a specific verb and resource. It clearly distinguishes from siblings like dolibarr_add_invoice_line and dolibarr_validate_invoice by outlining the workflow.
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 provides a clear workflow: create header, then add lines with a sibling tool, then validate. It implies when to use this tool (initial creation) and when to use alternatives, though it doesn't explicitly state 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.
dolibarr_create_proposalA
Create a new commercial proposal (quote) header. Add line items afterwards with dolibarr_add_proposal_line.
| Name | Required | Description | Default |
|---|---|---|---|
| socid | Yes | Thirdparty (client) ID | |
| date | No | Unix timestamp; defaults to now if omitted | |
| duree_validite | No | Validity in days, e.g. 30 | |
| note_public | No | ||
| note_private | No | ||
| cond_reglement_code | No | Payment terms code, e.g. '30D', 'RECEP' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must bear the burden. It discloses that only the header is created and that lines are added separately, which is useful. However, it lacks details on side effects, authentication needs, or error conditions.
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 with two clear, front-loaded clauses. Every word serves a purpose, with 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?
Given the moderate complexity (6 parameters, 1 required) and no output schema or annotations, the description provides essential information about the tool's purpose and workflow linkage. It could be enhanced with a brief note on required parameters, but the schema already covers that.
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 input schema covers 67% of parameters with descriptions. The tool description does not add extra meaning beyond the schema, so a baseline score of 3 is appropriate.
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 verb 'Create' and the resource 'commercial proposal (quote) header'. It also distinguishes from sibling tools by noting that line items are added with dolibarr_add_proposal_line, making the purpose 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 implies when to use: create header first, then add lines via a sibling. It does not explicitly state when not to use or provide alternatives, but the context of sibling tools makes the usage pattern clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_create_thirdpartyC
Create a new thirdparty (client/supplier) in Dolibarr.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company / contact name | |
| No | |||
| phone | No | ||
| address | No | ||
| country_id | No | Dolibarr country ID, e.g. 144 = Sri Lanka | |
| client | No | 1 = is a client | |
| fournisseur | No | 1 = is a supplier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. Only states it creates a new thirdparty, missing details on authorization, side effects, or idempotency.
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?
Single sentence, concise. Could include slightly more detail without harming conciseness.
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 7 parameters, no output schema, and no annotations, the description is too minimal. Doesn't explain return values, error handling, or typical usage patterns.
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?
Description adds no parameter context beyond what's in schema. Schema coverage is 57%, but description doesn't clarify relationships (e.g., client vs fournisseur) or usage 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 clearly states the verb (create), resource (thirdparty), and context (Dolibarr, client/supplier). It distinguishes from sibling tools like update_thirdparty or list_thirdparties.
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 on when to use this tool vs alternatives (e.g., when to use create vs update), no prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_find_thirdparty_by_emailA
Find a Dolibarr thirdparty (client/supplier) by email address.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Find' suggests a read operation, but it does not disclose return format, multiplicity, error behavior, or case sensitivity. Minimal disclosure.
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?
Single sentence that is front-loaded with the action. No wasted words. Efficient and clear.
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?
Adequate for a simple lookup with one parameter and no output schema. Missing information about return value (e.g., entire object or just ID) and potential multiple matches.
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 'email' with format email, and the description reinforces 'by email address'. Despite 0% schema description coverage, the parameter is self-explanatory. Score 4 because the description adds no extra insight beyond 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 finds a thirdparty by email, specifying the entity type as client/supplier. This distinguishes it from siblings like dolibarr_get_thirdparty (likely by ID) and dolibarr_list_thirdparties (lists all).
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 using this tool when you have an email address, but does not explicitly state when not to use it or mention alternatives. It provides clear context but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_get_contractA
Get a single contract, including its lines, by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| 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 adds value by specifying that lines are included, but does not disclose other behavioral traits such as response format, error handling (e.g., not found), or authentication needs.
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, efficient sentence with no wasted words. Every piece of information (get, contract, including lines, by ID) is essential and front-loaded.
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 simplicity of the tool (single param, no output schema), the description is minimally adequate but lacks completeness. It does not explain the return structure, pagination (if any), or what 'including its lines' entails. A richer description would improve agent understanding.
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%, but the description does not add meaning beyond the schema (e.g., it restates 'by ID' but doesn't detail expected format, constraints, or relationships). Since there is only one parameter, the lack of additional semantic context is a 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 clearly states the verb 'Get', the resource 'contract', and the scope 'single, including its lines, by ID'. It effectively distinguishes from sibling tools like 'dolibarr_list_contracts' which lists multiple contracts.
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 when retrieving a specific contract by ID but does not provide explicit guidance on when to use versus alternatives (e.g., using list to find the ID first). No exclusion criteria or context-sensitive advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_get_invoiceA
Get a single invoice, including its lines and payment status, by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states read operation but does not disclose error behavior, permissions, or rate limits. Adequate for simple get, but minimal.
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?
Single sentence, no wasted words, key information front-loaded.
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?
Covers what is returned (lines, payment status). No output schema, but for a simple get tool, description is sufficient. Missing error cases but minimal impact.
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 0%, description adds 'by ID' context but does not explain that id is the invoice identifier beyond schema. Some added value, but could be more explicit.
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?
Clear verb 'Get' and resource 'single invoice', with scope 'including its lines and payment status' and method 'by ID'. Distinguishes from siblings like list_invoices or create_invoice.
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?
Implies usage when retrieving a specific invoice with details, but no explicit when-not or comparison to alternatives like list_invoices or validate_invoice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_get_invoice_pdf_urlA
Build the Dolibarr web URL where a generated invoice PDF can be downloaded/printed in the browser (requires a logged-in Dolibarr session).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that it builds a URL and requires a logged-in session, but does not explain behavior for invalid IDs, missing invoices, or whether it checks existence. Partially transparent.
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 is front-loaded with the action and efficiently communicates purpose and a key requirement. 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?
Given the tool's simplicity (one parameter, no output schema), the description is fairly complete. It explains the output and a prerequisite. Minor gaps about error conditions, but adequate for typical use.
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 description must compensate. The description does not explain what the 'id' parameter refers to, though context suggests it is the invoice ID. It adds no meaning beyond 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 action (build a web URL), the resource (invoice PDF), and distinguishes from sibling tools that perform CRUD operations on invoices. It explains the output and a prerequisite (logged-in session).
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 when a download URL for an invoice PDF is needed, and mentions the session requirement. However, it does not explicitly state when not to use it or provide alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_get_proposalA
Get a single commercial proposal (quote), including its lines, by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, and description does not disclose potential errors, prerequisites, or side effects beyond returning the object with lines.
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?
Single, front-loaded sentence with no unnecessary 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?
For a simple get-by-ID with one parameter, the description is mostly complete; could mention error handling but not critical.
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 parameter 'id' lacks description; tool description adds minimal context ('by ID') but does not fully compensate for 0% schema coverage.
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?
Clearly states it retrieves a single proposal including its lines by ID, distinguishing from list and create 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?
No explicit when-to-use or alternatives, but the description implies use with a specific ID; missing guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_get_thirdpartyA
Get a single Dolibarr thirdparty (client/supplier) by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| 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 correctly identifies this as a read operation, but does not disclose potential behaviors such as error handling (e.g., returns null if not found) or authentication requirements. The description is minimally sufficient for a simple get-by-ID.
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, compact sentence with no extraneous words. Information is front-loaded and precise.
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 retrieval tool with one parameter and no output schema, the description covers the essential purpose. However, it could be slightly improved by mentioning the return value or error behavior, but it is not critically missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only restates the parameter name ('by its ID') and adds no new meaning beyond the schema's property name 'id'. With 0% schema description coverage, this is insufficient compensation. The parameter is self-explanatory, but the description should ideally clarify the ID's format or 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 clearly states the action (Get), resource (thirdparty), and identifier method (by its ID). This distinguishes it from sibling tools like dolibarr_find_thirdparty_by_email and dolibarr_list_thirdparties.
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 when you have the thirdparty ID, but does not explicitly state when to use it versus alternatives (e.g., find by email or list all). The agent must infer the context from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_list_contractsC
List contracts in Dolibarr.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sortfield | No | ||
| sortorder | No | ||
| sqlfilters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavioral traits. It only states 'List contracts', failing to mention read-only nature, pagination behavior, rate limits, or any side effects. The agent cannot infer safety or performance characteristics.
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 extremely concise (4 words) but at the cost of being under-specified. For a tool with four parameters and no other documentation, this brevity leaves critical information missing, making it insufficient rather than efficient.
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 absence of annotations, output schema, and parameter descriptions, the description must compensate but fails entirely. It omits details about parameter behavior, response format, and operational constraints, leaving the tool largely unexplained.
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% with no parameter descriptions. The description does not explain what parameters like limit, sortfield, sortorder, or sqlfilters mean, nor their constraints or typical use. The agent must guess their semantics from names alone, risking misuse.
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 action (list) and resource (contracts in Dolibarr), making the basic purpose unambiguous. However, it does not distinguish this tool from sibling list tools like dolibarr_list_invoices or dolibarr_list_proposals, which share the same verb and similar resource patterns.
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 provides no guidance on when to use this tool versus alternatives (e.g., dolibarr_get_contract for a single contract) or any context about prerequisites or limitations. The single sentence offers no usage strategy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_list_invoicesC
List invoices in Dolibarr.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sortfield | No | ||
| sortorder | No | ||
| sqlfilters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description bears full burden for behavioral disclosure. It only implies a read operation ('list'), but omits details about authentication, safety, output format, or any side effects. Minimal transparency.
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?
Description is extremely concise but underspecified for a tool with 4 parameters. It fails to front-load important context, and every sentence does not earn its place because critical information is missing.
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 absence of annotations, output schema, and parameter descriptions, the tool's description is severely incomplete. It neither explains return values nor provides enough context for effective use.
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% and the description adds no parameter information. Parameters like limit, sortfield, sortorder, and sqlfilters are unexplained, leaving the agent to guess their semantics.
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?
Description clearly states the action ('list') and resource ('invoices'), making the purpose clear. However, it does not distinguish this tool from sibling list tools like dolibarr_list_contracts, which is a minor gap.
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 on when to use this tool versus alternatives, nor any prerequisites or context for proper usage. The description is purely functional without directional hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_list_proposalsC
List commercial proposals (quotes) in Dolibarr.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sortfield | No | ||
| sortorder | No | ||
| sqlfilters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but fails to disclose behavioral traits such as default sorting, pagination, authentication requirements, or response format. The description is purely functional.
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, which is concise but overly minimal for a tool with four parameters. It sacrifices necessary detail for brevity.
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 no annotations, no output schema, and 0% schema description coverage, the description is severely incomplete. It lacks information on pagination, default behavior, filtering syntax, and return structure, making it inadequate for correct tool use.
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 description does not mention any parameters. The four parameters (limit, sortfield, sortorder, sqlfilters) are left completely unexplained, offering no help 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 action (list) and the resource (commercial proposals/quotes) with specificity, and it distinguishes from sibling tools like get_proposal (single) or create_proposal.
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 like list_invoices or list_contracts. The description only states what it does without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_list_thirdpartiesA
List thirdparties (clients/suppliers) in Dolibarr. Supports basic filtering and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 100) | |
| page | No | Zero-based page index | |
| sortfield | No | Field to sort by, e.g. 't.nom' | |
| sortorder | No | ||
| sqlfilters | No | Dolibarr SQL filter string, e.g. (t.client:=:1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It indicates this is a list operation with filtering/pagination, implying read-only behavior. However, does not explicitly state that it's non-destructive or require any authorization, leaving room for ambiguity.
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, no unnecessary words. Front-loaded with the main purpose, efficiently covers filtering and pagination. Every sentence earns its place.
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 well-documented schema (80% coverage), the description is adequate. It communicates the core functionality and distinguishes from other list tools. Could be enhanced with examples of filter strings, but not necessary for basic use.
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 80%, so most parameters are documented in the schema. The description adds 'basic filtering and pagination' which hints at the filter and pagination parameters, but adds minimal new meaning beyond 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 'List thirdparties (clients/suppliers)' with a specific verb and resource. It distinguishes from siblings like dolibarr_get_thirdparty (single) and dolibarr_create_thirdparty, but could be more explicit about listing all vs. specific thirdparties.
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?
Mentions 'basic filtering and pagination', indicating when to use it, but no explicit when-not or alternatives provided. Lacks guidance on when to prefer this over similar tools like dolibarr_find_thirdparty_by_email.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_pingA
Check that the configured Dolibarr URL and API key work, by fetching a single thirdparty record.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses it performs a GET request to fetch a thirdparty. No annotations exist, but the behavior is clear. However, it does not mention error handling or return 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?
Single sentence, no wasted words, effectively conveys the tool's purpose.
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, but the description lacks details about return value or success/failure indication. For a health-check tool, completeness could be higher.
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?
No parameters exist, so the baseline is 4. The description adds no parameter info, but none is needed.
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 it checks connectivity by fetching a thirdparty record. This distinguishes it from CRUD sibling 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 implies usage for testing connectivity, but does not explicitly mention when not to use or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_requestA
Make a raw authenticated request to any Dolibarr REST API endpoint not covered by the dedicated tools above (e.g. /products, /users, /projects, /agendaevents). Path is relative, e.g. '/products?limit=10'.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | ||
| path | Yes | Path relative to the API base, starting with '/' | |
| body | No | JSON body for POST/PUT requests |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States it's authenticated and raw, but lacks details on error handling, response format, or behavioral traits beyond that.
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 sentence with example, no fluff. Every sentence is informative and earns its place.
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 no output schema and no annotations, the description is fairly complete for a generic raw request tool but misses behavioral details like response structure.
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 67%. Description adds minimal value beyond schema, e.g., path example. Baseline 3 is appropriate.
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?
Description explicitly states the tool makes raw authenticated requests to Dolibarr REST API endpoints not covered by dedicated tools, with examples. This clearly distinguishes it from sibling 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?
Explicitly says 'not covered by the dedicated tools above', which directly guides when to use this tool versus alternatives. Also provides context on path format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_update_thirdpartyB
Update fields on an existing Dolibarr thirdparty.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| fields | Yes | Partial object of fields to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits (e.g., idempotency, partial update behavior, error handling). It only says 'update fields' without further detail.
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 concise at one sentence, but could be more informative without being long.
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 elaborate on the update behavior and acceptable field values. It is insufficient for the tool's 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?
The schema partially documents the 'fields' parameter, and the description adds no additional meaning. Baseline score for 50% coverage without extra info.
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 verb 'update' and the resource 'existing Dolibarr thirdparty', distinguishing it from create and read 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?
No guidance on when to use this tool versus alternatives (e.g., other update tools), prerequisites, or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_validate_invoiceC
Validate a draft invoice, assigning it a definitive invoice number.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It states that the tool assigns a definitive invoice number, implying a state change from draft to validated, but does not disclose side effects (e.g., whether the invoice becomes immutable, triggers workflows, or requires specific permissions). The description is too brief to cover behavioral traits.
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 of 8 words, efficiently conveying the core action and result. However, it may be overly concise, sacrificing explanatory value. Still, 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?
Given the tool's simplicity (one parameter, no output schema), the description is insufficient. It does not mention prerequisites (invoice must be in draft state), failure cases (if already validated), or return value. The agent lacks information to correctly handle edge cases.
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 for the single parameter 'id'. The description does not mention or explain the parameter, leaving the agent to infer that it refers to the invoice ID from context. It adds no meaning beyond what the schema provides.
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 action ('Validate a draft invoice') and the outcome ('assigning it a definitive invoice number'). It distinguishes from siblings like 'create_invoice' (creates a draft) and 'get_invoice' (retrieves without validation).
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. For example, it does not mention that the invoice must be in draft state or that validation is the final step before using the invoice. Siblings like 'dolibarr_validate_proposal' suggest a pattern, but no explicit when/when-not advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dolibarr_validate_proposalA
Validate (confirm) a draft commercial proposal so it can be sent to the client.
| Name | Required | Description | Default |
|---|---|---|---|
| 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 indicates a state change (from draft to validated) but does not disclose side effects, permissions required, whether the action is irreversible, or the response format. For a mutation tool, this is insufficient.
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-constructed sentence with no unnecessary words. It is front-loaded with the key action and resource.
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 has only one simple parameter, no output schema, and no annotations, the description is adequate but minimal. It provides the core purpose but lacks behavioral details that would help an agent understand side effects, state changes, or error conditions. It is complete enough for a straightforward action but not for robust usage.
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 description does not explicitly explain the 'id' parameter. However, the parameter is simple (integer, required) and its purpose is easily inferred from the tool name and context. The description adds no additional meaning beyond 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 action ('validate/confirm'), the resource ('draft commercial proposal'), and the goal ('so it can be sent to the client'). It effectively distinguishes from sibling tools like 'dolibarr_validate_invoice' by specifying proposals.
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 when a draft proposal needs validation, but lacks explicit guidance on when not to use it (e.g., if already validated), prerequisites (e.g., proposal must be in draft status), or alternatives. Compared to siblings, this is the only proposal validation tool, but no comparative guidance is provided.
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. Dates show when Glama detected each change.
22 tool updates
v1.0.0- First observed
dolibarr_add_contract_line - First observed
dolibarr_add_invoice_line - First observed
dolibarr_add_proposal_line - First observed
dolibarr_create_contract - First observed
dolibarr_create_invoice - First observed
dolibarr_create_proposal - First observed
dolibarr_create_thirdparty - First observed
dolibarr_find_thirdparty_by_email - First observed
dolibarr_get_contract - First observed
dolibarr_get_invoice - First observed
dolibarr_get_invoice_pdf_url - First observed
dolibarr_get_proposal - First observed
dolibarr_get_thirdparty - First observed
dolibarr_list_contracts - First observed
dolibarr_list_invoices - First observed
dolibarr_list_proposals - First observed
dolibarr_list_thirdparties - First observed
dolibarr_ping - First observed
dolibarr_request - First observed
dolibarr_update_thirdparty - First observed
dolibarr_validate_invoice - First observed
dolibarr_validate_proposal
TDQS
Each tool targets a distinct resource (contract, invoice, proposal, thirdparty) and action (create, add_line, get, list, validate, find, update). The catch-all 'dolibarr_request' tool is clearly distinguished as a generic fallback. There is no ambiguity or overlap.
All tools follow a consistent 'dolibarr_verb_noun' pattern (e.g., create_invoice, list_proposals). The only exception is 'dolibarr_request', which is a generic tool and intentionally deviates. Overall, naming is highly predictable and uniform.
22 tools cover multiple ERP entities (thirdparties, contracts, invoices, proposals) with appropriate CRUD-like operations. The number is well-scoped for a comprehensive integration without being excessive.
The tool set covers core workflows for thirdparties, contracts, invoices, and proposals, including creation, line addition, retrieval, listing, and validation. Missing are update and delete operations for most entities, but the raw request tool can compensate. Minor gaps in update/delete completeness.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Secure MCP server for exploring incwo CRM data, documents, and email workflows.
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables AI assistants like Claude to interact with Odoo ERP systems through natural language, allowing users to search, create, update, and manage business data in their Odoo instance.379Mozilla Public 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server for Clio Manage legal practice management software that enables Claude and other MCP clients to read and write Clio data including contacts, matters, and activities directly from chat.8MIT
- FlicenseNot gradedqualityDmaintenanceMCP server to connect Claude with Odoo 18, enabling CRUD operations on Odoo models via natural language.2-
- FlicenseNot gradedqualityAmaintenanceAn MCP server that connects Claude to FreshBooks, enabling reading and management of invoices, clients, expenses, projects, and time entries via natural language.1-
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/sachitha7/mcp-server-dolibarr'
If you have feedback or need assistance with the MCP directory API, please join our Discord server