Skip to main content
Glama
sachitha7

mcp-server-dolibarr

by sachitha7

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

DOLIBARR_URL

Your Dolibarr REST API base URL

https://your-domain.com/dolibarr/api/index.php

DOLIBARR_API_KEY

The API key generated for your Dolibarr user

abc123...

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-dolibarr

Claude 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_thirdparties

  • dolibarr_get_thirdparty

  • dolibarr_find_thirdparty_by_email

  • dolibarr_create_thirdparty

  • dolibarr_update_thirdparty

Commercial Proposals (Quotes)

  • dolibarr_list_proposals

  • dolibarr_get_proposal

  • dolibarr_create_proposal

  • dolibarr_add_proposal_line

  • dolibarr_validate_proposal

Contracts

  • dolibarr_list_contracts

  • dolibarr_get_contract

  • dolibarr_create_contract

  • dolibarr_add_contract_line

Invoices

  • dolibarr_list_invoices

  • dolibarr_get_invoice

  • dolibarr_create_invoice

  • dolibarr_add_invoice_line

  • dolibarr_validate_invoice

  • dolibarr_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 (*_lines endpoints). The tools above mirror that.

  • Dolibarr 23.x line-creation silent-failure bug: on Dolibarr 23 instances, POST /{proposals|invoices|contracts}/{id}/lines actually 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 with special_code: "3" (no description, qty 0, price 0) instead of your real data. dolibarr_add_proposal_line, dolibarr_add_invoice_line and dolibarr_add_contract_line already wrap the body correctly to work around this. If you see blank/special_code: 3 lines appearing on Dolibarr versions other than 23.x, check your instance's live schema at /api/index.php/explorer/swagger.json and adjust index.js accordingly — 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_id for 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 tools
dolibarr_add_contract_lineB

Add a line item to an existing contract (e.g. an annual hosting/maintenance service).

ParametersJSON Schema
NameRequiredDescriptionDefault
contract_idYes
descriptionYes
subpriceYes
qtyNo
tva_txNo
date_startNoUnix timestamp
date_endNoUnix timestamp

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYes
descYes
subpriceYes
qtyNo
tva_txNo
product_typeNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYes
descYesLine description
subpriceYesUnit price excl. tax
qtyNo
tva_txNoTax rate, e.g. 0 or 15
product_typeNo0 = product, 1 = service

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
socidYesThirdparty (client) ID
date_contratNoUnix timestamp; defaults to now if omitted
note_publicNo
note_privateNo
commercial_signature_idNoDolibarr user ID who signed internally
commercial_suivi_idNoDolibarr user ID following up the account

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
socidYesThirdparty (client) ID
dateNoUnix timestamp; defaults to now if omitted
note_publicNo
note_privateNo
cond_reglement_codeNo
fk_proposalNoSource proposal ID, if converting a quote to invoice

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
socidYesThirdparty (client) ID
dateNoUnix timestamp; defaults to now if omitted
duree_validiteNoValidity in days, e.g. 30
note_publicNo
note_privateNo
cond_reglement_codeNoPayment terms code, e.g. '30D', 'RECEP'

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCompany / contact name
emailNo
phoneNo
addressNo
country_idNoDolibarr country ID, e.g. 144 = Sri Lanka
clientNo1 = is a client
fournisseurNo1 = is a supplier

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/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. 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior3/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. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sortfieldNo
sortorderNo
sqlfiltersNo

TDQS

C2.3/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sortfieldNo
sortorderNo
sqlfiltersNo

TDQS

C2.3/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sortfieldNo
sortorderNo
sqlfiltersNo

TDQS

C2.3/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records to return (default 100)
pageNoZero-based page index
sortfieldNoField to sort by, e.g. 't.nom'
sortorderNo
sqlfiltersNoDolibarr SQL filter string, e.g. (t.client:=:1)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes
pathYesPath relative to the API base, starting with '/'
bodyNoJSON body for POST/PUT requests

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
fieldsYesPartial object of fields to update

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
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. 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 22 tool updatesv1.0.0
    • First observeddolibarr_add_contract_line
    • First observeddolibarr_add_invoice_line
    • First observeddolibarr_add_proposal_line
    • First observeddolibarr_create_contract
    • First observeddolibarr_create_invoice
    • First observeddolibarr_create_proposal
    • First observeddolibarr_create_thirdparty
    • First observeddolibarr_find_thirdparty_by_email
    • First observeddolibarr_get_contract
    • First observeddolibarr_get_invoice
    • First observeddolibarr_get_invoice_pdf_url
    • First observeddolibarr_get_proposal
    • First observeddolibarr_get_thirdparty
    • First observeddolibarr_list_contracts
    • First observeddolibarr_list_invoices
    • First observeddolibarr_list_proposals
    • First observeddolibarr_list_thirdparties
    • First observeddolibarr_ping
    • First observeddolibarr_request
    • First observeddolibarr_update_thirdparty
    • First observeddolibarr_validate_invoice
    • First observeddolibarr_validate_proposal

TDQS

A3.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An 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.
    379
    Mozilla Public 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server to connect Claude with Odoo 18, enabling CRUD operations on Odoo models via natural language.
    2
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    An 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

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