FastMCP 3.2 server for Playwright browser automation — browse, click, screenshot, extract
8 tools with basic descriptions and partial schemas. Most tools have input schemas with type definitions, but descriptions are inconsistent in depth. browse_page has a detailed description (194 chars) exceeding baseline; others are terse (20-80 chars). No output schemas documented. Error handling absent, tools do not guide recovery or categorize failures. Parameter descriptions exist but lack constraints (enums, ranges, format specs). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Naming is verb-forward (browse_, click_, extract_, fill_, press_, close_, list_) but some names are generic (extract_text, press_key). No documented composition or chaining guidance.
BROWSE_PAGE - Navigate to a URL and extract all visible text content. Visits the URL (waiting for DOM content), then returns the page title, final URL, HTTP status, and visible inner text (first 20K chars). engine: "auto" (Obscura fast path when available, else Playwright), "obscura" (force Obscura fetch), or "playwright" (force Playwright).
CLICK_ELEMENT - Click an element on the current page by CSS selector.
CLOSE_BROWSER - Close the browser and release Playwright resources.
EXTRACT_TEXT - Extract inner text from a CSS selector.
FILL_INPUT - Type text into an input field (clears existing value first).
LIST_BROWSERS - Detect installed browsers and available profiles. Scans common installation paths for Chrome, Firefox, Edge, and Brave. Also reports Firefox profiles from profiles.ini.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. browse_page, screenshot, list_browsers return data but structure is undocumented.
No error handling guidance. Tools do not indicate what to do on failure (retry, ask user, fatal). No categorization of errors as retryable vs user-fixable.
Parameter descriptions lack constraints. 'key' in press_key lists examples (Enter, Escape, ArrowDown, Tab) but no enum or format spec. 'selector' in click_element has no guidance on CSS selector syntax or validation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
PRESS_KEY - Press a keyboard key (Enter, Escape, ArrowDown, Tab, etc.).
SCREENSHOT - Take a PNG screenshot of the current viewport. Returns the image as base64 so hosts can render or save it.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry or have side effects. click_element and fill_input are WRITE but unmarked.
Descriptions for click_element, extract_text, press_key, close_browser are under 50 chars and lack context. 'CLICK_ELEMENT - Click an element on the current page by CSS selector.' does not explain when to use it vs other interaction tools or what happens on failure.