MCP server bridge that exposes WebMCP tools from Chrome to OpenCode
WebMCP Bridge exposes 10 tools with explicit schemas and descriptions. Naming is verb-prefixed (webmcp_*) and mostly clear, though some tools combine multiple concerns (webmcp_invoke_tool is a generic dispatcher). Descriptions are present (avg ~120 chars) but lack actionable context for LLM selection, e.g., webmcp_evaluate does not warn about destructive capability or when to use it vs webmcp_invoke_tool. Input schemas are well-formed with types and constraints (enums for format, min/max for quality/limit), but output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. Parameters like 'code' in webmcp_evaluate lack format/safety constraints. Tool composition has issues: webmcp_invoke_tool is a generic dispatcher that bypasses the tool registry, forcing agents to discover tools via webmcp_status or webmcp_evaluate rather than listing them directly.
Empty the in-memory history ring buffer.
Execute arbitrary JavaScript on the page and return the result
Return recent tool invocations from the in-memory history ring buffer. Most recent first. Use limit to control how many entries are returned; pass toolName to filter by a single tool.
Execute a WebMCP tool by name. Use webmcp_status (toolNames) or webmcp_evaluate with document.modelContext.getTools() to discover available tools.
Navigate Chrome to a URL and refresh discovered WebMCP tools
Open a new tab, optionally navigating to a URL. Returns the new tabId. The previously active tab remains active.
webmcp_evaluate lacks safety constraints and destructive-operation warning. Accepts arbitrary JavaScript with no validation, format constraints, or guidance on when to use it vs webmcp_invoke_tool. Description does not warn of irreversible consequences.
webmcp_invoke_tool is a generic dispatcher that bypasses the tool registry. Agents must call webmcp_status or webmcp_evaluate to discover available tools rather than using list_tools. This breaks the MCP tool discovery contract and forces agents into multi-step discovery workflows.
Output schemas are not documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., tabId from webmcp_open_tab, tools array from webmcp_status). This violates the documented-output-schema requirement.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Register sample WebMCP tools for testing
Capture a screenshot of the current page and return it as an MCP image. Returns the viewport by default; pass fullPage for the entire scrollable page, or clip to capture a region.
Report WebMCP connection status, current page URL, tab count, and tool count for the active tab
Switch active tab
Descriptions lack actionable context for LLM selection. webmcp_status says 'Report WebMCP connection status...' but does not explain when to call it vs webmcp_navigate or webmcp_invoke_tool. webmcp_clear_history lacks any description of consequences.
Error handling is absent. No recovery guidance, categorization (retryable vs fatal), or actionable error messages. Tools that fail (e.g., tab not found, frame detached) return raw errors with no guidance on next steps.