Skip to main content
Glama

Odoo MCP by bancada

Server Details

Connect any AI assistant to Odoo 16–19 via OAuth 2.0 + PKCE. 400 free calls, no local install.

Ownership verified
Status
Healthy
Uptime
76.3% over 41 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 12 tools

Disambiguation4/5

Each tool has a distinct resource+action: read (by ID), search_read (by domain), search_count, create, write, unlink, fields_get, list_models, execute. The only real overlap is odoo_execute, which can invoke arbitrary methods and therefore implicitly overlaps with create/write/unlink, and read vs search_read require the agent to understand IDs vs domains. The pending-action flow (confirm/cancel) is clearly separated from the write tools' descriptions.

Naming Consistency4/5

Eleven of twelve tools follow a predictable odoo_verb_noun snake_case pattern (odoo_search_read, odoo_fields_get, odoo_list_models). The lone outlier mcp_consumo breaks the prefix, language, and verb-first convention, which slightly hurts scanability.

Tool Count5/5

Twelve tools is well within the ideal band and each earns its place: five CRUD/search primitives, two introspection tools, generic execute, the two-step confirmation pair, and a quota utility. Nothing feels padded or missing from the count perspective.

Completeness5/5

The surface covers the full generic Odoo RPC lifecycle: model discovery, field introspection, create/read/update/delete, count and domain search, plus an escape hatch (odoo_execute) for arbitrary model methods such as invoice posting. The confirm/cancel pair closes the write-safety loop, and any remaining niche operations are reachable through odoo_execute.

Available Tools

12 tools
mcp_consumoConnector usageA
Read-only
Inspect

Reports how many connector calls the account's company has used in the rolling 30-day window and how many remain. Does not call Odoo. Returns a text message.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the bar is lower. The description still adds real value by noting it makes no Odoo backend call and that it returns a text message, both beyond what the annotations state.

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 tight sentences with the core measurement front-loaded and the no-Odoo clarification following. 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?

With no parameters, an output schema, and read-only annotations, little explanation is needed. The description covers what is measured, the time window, and that it avoids Odoo, leaving only minor detail like text-message format already covered by the output schema.

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 tool takes zero parameters, so there is nothing to document and the baseline is 4. No parameter detail is expected or missing here.

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?

States a specific measurement (connector calls used and remaining) over a defined window (rolling 30 days) for a specific scope (the account's company). The 'Does not call Odoo' clause distinguishes it from all the odoo_* siblings at a glance.

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 'Does not call Odoo' note implicitly separates it from the sibling Odoo tools, but there is no explicit when-to-use guidance or stated alternatives. An agent can infer it's a usage/quota check but is not told when to reach for it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_cancelDiscard pending actionAInspect

Discards the pending write identified by its code. Nothing is executed in Odoo. Returns a text message confirming the discard.

NameRequiredDescriptionDefault
codeYesSix-character pending-action code to discard.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false / destructiveHint=false, which is confusing for an operation that mutates a pending action's state. The description resolves that ambiguity by asserting nothing is executed in Odoo and that a confirmation message is returned — genuinely additive context. It stops short of saying whether a discarded code can be recovered or what happens on an invalid/expired code.

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?

Three short sentences, each carrying distinct information: what is discarded, that no Odoo data is touched, and what is returned. The key guarantee (nothing executed) is front-loaded, and there is no filler.

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 single-parameter tool with a full schema and an output schema, the definition covers action, side-effect boundary, and return type. The only gap is failure semantics for an invalid or already-discarded code, which an agent would want before calling blind.

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 100% and the schema already says 'Six-character pending-action code to discard'. The description's 'identified by its code' only restates this, adding no format, sourcing, or lifecycle detail. Baseline 3 applies when the schema does all the work.

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?

States a specific verb ('Discards') and resource ('the pending write identified by its code'), and the sentence 'Nothing is executed in Odoo' makes the contrast with odoo_confirm/odoo_execute unmistakable. An agent can tell this is the negative counterpart of confirm without reading either schema.

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?

Usage is implied rather than stated: an agent can infer this is the 'abort' path, but the description never names odoo_confirm as the alternative or says 'use this when you want to abandon a staged write'. No explicit when/when-not, so 3 rather than 4-5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_confirmConfirm pending actionA
Destructive
Inspect

Executes the pending write identified by its code. A code is single-use, expires after 30 minutes and is bound to the account and connection that created it. Returns JSON with the confirmed code, a description of the action, model, method and result, or a message when the code is unknown, expired, already used or created by another connection.

NameRequiredDescriptionDefault
codeYesSix-character pending-action code returned by a write tool.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description goes beyond them by disclosing the code lifecycle: single-use, 30-minute expiry, and binding to the originating account and connection. It also enumerates failure outcomes (unknown, expired, already used, other connection), which is exactly the behavioral context an agent needs before invoking a destructive write.

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 sentences, front-loaded with the action and followed by constraints and return shape. Every clause carries information; nothing is redundant with the annotations or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an output schema and destructive annotations, this is sufficient: it covers lifecycle, failure modes, and what the response contains. Nothing an agent needs to call it safely is missing.

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?

Schema coverage is 100%, so baseline is 3, but the description adds real semantics the schema lacks: the code is single-use, time-limited, and connection-bound, which changes how an agent should source and reuse it. The only gap is that the six-character format itself lives in the schema, not here, which is acceptable.

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?

States a specific verb and resource: 'Executes the pending write identified by its code.' That is clearly distinct from odoo_read/odoo_write, though the description never names the nearest siblings (odoo_execute for direct execution, odoo_cancel for discarding a pending action), so the agent must infer the boundary.

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?

Usage is implied rather than stated: a code 'returned by a write tool' must be confirmed here. It does not explicitly route the agent to odoo_cancel when the action should be abandoned, nor contrast this with odoo_execute, which is the most likely confusion point given the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_createCreate recordAInspect

Creates a record in an Odoo model. Returns JSON with model and the new record id. When write confirmation is enabled for the account, nothing is created and the result is a pending-action code with a description of the change.

NameRequiredDescriptionDefault
modelYesOdoo model technical name.
valuesYesField values of the new record.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses a non-obvious behavior: in write-confirmation mode nothing is created and a pending-action code is returned instead of a record. It does not cover permission requirements or validation-failure behavior, but the pending-action disclosure is genuinely valuable context the annotations lack.

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 with the core action and return shape front-loaded, followed by the conditional edge case. No filler and every sentence adds value.

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 mutation tool, the description covers the action, the return shape, and the important write-confirmation branch, with annotations and an output schema filling in safety and return details. It is nearly complete, though it omits access/permission requirements.

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 100% for both required parameters (model, values), and the description adds no additional semantics about them. Baseline 3 is appropriate since the schema carries the parameter documentation.

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?

States a specific verb and resource ('Creates a record in an Odoo model') and describes the return payload. It is separable from siblings like odoo_write/odoo_unlink by implication, but never names a sibling or the model/record scope explicitly.

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?

Usage is only implied by the verb 'create'; there is no explicit when-to-use guidance, no mention of when to prefer odoo_write or odoo_execute, and no prerequisites noted. The write-confirmation aside hints at a condition but does not route the agent to an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_executeRun model methodB
Destructive
Inspect

Calls a method of an Odoo model with positional and keyword arguments, for example posting an invoice or confirming a sales order. Returns JSON with model, method and result. When write confirmation is enabled for the account, the method is not called and the result is a pending-action code with a description of the call.

NameRequiredDescriptionDefault
argsNoPositional arguments of the method.
modelYesOdoo model technical name.
kwargsNoKeyword arguments of the method.
methodYesName of the model method to call, e.g. 'action_post'.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds real value beyond that: it discloses the return envelope (model, method, result) and, importantly, the pending-action code path when write confirmation is enabled, which the agent could not infer from structured fields. It stops short of stating permission requirements or irreversibility of arbitrary method calls.

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?

Two tight paragraphs, front-loaded with what the tool does, followed by a distinct and non-redundant note on the pending-action outcome. No filler sentences, though the return-value sentence slightly duplicates the output schema.

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?

An output schema exists and annotations cover the destructive profile, lowering the burden. Still, for a tool that can invoke any method on any model, the description omits the critical routing guidance against the many specialized siblings and any constraints on which models/methods are permitted, leaving a meaningful gap.

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 100% and already documents args as positional, kwargs as keyword, and method with an example. The description restates the positional/keyword distinction but adds no new semantics such as how args map to Odoo's RPC signature or how kwargs interact with named parameters. Baseline 3 is appropriate.

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?

Names a specific verb and resource ('Calls a method of an Odoo model') and gives concrete examples (posting an invoice, confirming a sales order) so the agent knows this is a generic method-invocation escape hatch. However, it never differentiates itself from close siblings such as odoo_confirm, odoo_write, or odoo_create, and its own examples overlap with those siblings' territory.

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 statement of when to reach for this generic executor versus the purpose-built siblings (odoo_confirm, odoo_cancel, odoo_write, odoo_create). The examples given actually point toward sibling use cases rather than routing the agent away from them, leaving the choice entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_fields_getInspect model fieldsB
Read-only
Inspect

Returns the field definitions of an Odoo model: type, label, required, relation and selection values. Returns JSON with model, field_count and fields.

NameRequiredDescriptionDefault
modelYesOdoo model technical name.
attributesNoField metadata attributes to return. Defaults to string, type, required, readonly, relation and selection.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the shape of the payload (model, field_count, fields) beyond what annotations provide, but says nothing about auth requirements, cost on large models, or whether the call is cached.

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?

Two short sentences, front-loaded with what is returned. The second sentence partly restates the first's enumeration but stays within a reasonable length for the tool's complexity.

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 read-only two-parameter inspection tool with a full output schema, the description covers what the tool returns and its scope. The missing piece is guidance on when to reach for odoo_list_models first, which would round it out.

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 100%, so both parameters are already documented, giving a baseline of 3. The description's field list (type, label, required, relation, selection) does not quite match the schema's documented default attributes, which includes readonly and omits label, so it adds no reliable meaning beyond the schema and slightly muddies it.

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?

States a specific verb and resource: returns field definitions of an Odoo model, with the metadata it yields enumerated. It is distinguishable from odoo_list_models and odoo_read by being field-level inspection, but the description never names those siblings to make the distinction explicit.

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?

There is no when-to-use or when-not-to-use guidance, and no mention of the obvious alternative (odoo_list_models) for discovering models versus inspecting one model's fields. The agent must infer the selection rule from the names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_list_modelsList modelsA
Read-only
Inspect

Lists the models available in the Odoo database, optionally filtered by technical name or label. Accounts with a restricted scope list only their allowed models; if the Odoo user cannot read the model catalog, lists the common models that user can read. Returns JSON with count and models (model, name).

NameRequiredDescriptionDefault
limitNoMaximum number of models (1-500).
filterNoCase-insensitive text matched against the model technical name or label.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a read-only, non-destructive operation, and the description adds relevant behavioral context: restricted accounts see only allowed models, and users who cannot read the catalog get a fallback set of common readable models. It also discloses the return shape as JSON with count and models (model, name).

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 three sentences and front-loads the main purpose before adding scope and return details. Every sentence contributes useful information with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, full schema description coverage, and the existence of an output schema, the description is complete enough for an agent to call it correctly. It covers the core purpose, optional filter, restricted-scope behavior, fallback behavior, and return format.

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 100%, so both parameters are already documented in the schema. The description reiterates the filter's purpose against technical name or label, but it does not add syntax or behavioral detail beyond what the schema already provides.

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 gives a specific verb and resource: it lists the models available in the Odoo database, with optional filtering by technical name or label. This makes the tool's purpose clear, though it does not explicitly differentiate itself from sibling tools such as odoo_fields_get or odoo_search_read.

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 by explaining that results can be optionally filtered by technical name or label, and it notes restricted-scope behavior. However, it does not explicitly state when to use this tool instead of alternatives like odoo_fields_get or odoo_search_read, nor does it provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_readRead records by IDB
Read-only
Inspect

Reads Odoo records by ID. Returns JSON with model and records.

NameRequiredDescriptionDefault
idsYesRecord IDs to read.
modelYesOdoo model technical name.
fieldsNoField names to return. Empty returns the default fields.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only a brief return-format note, which duplicates the output schema, and says nothing about behavior for missing/invalid IDs.

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?

Two short sentences with no filler, and the operation is stated first. It is efficient, though it spends one of only two sentences restating the return shape already covered by the output schema.

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?

With annotations, full schema coverage, and an output schema, the lightweight description is close to adequate. Still missing is any note on error behavior for nonexistent IDs or guidance on selecting this tool over the search siblings.

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 100%, with each of the three parameters documented, so the schema carries the load. The description adds no extra meaning about the fields parameter or ID semantics beyond what is already structured.

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?

States a specific verb and resource ('Reads Odoo records by ID'), which clearly distinguishes a by-ID fetch from search-style siblings. It does not, however, explicitly name odoo_search_read or odoo_search_count as the alternatives, so differentiation is implicit.

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 says nothing about when to use this versus odoo_search_read, odoo_search_count, or odoo_fields_get. An agent must infer from the name that this is the right tool only when IDs are already known.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_search_countCount recordsA
Read-only
Inspect

Counts the records of an Odoo model that match a domain, without returning them. Returns JSON with model and count.

NameRequiredDescriptionDefault
modelYesOdoo model technical name.
domainNoOdoo search domain. Empty counts all records.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that no records are returned and that the response contains model and count, but the latter is largely duplicated by the existing output schema, so added behavioral value is modest.

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 with zero padding, and the non-returning behavior is front-loaded where an agent will see it first.

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?

With annotations, a full output schema, and 100% schema description coverage, the description supplies enough for correct invocation. A brief note on domain syntax or typical use against odoo_search_read would close the remaining gap.

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 100% and the schema itself explains that an empty domain counts all records. The description adds no domain syntax or filtering semantics beyond what the schema already provides, so baseline 3 applies.

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?

States a specific verb and resource ('Counts the records of an Odoo model that match a domain') with the key modifier 'without returning them', which implicitly separates it from odoo_search_read. It stops short of naming a sibling, so differentiation is inferred rather than explicit.

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?

'Without returning them' implies the use case (need a number, not the records) but there is no explicit when-to-use/when-not statement or named alternative such as odoo_search_read versus odoo_search_count. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_search_readSearch and read recordsA
Read-only
Inspect

Searches an Odoo model with a domain filter and reads the matching records in a single request. Returns JSON with model, count, offset, limit and records.

NameRequiredDescriptionDefault
limitNoMaximum number of records (1-1000).
modelYesOdoo model technical name, e.g. 'res.partner' or 'account.move'.
orderNoSort order, e.g. 'create_date desc'.
domainNoOdoo search domain. Empty matches all records.
fieldsNoField names to return. Empty returns the default fields.
offsetNoNumber of records to skip.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds only the 'single request' efficiency note and a restatement of the return shape, which the output schema already supplies; no mention of pagination behavior or the default 50-record cap's practical effect.

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 sentences, front-loaded with the action and scope, with no filler. Every sentence adds information and nothing is repeated unnecessarily.

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?

With annotations covering safety, a fully described schema, and an output schema explaining the return shape, the description is nearly sufficient. The one remaining gap is routing guidance against odoo_read and odoo_search_count for an agent choosing among them.

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 100%, with limit, model, order, domain, fields and offset all documented in the schema including examples. The description only echoes 'domain filter', so baseline 3 applies — the schema carries the parameter burden.

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?

States a specific verb and resource: searches an Odoo model with a domain filter and reads matching records in one request. This is clearly distinguishable from a read-by-id tool or a count-only tool, though it never names those siblings explicitly.

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 phrase 'in a single request' implies this is the combined search+read path rather than search-then-read, but no explicit when-to-use guidance or exclusion against odoo_read or odoo_search_count is given. Usage must be inferred from the sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

odoo_writeUpdate recordsA
Destructive
Inspect

Updates existing Odoo records with the given field values. Returns JSON with model, ids and updated. When write confirmation is enabled for the account, nothing is changed and the result is a pending-action code with a description of the change.

NameRequiredDescriptionDefault
idsYesIDs of the records to update.
modelYesOdoo model technical name.
valuesYesField values to set on those records.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the destructive nature is covered structurally. The description adds genuinely non-obvious context beyond that: the return shape (model, ids, updated) and, importantly, that when write confirmation is enabled nothing is actually changed and a pending-action code comes back instead. It still omits what happens on partial/invalid field sets and whether the update is atomic, which keeps it below a 5.

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 tight sentences ordered by importance: what it does first, the confirmation-mode caveat second. No filler, no restatement of the title, and the surprising behavior is surfaced rather than buried.

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?

An output schema exists, so return values need only light treatment and the description supplies the key nuance about the pending-action variant. For a destructive mutation on a nested, free-form 'values' object, it would be stronger if it warned about invalid field names or required write access, but the essentials for correct invocation are present.

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 100%, so 'model', 'ids' and 'values' are already documented in the schema, establishing the baseline of 3. The description only says 'with the given field values', adding no format, validation, or model-specific detail beyond what the schema already conveys.

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?

States a specific verb and resource: 'Updates existing Odoo records with the given field values.' The verb 'updates' cleanly separates it from odoo_create and odoo_unlink in the sibling list, though no sibling is named explicitly.

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?

Usage is only implied by the word 'existing' – an agent can infer this is for modifying records that already have IDs rather than creating them. There is no explicit when-to-use/when-not guidance, no mention of odoo_create as the alternative for new records, and no prerequisites such as required permissions on the target model.

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.

  1. 11 tool updates
    • Changedodoo_cancel1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"Código de la acción pendiente a descartar."New value: +"Six-character pending-action code to discard."
    • Changedodoo_confirm1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"Código de la acción pendiente (6 caracteres)."New value: +"Six-character pending-action code returned by a write tool."
    • Changedodoo_create2 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo."New value: +"Odoo model technical name."
      • changedInput schema / properties / values / description
        Previous value: -"Valores del nuevo registro."New value: +"Field values of the new record."
    • Changedodoo_execute4 fields changed
      • changedInput schema / properties / args / description
        Previous value: -"Argumentos posicionales."New value: +"Positional arguments of the method."
      • changedInput schema / properties / kwargs / description
        Previous value: -"Argumentos por nombre."New value: +"Keyword arguments of the method."
      • changedInput schema / properties / method / description
        Previous value: -"Método a llamar, ej. 'action_post'."New value: +"Name of the model method to call, e.g. 'action_post'."
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo."New value: +"Odoo model technical name."
    • Changedodoo_fields_get2 fields changed
      • changedInput schema / properties / attributes / description
        Previous value: -"Metadatos a devolver."New value: +"Field metadata attributes to return. Defaults to string, type, required, readonly, relation and selection."
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo."New value: +"Odoo model technical name."
    • Changedodoo_list_models2 fields changed
      • changedInput schema / properties / filter / description
        Previous value: -"Filtro por nombre técnico o etiqueta."New value: +"Case-insensitive text matched against the model technical name or label."
      • changedInput schema / properties / limit / description
        Previous value: -"Máx. modelos."New value: +"Maximum number of models (1-500)."
    • Changedodoo_read3 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"Campos a devolver."New value: +"Field names to return. Empty returns the default fields."
      • changedInput schema / properties / ids / description
        Previous value: -"IDs a leer."New value: +"Record IDs to read."
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo."New value: +"Odoo model technical name."
    • Changedodoo_search_count2 fields changed
      • changedInput schema / properties / domain / description
        Previous value: -"Dominio de búsqueda."New value: +"Odoo search domain. Empty counts all records."
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo."New value: +"Odoo model technical name."
    • Changedodoo_search_read6 fields changed
      • changedInput schema / properties / domain / description
        Previous value: -"Dominio de búsqueda Odoo. Vacío=todos."New value: +"Odoo search domain. Empty matches all records."
      • changedInput schema / properties / fields / description
        Previous value: -"Campos a devolver."New value: +"Field names to return. Empty returns the default fields."
      • changedInput schema / properties / limit / description
        Previous value: -"Máx. registros."New value: +"Maximum number of records (1-1000)."
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo, ej. 'res.partner', 'account.move'."New value: +"Odoo model technical name, e.g. 'res.partner' or 'account.move'."
      • changedInput schema / properties / offset / description
        Previous value: -"Registros a saltar."New value: +"Number of records to skip."
      • changedInput schema / properties / order / description
        Previous value: -"Orden, ej. 'create_date desc'."New value: +"Sort order, e.g. 'create_date desc'."
    • Changedodoo_unlink2 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"IDs a eliminar."New value: +"IDs of the records to delete."
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo."New value: +"Odoo model technical name."
    • Changedodoo_write3 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"IDs a actualizar."New value: +"IDs of the records to update."
      • changedInput schema / properties / model / description
        Previous value: -"Modelo Odoo."New value: +"Odoo model technical name."
      • changedInput schema / properties / values / description
        Previous value: -"Valores a establecer."New value: +"Field values to set on those records."
  2. 12 tool updates
    • First observedmcp_consumo
    • First observedodoo_cancel
    • First observedodoo_confirm
    • First observedodoo_create
    • First observedodoo_execute
    • First observedodoo_fields_get
    • First observedodoo_list_models
    • First observedodoo_read
    • First observedodoo_search_count
    • First observedodoo_search_read
    • First observedodoo_unlink
    • First observedodoo_write

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to securely connect to Odoo and perform CRUD operations, custom tool calls, and data queries through natural language, with OAuth 2.1 and API key authentication.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to securely access and interact with Odoo data through natural language, supporting full CRUD operations, OAuth 2.1 and API key authentication, and granular per-model permissions.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants like Claude, ChatGPT, and Copilot to connect to Odoo ERP, providing tools to search, read, create, and update any Odoo model such as partners, sales orders, invoices, and products.
    8 npm
    AGPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Connects AI assistants to Odoo 19.0, enabling full CRUD operations and method calls on any Odoo model via API key or username/password authentication.
    9
    32 PyPI
    LGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources