HTTP API server exposing patchright browser automation with profile management via MCP (Model Context Protocol)
Server exposes 20 tools with consistent naming (verb_noun pattern) and reasonable descriptions. However, critical gaps exist: parameter descriptions are sparse or missing entirely (e.g., browser_tabs 'action' param lacks detail on what each action does), output schemas are undocumented, and error handling provides no recovery guidance. Most tools lack information about what fields they return, forcing LLMs to guess. Proxy and profile management tools are well-structured, but browser interaction tools (click, fill, evaluate) have minimal parameter documentation. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels.
Click an element on the page.
Execute JavaScript in a tab and return result.
Fill a form field with text.
Navigate to a URL in a tab.
Get health status of a profile's browser subprocess (uptime, memory, etc).
List, create, or close browser tabs.
Take a screenshot of the current tab.
Wait for an element to appear on the page.
Output schemas completely undocumented. No tool describes what fields it returns, forcing LLMs to guess structure and plan downstream calls blindly.
Parameter descriptions missing or vague. browser_tabs 'action' enum has no explanation of what 'list', 'create', 'close' do. browser_evaluate 'script' lacks format guidance (JavaScript? Python?). LLMs cannot infer intent.
No tool annotations despite clear risk levels. profile_delete and proxy_delete are destructive but lack destructiveHint. browser_health and profile_list are read-only but lack readOnlyHint. Agents cannot distinguish safe from risky calls.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | 2026-07-28+ | v2 |
Close subprocess(es) for a profile.
Create a new profile. Does NOT spawn subprocess. Mode is per-spawn (set in profile_open).
Delete a profile and its data directory.
Get profile details by name.
List all registered profiles with status.
Spawn subprocess for a profile in specified mode (headless or headed). Returns process info.
Set the default profile (used when no profile specified in tool calls).
Update profile settings (does not affect running subprocess).
Add or update a proxy configuration.
Delete a proxy configuration.
Get proxy configuration by name.
List all registered proxy configurations.
Error handling provides no recovery guidance. Code returns generic _err() with no actionable next steps. 'Profile not found' should suggest 'Call profile_list() to see available profiles.'
Destructive operations (profile_delete, proxy_delete) lack confirmation/dry-run pattern. Agents can delete profiles without verification, risking data loss.