A proxy MCP server for Microsoft's playwright-mcp with efficient handling of large binary data (screenshots, PDFs) through blob storage
This MCP server has significant definition quality gaps. Tool names are descriptive and follow verb-noun conventions (browser_navigate, browser_snapshot, browser_evaluate), which is good. However, parameter descriptions are sparse or missing entirely across most tools. The browser_pool_status tool has an empty input schema with no description of what it returns. The browser_execute_bulk tool has detailed parameter schemas with good descriptions, but browser_navigate, browser_wait_for, browser_evaluate, and browser_snapshot lack sufficient parameter-level documentation. Most critically, there is no documented output schema for any tool, LLMs cannot understand what data structures they will receive. The browser_snapshot tool is the most complete with parameter descriptions (flatten, limit, offset, cache_key, output_format, jmespath_query), but even it lacks an output schema definition. Error handling, recovery guidance, and actionable error messages are not evident in the provided code. Security concerns exist: no mention of permission gates, audit logging, or secret injection patterns.
Execute JavaScript code in the browser context
Execute multiple browser commands on the same instance with automatic assignment to available browser pool instances
Navigate to a URL in the browser
Check available browser instances in the pool
Get an ARIA snapshot of the current page with optional flattening and pagination
Wait for a specified time period
No output schemas documented for any tool. LLMs cannot plan downstream tool calls or extract relevant data without knowing the response structure.
browser_pool_status has an empty input schema {} with no description of what it returns. Violates the requirement that all tools document output structure.
Tool descriptions are present but minimal (mostly 30-85 chars). They lack context on when to use each tool instead of similar ones, prerequisites, and side effects. For example, browser_navigate does not state whether it blocks until page load completes or returns immediately.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No error handling guidance. Tools do not describe how errors are categorized (retryable vs. fatal), what the LLM should do on failure, or how to recover. For example, browser_navigate timeout errors are mentioned in a parameter but not in error documentation.
browser_execute_bulk mixes multiple responsibilities (command batching, instance assignment, result filtering). Consider splitting into separate tools or documenting the composition more clearly.
browser_snapshot pagination parameters (limit, offset, cache_key) are defined but lack clear documentation on how pagination works in the response. Does the response include a next_cursor? What fields are paginated?
No security documentation. No mention of permission gates, audit trails, rate limiting, or secret injection patterns. browser_evaluate allows arbitrary JavaScript execution, should document permissions required.