Model Context Protocol server for Browserless.io browser automation
Browserless MCP exhibits significant quality gaps across naming, descriptions, and schema completeness. Tool names lack consistent verb-noun structure (e.g., 'unblock', 'execute_browserql' are vague). Descriptions are present but often generic (10-50 chars), failing to explain WHEN to use each tool or what distinguishes similar tools. Critical issue: 6 tools (initialize_browserless, execute_function, download_files, execute_browserql, create_websocket_connection, unblock) lack visible input schema validation in source. Duplicate tool definitions (get_content, generate_pdf appear twice with inconsistent schemas). Parameter descriptions are sparse; many lack type constraints or format guidance. No documented output schemas. Error handling is minimal, no recovery guidance or categorization. Security concern: initialize_browserless exposes token as a required parameter, violating secret-injection pattern.
Create WebSocket connection for Puppeteer/Playwright
Handle file downloads
Execute BrowserQL GraphQL queries
Execute custom JavaScript function in browser context
Export webpage with resources
Generate PDF from URL or HTML content
Generate PDF from URL with custom styling
Six tools lack visible input schema definitions (execute_function, download_files, execute_browserql, create_websocket_connection, and duplicates).
Token parameter exposed in initialize_browserless as required input. Violates secret-injection pattern, credentials must use server-side injection, not tool parameters. Secrets in params leak into agent logs and traces.
Duplicate tool definitions: get_content and generate_pdf appear twice (src/index.ts and src/simple-server.ts) with inconsistent schemas. LLM will be confused about which to call.
Vague tool names: 'unblock' (does it unblock a URL? A connection?), 'execute_browserql' (unclear what BrowserQL is), 'execute_function' (too generic). Names should start with clear action verbs and convey intent without reading description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
Get configuration
Extract rendered HTML content from a webpage
Extract rendered HTML content from a webpage
Get health status of Browserless instance
Get metrics
Get active sessions
Initialize connection to Browserless instance
Run Lighthouse performance audit
Take screenshot of a webpage
Test connection to Browserless instance
Bypass bot detection and anti-scraping measures
Descriptions are too short (avg 35-50 chars, baseline 194 chars). Most lack WHEN to use, prerequisites, or distinction from similar tools. E.g., 'Extract rendered HTML content' does not explain when to call get_content vs take_screenshot vs export_page.