Playwright Tools for MCP - A Model Context Protocol server that provides browser automation capabilities using Playwright
Critical gaps across all dimensions. Only 2 tools defined; both have minimal descriptions (16-17 chars, well below 20-char floor). Input schemas present but extremely sparse, only 1 parameter per tool with no type validation, constraints, or error guidance. No output schemas documented. No error handling, recovery guidance, or idempotency markers. Tool names lack clarity on what state changes occur. Descriptions do not explain WHEN to use each tool or what happens to browser state. Parameters lack format constraints, ranges, or validation rules. No tool annotations (readOnlyHint/destructiveHint). This server would not pass code review for production use.
Click on an element in the browser
Navigate to a URL in the browser
Descriptions below 20-character floor. 'Navigate to a URL in the browser' (16 chars) and 'Click on an element in the browser' (17 chars) fail to explain WHEN to use each tool, what state changes occur, or prerequisites. LLMs cannot reliably select between tools with such minimal guidance.
No input parameter descriptions. 'url' and 'selector' parameters lack format constraints, examples, or validation rules. LLMs cannot infer whether 'selector' accepts CSS, XPath, test IDs, or all three. No guidance on valid URL schemes or selector syntax.
No output schemas documented. Callers do not know what fields to expect from browser_navigate or browser_click responses. This breaks tool chaining and forces LLMs to guess downstream parameter mappings.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 33 | <=2025-11-25 | v2 |
No error handling or recovery guidance. If navigation fails (404, timeout, network error) or click fails (element not found, stale reference), the LLM receives no actionable error message or retry strategy. Errors must categorize as retryable, user-fixable, or fatal.
No tool annotations. browser_click and browser_navigate are destructive (modify browser state) but lack destructiveHint annotation. Agents cannot reason about idempotency or side effects. No readOnlyHint or idempotentHint present.