MCP server for browser automation and web interaction. Enables Claude to control Chrome/Chromium browsers, take screenshots, extract page content, fill forms, and manage browser sessions with support for profiles, snapshots, and PII anonymization.
Pagerunner Skill exhibits significant definition gaps. While tool names follow verb_noun conventions (open_session, list_tabs, navigate), descriptions are present but often lack actionable detail for LLM selection. Input schemas are visible and typed, but many parameters lack descriptions or constraints. Output schemas are not documented. Error handling guidance is absent. The skill appears designed for human-readable examples rather than LLM-optimized tool definitions. Transport mechanism is unknown, preventing full assessment.
Close a browser session and clean up resources.
Execute JavaScript code in the page context and return the result. Used for testing selectors and querying DOM.
Fill a form input field with text. Supports de-tokenization of PII tokens when anonymize mode is enabled.
Extract the text content of the current page. When anonymize mode is enabled, PII is automatically tokenized.
Retrieve a value from the persistent KV store by namespace and key (requires daemon mode).
Store a key-value pair in the persistent KV store (requires daemon mode). Used for inter-agent coordination.
List all saved snapshots for a profile, optionally filtered by origin.
List all open tabs in a browser session. Returns array of tab objects with target_id and other metadata.
Output schemas not documented. Tools like screenshot, get_content, list_tabs, and evaluate return data but no schema is provided. LLMs cannot plan downstream tool calls or extract fields without knowing response structure.
Error handling guidance absent. No tool documents what errors can occur, whether they are retryable, or what the LLM should do next. E.g., navigate() may fail if URL is invalid or network is down, but no recovery guidance is provided.
Parameter descriptions incomplete or missing. 'ms' in wait_for lacks description of units/range. 'code' in evaluate lacks guidance on what JavaScript context is available. 'value' in kv_set/fill lacks format constraints (JSON string vs plain text).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Navigate to a URL in a specific tab within a session.
Open a browser session with a specified Chrome profile. Returns a session ID for use with other tools.
Restore a previously saved authenticated browser state snapshot for a specific origin.
Save an authenticated browser state snapshot for a specific origin. Snapshots can be restored later to avoid re-authentication.
Take a screenshot of the current page in a tab. Returns screenshot as base64 or saves to temp file.
Scroll the page by a specified amount in pixels.
Wait for a DOM element matching a CSS selector to appear on the page, with optional timeout.
Tool descriptions lack WHEN-to-use guidance. 'Navigate to a URL' is what it does, but when should an LLM call navigate vs wait_for vs screenshot? No disambiguation between similar tools (e.g., get_content vs screenshot both reveal page state).
Transport mechanism unknown. Source code does not reveal whether this is STDIO, HTTP, SSE, or another transport. Cannot assess protocol readiness without knowing how the server communicates.