An MCP server that provides browser automation capabilities through Playwright, supporting parallel session management with Chromium, Firefox, and WebKit browsers.
23 tools with consistent verb-noun naming (navigate, click, screenshot, etc.). All tools have descriptions (10-50 chars, mostly adequate). Input schemas present with type definitions for all parameters. However, descriptions are uniformly brief (10-30 chars), below the 50-200 char baseline for LLM-optimized tools. Parameter descriptions lack detail on constraints, formats, and dependencies. Output schemas are not documented. Error handling guidance is absent. No tool annotations (readOnlyHint, destructiveHint). Composition is sound (single responsibility per tool), but descriptions do not explain WHEN to use each tool or what it returns.
Click an element on the page
Evaluate JavaScript code in the page context
Extract text content from the page
Fill an input field with text
Get the accessibility tree of the page
Get console logs from the browser session
Get the HTML content of the page
Get all links from the current page
Descriptions uniformly brief (10-50 chars), below 50-200 char baseline. Lack WHEN/WHY context for tool selection. E.g., 'Navigate to a URL' does not explain when to use navigate vs navigate_and_extract_text, or what waitUntil modes mean.
Output schemas not documented. LLMs cannot infer what fields are returned (e.g., does screenshot return base64 or URL? Does get_links return href, text, title?). Breaks downstream tool chaining.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. E.g., click, fill, evaluate are WRITE but unmarked.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
Get network logs from the browser session
Navigate back in browser history
Navigate forward in browser history
Hover over an element
Navigate to a URL in a browser session
Navigate to a URL and extract text content
Press a keyboard key
Query for elements matching a selector
Reload the current page
Take a screenshot of the current page
Select an option from a select element
Close a browser session
Create a new browser session
List all active browser sessions
Type text into an element
Parameter descriptions lack constraint details. E.g., 'waitUntil' accepts 'domcontentloaded, load, networkidle' but description does not state these are the only valid values. LLMs may hallucinate invalid options.
Tool 'navigate_and_extract_text' violates single-responsibility principle (combines navigate + extract). Should be split into separate tools so agents can compose them independently.