MCP server for AI-based Odoo accounting tools
Single tool with adequate naming and basic schema, but lacks depth in parameter descriptions and has no documented output schema. The tool name 'get_recent_journal_entries' follows verb_noun convention appropriately. However, parameter descriptions are minimal (e.g., 'Optional start date for filtering journal entries' lacks format specification), and there is no explicit output schema documentation visible in the code. The tool description itself is functional but brief (60 chars). Error handling exists (try/except with success/error fields) but provides no recovery guidance. No parameter validation or constraint declarations (e.g., date format, limit bounds). The implementation mixes FastAPI HTTP endpoint with FastMCP tool definition, both are exposed but only the FastMCP tool is relevant to MCP scoring.
Fetches recent journal entries (account.move) for AI analysis. Allows optional filtering by date.
No output schema documented. Consumers cannot predict the structure of the 'result' field or plan downstream tool calls.
Parameter descriptions lack format specifications and constraints. 'start_date' and 'end_date' do not specify ISO 8601 format, locale requirements, or validation rules. 'limit' has no min/max bounds documented.
Tool description is too brief (60 chars) and lacks context on when to use it, what it returns, and dependencies. Minimum recommended: 100 - 300 chars with explicit return structure hints.
Error handling returns generic error strings ('error': str(e)) with no recovery guidance. LLM has no actionable next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Credentials (ODOO_URL, ODOO_DB, ODOO_USERNAME, ODOO_PASSWORD) are passed to OdooClient at module load time via environment variables. While this avoids exposing secrets as tool parameters, there is no validation of their presence or encryption at rest.