Browser automation and spreadsheet reading for MCP using Playwright
21 tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. Most tools have 1-2 parameters with type info, but lack depth in descriptions (many under 50 chars). No output schemas documented. No error recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Naming is verb-forward (launch_, navigate, click, get_) which is good, but descriptions are minimal and many parameters lack descriptions entirely. Token tracking and config system present but not exposed as tools.
Check or uncheck a checkbox
Click on an element identified by selector
Close the browser instance
Execute JavaScript code in the page context
Fill multiple form fields at once
Get an attribute value from an element
Get the text content of an element
Get the text content of the current page
Get the HTML content of the current page
No output schemas documented. Tools return results but LLMs cannot predict structure (fields, types, pagination). Violates pattern:tool and mxe:response-field-naming.
Descriptions are too brief (most 30-60 chars). Lack WHAT/WHEN/WHY context. E.g. 'Click on an element identified by selector' does not explain when to use click vs hover vs execute_script. Violates pattern:tool-description baseline of 194 chars avg.
No error handling guidance. Tools fail silently or with raw exceptions. No recovery hints (e.g. 'selector not found, try wait_for_selector first'). Violates pattern:recovery-guide.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Get the title of the current page
Get the current page URL
Hover over an element
Launch a browser instance (Chrome, Firefox, Edge, or WebKit)
Navigate to a URL in the current browser page
Press a keyboard key
Read and parse an Excel or CSV spreadsheet file
Take a screenshot of the current page
Scroll the page to a specific position or element
Select an option from a dropdown
Type text into an input field
Wait for an element matching a selector to appear on the page
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. E.g. execute_script is marked WRITE but no annotation present. Violates current spec alignment.
Parameter descriptions missing or minimal. E.g. 'selector' param in click, hover, get_element_text lacks format guidance (CSS selector syntax, examples). Violates pattern:tool-description baseline of 72 chars avg per param.