Browser automation for AI agents: a small Rust MCP server driving a bundled Chromium, with Playwright MCP's tools plus agent-first reading, batching and an in-place human hand-off.
Strong tool coverage with 34 well-named browser automation tools. All tools have descriptions (10-200 chars, within baseline 34-392 range). Input schemas are present and properly typed using schemars. Parameter descriptions are comprehensive and include constraints (e.g., snapshot options, timeout defaults, selector formats). However, output schemas are not documented, responses are inferred from code but not formally specified in tool definitions. Error handling is present but recovery guidance is minimal. Tool composition is excellent (single responsibility, chainable IDs), and naming follows verb_noun convention consistently (browser_*). Security considerations are addressed via element permission descriptions.
Navigate back in history
Execute multiple tool calls in sequence
Click an element on the page
Close the current tab
Get console messages
Accept or dismiss a dialog
Drag an element to another location
Drop files or data onto an element
Output schemas not documented. Tool definitions lack formal response type specifications. LLMs cannot plan downstream calls or extract required fields without seeing what each tool returns.
Error handling lacks recovery guidance. Tools return errors but do not suggest next steps (e.g., 'Element not found. Try browser_snapshot() to see current page state.').
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint metadata. LLMs cannot distinguish safe reads from destructive writes without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 74 | 2026-07-28+ | v2 |
Execute JavaScript in the page context
Fill a text input field
Fill multiple form fields at once
Search for text in the page snapshot
Navigate forward in history
Navigate to a URL and wait for it to load
Hand off control to a human; switches to headed mode and waits for the human to close the browser
Hover over an element on the page
Press a key or key combination
List all links on the page
Navigate to a URL
Get details of a network request
List network requests
Open a new tab
Generate a PDF of the current page
Reload the current page
Resize the viewport
Take a screenshot of the current page
Scroll the page
Select options in a select element
Switch between headless and headed mode
Switch to a specific tab
Take a snapshot of the current page
List all open tabs
Type text into a focused element
Upload files through a file chooser
Minimal parameter constraints. Numeric parameters (timeout, width, height, quality) lack min/max bounds. LLMs can pass absurd values (timeout=999999, quality=1000).
Batch tool (browser_batch) lacks clear semantics. No documentation of atomicity, partial failure handling, or rollback behavior. Agents cannot reason about failure modes.