Skip to main content
Glama
bemade

odoo-mcp

by bemade

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each tool targets a distinct operation: schema discovery (list_models, get_model_doc, get_model_fields), CRUD (create, read, update, delete), search, and generic method call. No overlap.

    Naming Consistency5/5

    All tool names follow a uniform verb_noun pattern (e.g., list_models, create_record, search_records) using lowercase and underscores, making them predictable.

    Tool Count5/5

    9 tools is well-scoped for an Odoo integration, covering model discovery, CRUD, search, and a generic method call without being excessive or insufficient.

    Completeness4/5

    The tool set provides full CRUD, search, and schema discovery; the only minor gap is the absence of a dedicated count/aggregate operation, but search_records with limit=0 can approximate it.

  • Average 4.1/5 across 9 of 9 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under LGPL 3.0.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

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

    Annotations already declare destructiveHint=true and idempotentHint=true. The description adds that the return value is True on success, which is basic. No additional behavioral context (e.g., atomicity, rollback, irreversibility) is provided beyond what annotations convey.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise with three sentences and an Args/Returns section. It front-loads the purpose, though the structured section repeats information already implied by the 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?

    Given the complexity (3 params, nested object, destructive hint), the description adequately covers parameters and return value, but lacks error handling details, examples, or clarification on valid ID requirements. It is adequate but not comprehensive for a mutation tool.

    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?

    Despite 0% schema coverage, the description explains all three parameters: model (with example), ids (list of integers), and values (dict). It adds meaning beyond the raw schema types, though it could be more precise about value constraints (e.g., valid field names).

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the action ('Update existing records') and the resource ('an Odoo model'), distinguishing it from sibling tools like create_record, delete_records, and read_record.

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

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides no guidance on when to use this tool versus alternatives (e.g., search_records to find IDs first), nor does it mention prerequisites or exclusions.

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

  • Behavior3/5

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

    Annotations already set destructiveHint=true, so the agent knows this is destructive. The description adds that it returns True on success, but lacks details on permissions, irreversibility, or effects on related records. No contradictions with annotations.

    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?

    Very concise with a clear structure: action statement, then Args and Returns sections. No unnecessary words, and the essential information is front-loaded.

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

    Completeness4/5

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

    For a simple delete tool with two parameters and an annotation for destructiveness, the description covers the basics (purpose, params, return). Could mention that deletion is permanent, but overall adequate given the tool's simplicity.

    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?

    With 0% schema description coverage, the description fully explains both parameters: model is the Odoo model name with an example, and ids is a list of record IDs. This adds significant meaning beyond the schema types, though could mention constraints like valid model names.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states it deletes records from an Odoo model, using the specific verb 'delete' and resource 'records'. It distinguishes from sibling tools like create_record, update_records, and search_records by focusing on deletion.

    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., for irreversible deletion) or when not to use it. The description does not mention prerequisites or exclusion conditions.

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

  • Behavior3/5

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

    Annotations declare readOnlyHint=true, so the description does not need to reiterate non-destructiveness. However, the description does not detail return format or behavior beyond what is implied by parameter semantics. It could mention that it returns a list of model records.

    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 extremely concise: one sentence for purpose followed by a structured Args section. No unnecessary words, and the most important information (what it does) is front-loaded.

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

    Completeness4/5

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

    For a list tool with 3 parameters and an existing output schema (not shown but present), the description covers the essential behavioral details (filtering, pagination). It is sufficient for an AI agent to invoke correctly, though it could briefly mention the return type.

    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?

    Although the schema has 0% description coverage, the tool description provides clear, actionable explanations for each parameter (domain, limit, offset) including defaults and examples, fully compensating for the schema gap.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states 'List installed Odoo models', using a specific verb and resource. It distinguishes from sibling tools like read_record (reads a single record) and search_records (searches records, not models).

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

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No guidance is provided on when to use this tool versus alternatives. No exclusions or context for when not to use it. Given the sibling tools list, explicit differentiation would help an AI agent select the correct tool.

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

  • Behavior3/5

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

    Annotations already indicate not destructive. The description adds return value (ID of new record). However, it does not disclose potential side effects (e.g., triggering workflows) or permission requirements beyond the annotations.

    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 highly concise: one sentence of purpose, then structured Args and Returns sections. Every line adds value with no redundancy.

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

    Completeness4/5

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

    Given the simple input schema (two parameters) and presence of an output schema, the description covers the core semantics. It could mention that the model must exist, but overall it is sufficient for a create operation.

    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?

    With 0% schema description coverage, the description adds crucial meaning: explaining 'model' as an Odoo model name with example, and 'values' as a dict of field-value pairs. This compensates well for the sparse 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: 'Create a new record in an Odoo model.' It provides specific examples and distinguishes it from siblings like read_record, update_records, and delete_records by focusing on creation.

    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 creating new records but does not explicitly differentiate when to use vs. alternatives (e.g., update_records for existing records). No guidance 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.

  • Behavior3/5

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

    Annotations already provide readOnlyHint=true. The description adds that the fields parameter defaults to all fields, but does not disclose other behavioral traits like error handling or performance. It adds value beyond annotations but could be more comprehensive.

    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 concise, using two sentences for purpose and a clear Args list. Every sentence is necessary and front-loaded, with no unnecessary text.

    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 tool with an output schema, the description covers all parameters and their semantics. It does not describe return values, but the presence of an output schema mitigates that need. It is sufficiently complete for a tool of this complexity.

    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?

    Since schema description coverage is 0%, the description adds essential meaning for each parameter: model with example, ids as list of integers, fields with default behavior. This significantly helps an agent understand required inputs beyond the schema types.

    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 'Read specific Odoo records by their IDs', using a specific verb and resource. It is distinct from sibling tools like search_records (searching) and create_record (creating), making it easy for an agent to select correctly.

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

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage when you have IDs and need to fetch records, but does not explicitly state when to avoid this tool or mention alternatives like search_records for searching. The guidance is adequate but not explicit.

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

  • Behavior3/5

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

    Annotations already set destructiveHint=true, so description doesn't need to repeat that. Description adds that the tool accepts model, method, ids, and params, but does not explain behavior like side effects on different record IDs or error handling, which would add value beyond annotations.

    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?

    Extremely concise: two sentences plus a clear argument list. No unnecessary words, front-loaded with purpose and usage guidance. Every sentence earns its place.

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

    Completeness3/5

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

    Given absence of output schema, description should indicate return value (e.g., the method's result). It also does not clarify behavior when 'ids' is null (operates on all records? or none?). These gaps reduce completeness despite good parameter explanations.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 0%, but description fully explains all four parameters: model, method, ids (optional list of IDs), and params (optional dict of kwargs). This provides meaning beyond the schema's type/title, compensating for lack of schema descriptions.

    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 'Call any public method on an Odoo model', using a specific verb and resource. It differentiates from sibling tools like get_model_doc (discovery) and create_record (creation).

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

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly advises to 'Use get_model_doc first to discover the correct parameter names and types', setting a clear precondition and suggesting an alternative for discovery. Lacks explicit when-not scenarios but provides enough context.

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

  • Behavior4/5

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

    Annotations indicate readOnlyHint=true. The description does not contradict and adds details about default values (limit=80, offset=0) and parameter behavior, which supplements the annotation.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise with a clear first sentence and organized Args section. It could be slightly more front-loaded but is well-structured without extraneous content.

    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?

    All 6 parameters are explained, defaults are given, and examples provided. The return value is not described, but output schema exists, so completeness is adequate.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema has 0% description coverage, but the description explains each parameter's meaning, including model examples and domain format, adding significant value beyond the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states 'Search for records in any Odoo model', using a specific verb and resource. This distinguishes it from sibling tools like create_record, delete_records, and read_record.

    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 does not explicitly provide guidance on when to use this tool versus alternatives. While it explains parameters, it lacks when-not or alternative tool recommendations.

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

  • Behavior4/5

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

    Annotations already indicate readOnlyHint=true. The description adds that it returns a dict mapping field names to metadata (type, string, required, relation, etc.), providing useful behavioral context beyond the annotations.

    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?

    Description is concise: two sentences covering purpose, return format, and parameters, with no wasted words. Structured logically with purpose first, then details.

    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?

    With only two parameters (one required) and no output schema, the description fully explains input parameters and return format (dict mapping field names to metadata). No gaps remain.

    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 0%, so description must carry full burden. It explains each parameter: model as 'The Odoo model name (e.g. res.partner)' and attributes with example list and default behavior. This adds significant meaning beyond bare 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 gets field definitions for an Odoo model, with a specific verb ('get') and resource ('field definitions'). It distinguishes from siblings like list_models (lists models) and read_record (reads records).

    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 gives no guidance on when to use this tool versus alternatives (e.g., get_model_doc might be related). Purpose is clear but no explicit when-to-use or when-not-to-use context.

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

  • Behavior5/5

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

    The description discloses behavioral traits beyond annotations (readOnlyHint, openWorldHint): it explains that without a method name, a compact summary is returned, and with a method name, full documentation is returned. It also mentions the required group for access. No contradiction with annotations.

    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 well-structured with paragraphs and front-loaded key information. It is detailed but not overly verbose. A slight reduction in explanatory prose could be made, but every sentence serves a purpose.

    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 (2 params, no output schema, annotations present), the description is complete. It covers input semantics, output behavior (compact vs full), and access requirements. No critical gaps exist.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Despite 0% schema description coverage, the description thoroughly explains both parameters. 'model' is described as the Odoo model name with an example. 'method' is described as optional, and its effect on the output (summary vs full docs) is clearly stated, adding significant meaning beyond the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose: 'Get API documentation for an Odoo model.' It distinguishes between two modes (compact summary vs full documentation) based on the method parameter. It also differentiates from sibling tools like call_method by explicitly advising usage before it.

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

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description advises using this tool before call_method to discover parameter names and types, providing clear context. It mentions a prerequisite (API key user must be in the api_doc.group_allow_doc group). However, it does not explicitly state when not to use it or provide alternatives for other related tasks (e.g., using get_model_fields for field definitions).

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

odoo-mcp MCP server

Copy to your README.md:

Score Badge

odoo-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bemade/odoo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server