Skip to main content
Glama

odoo-agent-mcp

A version-agnostic MCP server + code-comprehension engine that gives AI agents (Claude Code / Claude Desktop / Cursor / any MCP client) full command of any Odoo app on any Odoo version — its data, its schema, its source code, and how the two relate.

It answers, for developers and operations teams alike:

  • What data is in the DB, and how do model classes map to tables and columns?

  • What code is where, how does the backend work, and how do modules inherit each other?

  • Show me a flowchart of the system / a user flow.

  • Where would a change break things? Help me implement a feature or fix a bug.


Why this exists (the two-domain problem)

Almost every existing Odoo AI tool covers only Domain A — live data & metadata (reachable over Odoo's API). Very few touch Domain B — the source code (what the backend actually is). Real developer/ops command needs both, and they come from different places: Domain A from the running server, Domain B from the repository. This project fuses them.

See ARCHITECTURE.md for the full design and REUSE_MAP.md for how this relates to existing open-source Odoo MCP/LLM projects.


Related MCP server: Odoo MCP Server

Capability tiers (graceful degradation)

The server probes each instance at connect time and advertises only the tools it can honour, so one codebase serves a locked SaaS tenant and a self-hosted repo alike.

Tier

Requires

Unlocks

TIER_0

API credentials only (works on locked Odoo Online)

Data CRUD, model/field metadata, model↔table↔column mapping, relationship graph

TIER_1

Companion module odoo_agent_bridge installed

Deep introspection endpoint, safe-method catalogue

TIER_2

Read access to the module source repo (self-hosted / Odoo.sh)

Source AST analysis, _inherit graphs, flowcharts, source↔DB drift detection, feature/bug workflows


Supported Odoo versions

Odoo 13 → 19+. The ORM surface (search, read, fields_get, execute_kw, ir.model*) is stable across these versions; only the wire protocol differs, and that is isolated behind a transport adapter:

Odoo version

Default transport

13 – 18

XML-RPC (fallback: JSON-RPC)

19+

JSON-2 (POST /json/2/<model>/<method>, bearer API key)

XML-RPC / JSON-RPC endpoints are deprecated in Odoo 19 and scheduled for removal (SaaS ~19.1, on-prem/Odoo.sh ~20–22). JSON-2 is implemented now so the tool outlives that removal.


Install

python -m venv .venv
# Windows PowerShell:  .venv\Scripts\Activate.ps1
# bash:                source .venv/bin/activate
pip install -e ".[dev]"

Configure

Copy .env.example to .env and fill in:

ODOO_URL=https://my-instance.odoo.com
ODOO_DB=my_database
ODOO_USERNAME=admin
ODOO_API_KEY=xxxxxxxx        # API key (required for JSON-2 / Odoo 19+)
# ODOO_PASSWORD=...          # legacy auth for <=18 if no API key
ODOO_SOURCE_PATH=/path/to/addons   # optional -> unlocks TIER_2 code intel

Run as an MCP server

odoo-agent-mcp                     # stdio transport (Claude Desktop / Code)

Register in an MCP client (e.g. Claude Code .mcp.json):

{
  "mcpServers": {
    "odoo": { "command": "odoo-agent-mcp" }
  }
}

Testing

pytest                       # unit tests — run anywhere, no Odoo needed
pytest -m e2e                # live end-to-end — REQUIRES the Docker matrix below
docker compose -f docker/docker-compose.yml up -d   # Odoo 15/17/19 + Postgres

Honest status: unit tests (mapping engine, AST engine, transport factory, tier logic) run and pass in this environment. The live e2e suite needs a running Odoo; it is written and skips automatically when no server is reachable. See tests/e2e/README.md. TODO markers flag every path that is not yet live-verified.


Status

v0.1.0 — foundation: transport layer, tier detection, mapping engine, code-comprehension engine, MCP wiring, companion-module skeleton, unit tests. Roadmap in ARCHITECTURE.md.

Available Tools

14 tools
odoo_access_rulesC

Return ACLs (ir.model.access) and record rules (ir.rule) for a model.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It implies a read operation ('Return') but does not explicitly state idempotency, required permissions, or how the result is structured. No mention of side effects or limitations.

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 wasted words, achieving conciseness. However, it lacks structure and could benefit from separating the two outputs (ACLs vs. record rules) for clarity. It is adequate but not fully optimized.

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 no output schema, no annotations, and a single parameter, the description is incomplete. It does not specify the structure or examples of returned ACLs/rules, pagination, or error conditions. For a retrieval tool, more detail is expected.

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?

Parameter schema coverage is 0%--the 'model' parameter has no description in the schema. The description's phrase 'for a model' provides minimal context beyond the parameter name. It does not elaborate on expected format or allowed values.

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 tool's verb ('Return') and resource ('ACLs and record rules') for a given model. It is specific enough to distinguish from sibling tools like odoo_model_schema or odoo_search, which handle different aspects.

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., odoo_model_schema for model structure). The description does not mention prerequisites, when not to use it, or how it complements other tools.

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

odoo_countC

Count records matching a domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes
domainNo

TDQS

C2.8/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. It does not mention that this is a read-only operation, what happens with invalid domains, performance implications, or return type.

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 extraneous information. It efficiently conveys the basic 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 no output schema and minimal description, the tool is incomplete. The agent lacks information about return format (integer count?), potential errors, or behavior with empty domains. Sibling tools like odoo_search have richer descriptions.

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%, so the description must add meaning. It does not explain what 'domain' is (e.g., Odoo domain syntax) or that 'model' must be a valid Odoo model name. The parameter names alone are insufficient.

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 verb 'count' and resource 'records' with a domain filter. It distinguishes from siblings like odoo_search which returns records, and odoo_list_models which lists models. However, it could be more explicit about the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/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 like odoo_search for counts. No mention of when not to use it or prerequisites.

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

odoo_detect_driftA

Compare a model's SOURCE fields against the LIVE database and report drift (Studio/manual fields, un-upgraded modules, type mismatches). Needs both the source tree (TIER_2) and a live connection (TIER_0).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It explains the comparison action and what is reported (drift types). It does not discuss failure modes or output format, but for a detection tool it is 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?

Two sentences, no redundancy. First sentence states purpose and deliverables, second sentence states requirements. Front-loaded with key action.

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?

Simple tool with one parameter and no output schema. The description covers purpose, what is reported, and prerequisites. Nothing essential is missing for an agent to understand and invoke the tool.

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?

Only one parameter 'model' with no schema description (0% coverage). The description adds minimal context by referring to 'model's SOURCE fields', but does not specify expected format or valid values.

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 compares source fields against live database to report drift, listing specific drift types (Studio/manual fields, un-upgraded modules, type mismatches). This distinguishes it from sibling tools like odoo_model_source or odoo_status.

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?

Explicitly states prerequisites (source tree and live connection) needed for use. Does not provide explicit exclusions or alternatives, but the context is clear enough for an agent to infer when to use.

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

odoo_execute_methodC

Call a model method. Read-only methods are always allowed; mutating methods require ODOO_ENABLE_WRITES=1.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNo
modelYes
kwargsNo
methodYes

TDQS

C2.9/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 discloses that mutating methods require an environment variable, which adds transparency about side effects. However, it does not detail other behaviors like error handling, return types, or potential impacts on the system.

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 short (two sentences) and front-loaded with the main purpose. However, it sacrifices necessary detail for brevity, especially lacking parameter guidance.

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 no output schema, no annotations, and four parameters with zero schema description coverage, the description is insufficient. It does not explain how to use the parameters, what model and method refer to, or what the tool returns, making it hard for an agent to use correctly.

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 provides no information about the parameters (model, method, args, kwargs). It only says 'Call a model method' without explaining what any parameter does, leaving the agent to infer from names alone.

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 it calls a model method (verb+resource). It distinguishes from sibling tools like odoo_search or odoo_count which are more specific operations, though it doesn't explicitly contrast them.

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 mentions that read-only methods are always allowed and mutating methods require ODOO_ENABLE_WRITES=1, providing context for when writes are permitted. However, it does not specify when to use this tool over alternatives or 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.

odoo_inheritance_diagramA

Mermaid flowchart of model inheritance/extension/delegation across the source.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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. It states the output is a 'Mermaid flowchart' but does not disclose behavior such as whether it performs a read operation, requires authentication, or has performance implications. For a tool with no annotations, 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, clear sentence with no unnecessary words. It is front-loaded and concise.

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 parameters and no output schema, the description is minimal. It lacks details on the output format (e.g., Mermaid code block) and scope (all models or specific model). It is complete enough for a simple tool but could be more helpful.

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?

There are no parameters, and schema coverage is trivially 100%. The description adds meaning by explaining what the tool produces, which is sufficient for a parameterless tool.

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 produces a 'Mermaid flowchart' of 'model inheritance/extension/delegation across the source,' which precisely defines the action and resource. It distinguishes from sibling tools like odoo_relationships and odoo_module_dependency_diagram.

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 for understanding model inheritance but provides no explicit guidance on when to use this tool versus alternatives like odoo_relationships or odoo_model_schema. No 'when-not-to-use' or context provided.

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

odoo_list_modelsB

List installed models (optionally filtered by technical name substring).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
name_filterNo

TDQS

B3.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 but only states 'list installed models'. It omits details on read-only nature, performance implications, or safety guarantees.

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 unnecessary words, front-loaded with core action.

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?

Simple tool, but missing parameter explanations and behavioral context make it only minimally complete for an agent.

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 adds meaning for 'name_filter' via the filter mention, but 'limit' is not explained. Since schema coverage is 0%, the description should compensate for both parameters.

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 lists installed models and specifies an optional filter by technical name substring, distinguishing it from sibling tools like odoo_model_schema or odoo_search.

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 guidance on when to use this tool versus alternatives; the usage is implied but lacks context on when not to use or prerequisites.

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

odoo_list_modulesB

List modules discovered in the configured source tree (ODOO_SOURCE_PATH).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must disclose all behavioral traits. It only states the action and source, but omits critical details like whether the operation is read-only, what happens if the path is invalid, or any side effects. This lack of transparency is a significant gap.

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 concise sentence that efficiently conveys the core purpose. It is front-loaded with the verb and resource. However, it could be slightly more structured to include output hints or error conditions without becoming verbose.

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 no parameters, no output schema, and no annotations, the description is minimally adequate but fails to explain what the output looks like (e.g., list of module names, paths, metadata) or how to interpret results. It lacks completeness for an agent to confidently use it without additional context.

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 has no parameters, making schema_description_coverage effectively 100%. The description does not need to add parameter details. Baseline score of 3 is appropriate as there is no additional value added 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's action (List), resource (modules), and specific context (discovered in configured source tree ODOO_SOURCE_PATH). It distinguishes itself from sibling tools like odoo_list_models or odoo_access_rules by focusing solely on modules and their source.

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 such as odoo_search or odoo_count. It does not mention prerequisites, exclusions, or typical use cases, leaving the agent to infer usage from the name alone.

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

odoo_map_model_to_tableC

Return only the model<->table<->column mapping for a model.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes

TDQS

C2.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 must cover behavioral traits. It states the tool returns a mapping but does not disclose whether it is read-only, requires authentication, or has any side effects. The phrase 'return only' implies no mutation, but this is not explicit.

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 very concise (one sentence, 11 words), but it omits essential details. It is not fluff-free in the sense that it could include more information without sacrificing 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?

Given the one-parameter schema and no output schema, the description should explain the return format and usage context. It does not describe the structure of the mapping or any prerequisites, leaving the agent underinformed.

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 does not add meaning to the 'model' parameter. It says 'for a model' but does not explain the expected format (e.g., module.model or technical name).

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 returns a specific mapping (model<->table<->column) for a given model, which distinguishes it from sibling tools like odoo_model_schema that return full schema information.

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., odoo_model_schema) or when not to use it. The description is silent on context or prerequisites.

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

odoo_model_schemaA

Full schema for a model: normalised field metadata plus the deterministic model->table->column mapping (how the class maps to the database).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes

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 full burden. It implies a read-only operation (schema retrieval) but does not explicitly state safety, side effects, or performance. Adequate but not thorough.

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 succinct sentence (20 words) front-loading the main purpose. 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?

Adequately describes what is returned (field metadata and mapping) for a simple schema tool with one parameter and no output schema. Lacks detail on response structure but sufficient for intended 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 0%. The description implicitly explains the parameter 'model' as the target model for the schema, but adds no additional format or constraints beyond the schema's type/required fields.

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 clearly states it returns the full schema for a model including field metadata and database mapping. It distinguishes from sibling tools like odoo_map_model_to_table, which focuses solely on mapping.

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., odoo_map_model_to_table or odoo_model_source). The description only states what it does without usage context.

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

odoo_model_sourceC

Return the source-derived definition(s) of a model and a class diagram.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided. The description does not disclose behavioral traits such as read-only nature, side effects, authentication requirements, or output size. For a tool without annotations, the description should cover these aspects.

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?

One sentence that front-loads the core action and outputs. Efficient with no wasted words.

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 a single parameter and no output schema, the description minimally specifies the outputs (definitions and class diagram) but omits details about format, structure, or how the output relates to the input. Adequate for a simple tool but could be more informative.

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 single required parameter 'model' has no description in the schema (0% coverage) and the tool description does not clarify its expected format (e.g., technical name vs. label). The description adds no meaning beyond the parameter name.

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 states the verb 'Return' and identifies the resource as 'source-derived definition(s) of a model and a class diagram'. This is specific but does not differentiate from sibling tools like odoo_model_schema, which may also return definitions.

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. No mention of prerequisites, limitations, or context where this tool is preferred.

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

odoo_module_dependency_diagramA

Mermaid flowchart of module dependencies from manifests.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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. It only states the output is a Mermaid flowchart, but does not disclose if the tool is read-only, requires permissions, or any side effects. Very minimal behavioral 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?

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's primary function.

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?

For a parameterless tool, the description covers the basic purpose but omits details like the scope of dependencies (direct/all), output format specifics (Mermaid string vs. image), and any constraints. Adequate but with notable gaps.

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 input schema has zero parameters, so schema coverage is 100%. The description adds no parameter info, but none is needed. Baseline for 0 params is 4.

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 'Mermaid flowchart of module dependencies from manifests' specifies a clear verb (generate), resource (module dependencies), and source (manifests). It distinguishes from sibling tools like odoo_inheritance_diagram and odoo_relationships.

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 the tool is for visualizing module dependencies, but lacks explicit guidance on when to use it versus alternatives like odoo_inheritance_diagram. No exclusions or prerequisites are mentioned.

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

odoo_relationshipsB

Build a relationship graph across the given models. Returns edges and, optionally, a Mermaid ER diagram.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelsYes
as_mermaidNo

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 bears full responsibility for behavioral disclosure. It only states that the tool returns edges and optionally a diagram, but omits details about side effects, authorization needs, error handling, or whether it is read-only.

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, front-loaded sentence that efficiently conveys the core purpose. It wastes no words, though adding a second sentence for usage context could improve it.

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 and minimal parameter descriptions, the description should provide more context about what edges represent, output format, and limitations. As is, it leaves significant gaps for an agent using the 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?

Schema description coverage is 0%, so the description must compensate. It adds value by linking 'models' to the graph building and noting that 'as_mermaid' returns an ER diagram. However, it does not specify expected model formats, constraints, or the exact effect of the boolean parameter.

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's function: building a relationship graph across given models and returning edges with an optional Mermaid ER diagram. It uses a specific verb ('Build') and distinguishes itself from sibling tools like odoo_inheritance_diagram and odoo_module_dependency_diagram.

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 its siblings (e.g., odoo_inheritance_diagram, odoo_model_schema). There is no mention of prerequisites, scenarios, or 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.

odoo_statusA

Report connection status, detected Odoo version, transport and capability tier.

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?

As a read-only diagnostic tool with no annotations, the description adequately discloses the behavior: it reports status information. It does not mention any side effects, but none are expected. The description is sufficient for a simple status check.

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 that efficiently captures all aspects without unnecessary words. It is front-loaded and earns its place.

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 (no parameters, no output schema, no annotations), the description is complete. It lists all four reported items (connection status, version, transport, capability tier) with no gaps.

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 input schema has zero parameters, so schema description coverage is trivially 100%. The description adds no parameter info because none are needed. For a tool with no parameters, this 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 tool's purpose: reporting connection status, Odoo version, transport, and capability tier. It uses a specific verb ('report') and resource ('connection status...'), and it is distinct from sibling tools that focus on models, modules, or execution.

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 the tool is used for checking connection status, but it does not explicitly state when to use it versus alternatives. No guidance on when not to use or prerequisites 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.

  1. 14 tool updatesv0.1.0
    • First observedodoo_access_rules
    • First observedodoo_count
    • First observedodoo_detect_drift
    • First observedodoo_execute_method
    • First observedodoo_inheritance_diagram
    • First observedodoo_list_models
    • First observedodoo_list_modules
    • First observedodoo_map_model_to_table
    • First observedodoo_model_schema
    • First observedodoo_model_source
    • First observedodoo_module_dependency_diagram
    • First observedodoo_relationships
    • First observedodoo_search
    • First observedodoo_status

TDQS

A3.5/5.0

Scored across 14 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, from querying records to exploring schema and code. There is no overlap; even similar functions like search and count are differentiated by operation. An agent can easily select the correct tool.

Naming Consistency5/5

All tools follow a consistent pattern: 'odoo_' prefix followed by lowercase words separated by underscores. The names are descriptive and maintain a uniform style, making them predictable for an agent.

Tool Count5/5

With 14 tools, the set is well-scoped for an Odoo agent. It covers essential areas like schema introspection, data querying, and code analysis without being overwhelming or too sparse.

Completeness4/5

The toolset covers major Odoo operations but lacks direct record CRUD tools (create, update, delete). However, odoo_execute_method can handle mutations, and the focus on analysis is clear. Minor gap but still robust.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    An MCP server implementation that integrates with Odoo ERP systems, enabling AI assistants to interact with Odoo data and functionality through the Model Context Protocol.
    41
    656 PyPI
    408
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that enables AI assistants to interact with Odoo ERP apps like Inventory, CRM, Sales, and Manufacturing. It allows users to read, create, and manage Odoo records and workflows using natural language commands.
    25
    11 npm
    1
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that connects AI assistants to Odoo ERP instances via the built-in XML-RPC API without requiring any additional addons. It enables users to search, create, update, and manage Odoo records and models through natural language.
    29 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI assistants to interact with Odoo ERP, allowing natural language queries, record creation, updates, and deletions.
    LGPL 3.0