This server defines 19 tools across two feature domains (browser automation + Odoo integration). Overall definition quality is poor-to-fair. Most tools have short, generic descriptions (median ~40 chars) that lack context for LLM selection. Parameter descriptions are either absent or minimal. Input schemas are present but sparse, many lack descriptions for parameters. No output schemas documented anywhere. Error handling is minimal (no recovery guidance, no categorization). Tool naming follows verb_noun patterns correctly, but naming alone cannot compensate for missing parameter documentation and output schema documentation. The Odoo integration tools (13-19) are better-documented than browser tools (1-11), but both groups fall short of production baselines.
Tools (19)
clickwritesource verified60/100
Click an element. Use 'selector' (CSS) or 'text' (visible label).
Add output schema documentation for every tool. For browser tools, define whether screenshot returns base64 string, Image content block, or URL reference. For Odoo tools, document response structures (e.g., list_models returns {models: [{name, id}]}, search_read returns {records: [{id, fields}], count: integer}).
Add descriptions to all parameters. Format: 'parameter_name (type): [constraints]. What it controls. Example: email (string, optional): User email or username. Used to resolve the user ID. Leave blank to use authenticated user. Example: [email protected] or jsmith.'
Implement confirmation pattern for destructive tools. Offer a 'dry_run' bool parameter (default false) or separate 'preview_delete_records' and 'confirm_delete_records' tools. Document behavior clearly.
Expand tool descriptions to 100-200 chars, explaining WHAT the tool does, WHEN to use it (vs similar tools), and WHAT it returns. Example: 'Click an element on the page by CSS selector or visible text label. Use this to interact with buttons, links, checkboxes, or dropdowns. Returns the element state after click or an error if not found. Call screenshot() after to verify the result.'
Add error recovery guidance in tool descriptions. Example: 'If selector not found, call screenshot() to debug the page state, or use get_text() to find alternative element labels.'
Document mutually exclusive or conditional parameters explicitly. Example for 'click': 'Either selector (CSS) or text (visible label) required, not both. If both are provided, selector takes precedence.'
Score history
Overall score trend
↑ 45 points across a rubric change (v1 → v2)
45/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
F
45
2026-07-28+
v2
2026-03-09
F
0
-
v1
source verified
67/100
Get field definitions for a model.
list_modelsread onlyauthsource verified68/100
List all models available in Odoo.
navigateread onlysource verified65/100
Go to a URL in the sandboxed browser.
pingread onlyauthsource verified70/100
Check connectivity to the Odoo MCP module.
read_by_idsread onlyauthsource verified67/100
Read records by ID list.
screenshotread onlysource verified68/100
Capture the current viewport as a JPEG image.
scrollread onlysource verified62/100
Scroll the page up or down.
searchread onlysource verified60/100
Google search — opens results page.
search_readread onlyauthsource verified72/100
Search and read records from a model.
type_textwritesource verified62/100
Type into an input field.
update_recordswriteauthsource verified67/100
Update records by ID list.
wait_forread onlysource verified62/100
Wait for a CSS selector to appear, or wait N milliseconds.
Add numeric bounds to scroll amount (e.g., 1-10000), wait_for ms (e.g., 1-300000), and search_read limit (e.g., 1-100 or 1-1000 if appropriate).
Remove or replace the deprecated 'ping' tool. If health-checking is needed, integrate it into server initialization or provide a tool like 'check_odoo_connection' with actual diagnostic output (version, database, user permissions).
Document idempotency and side effects for WRITE/DESTRUCTIVE tools. Example for 'delete_records': 'Deletes records immediately and irreversibly. This operation cannot be undone. Ensure IDs are correct before calling. Returns {deleted_count: int, deleted_ids: [int]}. On failure, some records may be partially deleted.'
Add parameter type information to input schemas. Currently some params are strings with no regex, length, or enum constraints. Specify: URL format for navigate, valid CSS selectors for click, Odoo domain syntax for search_read, etc.