Playwright MCP with trace viewer and video recording capabilities
25 tools with consistent naming (browser_* prefix) and basic schemas. All tools have descriptions (10-50 chars, below ideal 50-200 char range). Input schemas present but minimal, most parameters lack detailed constraints, enums, or format specifications. No output schemas documented. Error handling not visible in provided code. Parameter descriptions are terse (e.g., 'CSS selector or Playwright locator' repeated 8+ times). No tool annotations (readOnlyHint/destructiveHint). Risk classifications present but not integrated into descriptions. Composition is sound (single responsibility per tool), but descriptions don't guide LLM selection or explain when to use each tool vs. alternatives.
Click on an element
Close a tab
Log a message to the browser console
Download a file from the page
Evaluate JavaScript in the page context
Fill in a form field
Get an attribute value from an element
Get network request/response logs
Get text content from an element
Parameter descriptions are generic and repeated. 'CSS selector or Playwright locator' appears 8+ times without explaining when to use each, format constraints, or examples. LLMs cannot distinguish between valid inputs.
No output schemas documented. Tools return images, text, or structured data, but LLMs have no visibility into response structure. Prevents downstream tool chaining and forces LLMs to guess field names.
No enum constraints on parameters accepting fixed values. 'direction' in browser_scroll should be enum [up, down, left, right]; 'action' in browser_handle_dialog should be enum [accept, dismiss]. Free-form strings invite hallucinated values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Handle a dialog (alert, confirm, prompt)
Install a browser or browser channel
Navigate to a URL in the current tab
Open a new tab
Generate a PDF of the current page
Press a key
Take a screenshot of the current page
Scroll the page
Select a tab by index
Capture an accessibility snapshot of the page
Start recording a trace of browser actions
Start recording video of the browser session
Stop recording trace and save the file
Stop recording video and save the file
Upload a file through a file chooser
Wait for an element to appear
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk classifications exist (READ_ONLY, WRITE) but are not exposed in tool metadata. LLMs cannot reason about side effects or retry safety.
Descriptions under 50 characters lack context for LLM selection. 'Log a message to the browser console' (45 chars) doesn't explain when to use this vs. browser_evaluate. Baseline for A+ tools is 50-200 chars with WHEN/WHY guidance.