TypeScript MCP server for Odoo JSON-2 API with HMAC webhooks and Redis caching
Server has 4 tools with complete schemas and basic descriptions. Naming follows verb_noun convention (search_*, get_*, create_*). Schemas use Zod validation with proper types. However, descriptions are generic (34-72 chars, below 194-char baseline), lack WHEN/WHY context, and parameter descriptions are minimal. No output schema documentation. Error handling is basic (generic 400 errors). Missing idempotency guidance for create_sales_order. Tool composition is reasonable but descriptions don't guide LLM selection between similar tools.
Create a sales order for a customer with one or more product lines.
Get credit limit, outstanding balance, and overdue amount for a customer by partner_id.
Search active customers by name (case-insensitive partial match).
Search customer invoices. Filter by customer_name, state (draft/posted/paid), and limit.
Tool descriptions lack WHEN/WHY context and are below 100 chars. 'Search customer invoices' does not explain when to use this vs get_customer_balance or when to call it in a workflow. Baseline is 194 chars with actionable guidance.
Output schemas are not documented. LLMs cannot plan downstream calls or extract required fields (e.g., does search_invoices return invoice_id, partner_id, state?). Baseline: 100% of A+ tools document return types.
create_sales_order lacks idempotency guidance and confirmation pattern. Agents may retry on ambiguous failures, causing duplicate orders. No dry-run or confirmation step documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Error responses are generic (400 status, error message only). No recovery guidance. E.g., if partner_id not found, should LLM call search_customers first? No actionable next step provided.
Parameter descriptions are minimal. 'Odoo partner/customer ID (positive integer)' lacks context on how to obtain it. Should mention 'Use search_customers to find partner_id' to guide multi-step workflows.