MCP server for browser automation via Chrome extension using a generic connection broker
The server defines 3 tools with reasonable structure, but has mixed quality across naming, descriptions, and schemas. Tool names follow verb-first convention (initiate_session, list_tabs, execute_js), which is correct. Descriptions exist and are substantive (100+ chars each), but lack clarity on when to use vs. alternatives and return structures. Schemas are partially visible but incomplete in key areas: execute_js output schema is entirely missing, list_tabs has complex optional fields with no guidance on which to request, and parameter relationships (extensionConnectionId + sessionToken as paired prerequisites) are documented but could be clearer. Error handling and recovery guidance are absent from descriptions. The hostnames parameter validation rule (regex pattern for wildcard masks) is documented in the description but not enforced in visible schema constraints.
Execute JavaScript code in a browser tab and return the result
Initiate a browser automation session. Shows an approval dialog to the user with the session code. Returns a session token and extension connection ID on approval, or indicates rejection.
List all open browser tabs
execute_js has no documented output schema. LLMs cannot plan what to do with the result or handle errors predictably.
All three tools require paired parameters (extensionConnectionId + sessionToken) obtained from initiate_session, but do not document this prerequisite or state that both are mandatory. Undocumented parameter dependencies cause silent misuse.
list_tabs returns 18 optional fields with no guidance on selection. Parameter description says 'save traffic' but does not recommend which fields to request for common tasks (e.g., filtering by URL requires url field). LLMs will request all fields, wasting bandwidth.
No error recovery guidance. Descriptions lack 'what to do if' clauses. E.g., execute_js does not document what happens on syntax error, timeout, or permission denial. LLMs cannot self-correct.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 49 | - | v1 |
initiate_session description does not explain when/why hostnames parameter is needed or what security model it enforces. Missing: what happens if agent requests access to disallowed hostnames.
tabFilter parameter accepts MongoDB sift query but provides no examples, field constraints, or error handling. Complex parameter with minimal guidance invites hallucinated filter syntax.