MCP server for BabelWrap — give AI agents web browsing superpowers.
BabelWrap defines 16 tools with consistent naming (verb_noun pattern: babelwrap_*), all with descriptions and Zod schemas. However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions are present but minimal (10-50 chars). Output schemas are not documented, responses are JSON-stringified snapshots with no field-level guidance. Error handling is absent; no recovery guidance or categorization. The 'compact' parameter is repeated across all tools but never explained. Session management is stateless but lacks idempotency guarantees.
Navigate back in the browser history.
Click an element on the page using a natural language description. TIP: Pass an element ID from a previous snapshot for instant, deterministic targeting.
Close and clean up a browser session.
Extract structured data from the current page using a natural language query.
Fill an input field with a value. TIP: Pass an element ID from a previous snapshot for instant, deterministic targeting.
Navigate forward in the browser history.
Output schemas undocumented. Tools return JSON-stringified snapshots (snap.toDict()) with no field-level documentation. LLMs cannot plan downstream calls or extract specific data without reverse-engineering the response structure.
No error handling or recovery guidance. Tools lack try-catch blocks, error categorization, or actionable error messages. If a click fails or a session expires, the LLM receives no guidance on retry strategy or next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Hover over an element on the page. TIP: Pass an element ID from a previous snapshot for instant, deterministic targeting.
Navigate to a URL and get a structured snapshot of the page.
Create a new browser session for web interaction.
Press a keyboard key on the current page.
Take a screenshot of the current page (for debugging).
Scroll the page up or down.
Get the current page state as a structured snapshot without taking any action.
Submit a form on the current page. TIP: Pass an element ID from a previous snapshot for instant, deterministic targeting.
Upload a file to a file input element on the page.
Wait for a condition on the page before proceeding.
'compact' parameter repeated across all 16 tools but never explained. Description says 'If true, return a compact snapshot with minimal whitespace', unclear what 'compact' means (minified JSON? stripped HTML? reduced fields?). LLMs cannot reason about when to use it.
Session management lacks idempotency guarantees. babelwrap_close_session and babelwrap_new_session do not document whether repeated calls with the same session_id are safe or will error. Agents retry on ambiguous failures, non-idempotent tools risk duplicate side effects.
Natural language targeting ('target' parameter in click, fill, hover, submit) is ambiguous. Description says 'Pass an element ID from a previous snapshot for instant, deterministic targeting' but does not explain fallback behavior if ID is not found or if natural language is ambiguous. No guidance on error recovery.