MCP server for Odoo CRM integration, providing tools to manage leads, contacts, and customers
Server has 16 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (10-50 chars, mostly under 20 chars), which violates the 20-char minimum for scoring above 0-20. Parameter descriptions are present but minimal. No output schemas documented. Error handling returns generic HTTP codes without recovery guidance. Tool names follow verb_noun pattern (good), but descriptions lack context on WHEN to use tools or what they return. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Schemas are present but sparse, many parameters lack type constraints or enums. No pagination support visible despite list tools. No idempotency guarantees documented.
Run to create a contact in odoo crm.
Run to create a customer in odoo crm.
Run to create a lead in odoo crm.
Run to delete a contact in odoo crm.
Run to delete a customer in odoo crm.
Run to delete a lead in odoo crm.
Run to get contact details by ID from odoo crm.
Tool descriptions are too short (10-50 chars, mostly <20 chars). Rubric requires 10-1024 chars with context on WHAT, WHEN, and WHAT IT RETURNS. Examples: 'Run to get leads list from odoo crm.' lacks guidance on when to call vs get_lead_by_id, what fields are returned, or pagination behavior.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., create_leads returns {code, message, ID?} but schema is not declared. Rubric requires documented return types for 100% of A+ tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Run to get lead details by ID from odoo crm.
Run to get contacts list from odoo crm.
Run to get customers list from odoo crm based on filters.
Run to list customers assigned to a specific salesperson in odoo crm.
Run to get leads list from odoo crm.
Run to search for a customer in odoo crm by email.
Run to update a contact in odoo crm.
Run to update a customer in odoo crm.
Run to update a lead in odoo crm.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Agents cannot distinguish safe retries from destructive operations. Spec 2026-07-28 supports tool annotations, should be used.
Error responses return generic {code, message} without recovery guidance. Rubric requires: 'Error responses must tell the LLM what to do next.' Example: 'Failed to create lead' gives no hint whether to retry, ask user, or call a different tool.
No pagination support visible in list_* tools. Rubric requires: 'Tools returning lists should accept page/offset and limit parameters and return a total count.' list_leads, list_contacts, list_customers lack limit/offset/page_size params and do not document result caps.