MCP server that provides browser automation and web scraping tools for LLM agents. Enables agents to control browser tabs, capture page state, query DOM elements, read page content, and perform actions like navigation and clicking.
Server exhibits critical definition gaps across all dimensions. Tool descriptions are present but generic (avg ~60 chars, below 194-char baseline). Input schemas visible but lack proper type constraints and enums. Parameters missing descriptions in several tools (query, act, tools/call). No output schemas documented. Error handling absent, tools return raw JSON without recovery guidance. Naming is inconsistent: 'initialize' is not a verb_noun pattern; 'tools/call' is a meta-tool that duplicates functionality. No idempotency support despite write operations. Security: initialize tool exposes protocol version and client info without clear purpose. Overall structure suggests a thin HTTP wrapper around a remote browser API rather than a well-designed agent tool interface.
Perform browser actions like navigation, clicking, typing, and scrolling
Initialize MCP session with protocol version, capabilities, and client info
List all open browser tabs with their metadata
Query DOM elements with filters like selector, tag, salience, and pagination support
Read and extract text content from page using semantic selectors
Capture structured page state including DOM tree, metadata, viewport, and accessibility information
No output schemas documented. Tools return unstructured JSON without field definitions, forcing LLMs to parse responses blindly. sifr_capture, query, and read_page return complex nested structures with no schema guidance.
Parameter descriptions missing or incomplete. 'query' tool has 'cursor' param with no description of pagination semantics. 'act' tool's 'target' param description is vague ('Target URL for navigate, element ID for click, text for type'), does not specify format, constraints, or when each applies.
No error handling or recovery guidance. Tools return raw JSON errors without actionable next steps. Example: 'Empty response from act' error in code provides no guidance on retry, fallback, or root cause.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Generic tool invocation endpoint that routes to specific tools
Meta-tool 'tools/call' duplicates functionality and adds indirection. LLMs should call tools directly (list_tabs, act, query) not via a generic router. This violates single-responsibility and increases latency.
No enum constraints on string parameters. 'preset' in sifr_capture, 'action' in act, 'salience' in query accept free-form strings. LLMs will hallucinate invalid values. Should declare enums: preset=['normal', 'detailed'], action=['navigate', 'click', 'type', 'scroll'].