Camoufox-powered MCP browser server with ref-based accessibility tools.
Server has 20 tools with consistent naming (browser_* prefix) and complete input schemas. Descriptions are present but generic (avg ~50 chars, well below the 194-char baseline). Most parameters have type definitions and descriptions, but lack actionable guidance on constraints, formats, and error recovery. No output schemas documented. Error handling is minimal, tools raise RuntimeError with brief messages offering no recovery path. Missing tool annotations (readOnlyHint, destructiveHint). Composition is reasonable (single responsibility per tool), but descriptions don't explain WHEN to use each tool or dependencies between them.
Perform click on a web page.
Close the current browser session.
Return collected console messages.
Drag from one ref to another.
Evaluate JavaScript on the page or a referenced element.
Handle an active file chooser.
Fill multiple form fields in one call.
Descriptions are too brief (avg ~50 chars vs 194-char baseline). Most lack WHEN/WHY guidance, prerequisites, or dependency hints. E.g., 'Close the current browser session' doesn't explain what happens to open tabs or how to recover.
No output schemas documented. Tools return TextContent lists, but LLMs cannot infer what fields are in the response or how to chain results to downstream tools. E.g., browser_tabs returns a list but structure is opaque.
Error handling is minimal. Tools raise RuntimeError with brief messages (e.g., 'No file chooser visible') offering no recovery guidance. LLMs cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Accept or dismiss an active dialog.
Hover over a web page element.
Navigate to a URL.
Go back to the previous page.
List network requests seen by the page.
Press a key on the keyboard.
Resize the current page viewport.
Select one or more values in a dropdown.
Capture the current accessibility snapshot.
List, create, close, or select a browser tab.
Take a screenshot of the viewport, full page, or a referenced element.
Type text into an editable element.
Wait for text to appear or disappear, or for a fixed duration.
Missing tool annotations. No readOnlyHint, destructiveHint, or idempotentHint declared. LLMs cannot distinguish safe (read-only) tools from destructive ones (e.g., browser_close vs browser_take_screenshot).
Parameter descriptions lack actionable constraints. E.g., 'key' in browser_press_key has no enum or format guidance. 'ref' parameters reference 'page snapshot' but don't explain how to obtain or format refs.