Server has 17 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, parameter descriptions are often generic or incomplete. Input schemas use Zod with type definitions, but lack detailed constraints (enums, ranges, patterns). Output schemas are not documented, responses are unstructured JSON strings. Error handling returns raw error messages without recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Descriptions average ~120 chars, which is acceptable but could be more LLM-optimized. Parameter descriptions often lack format/constraint details (e.g., 'Tab to target by URL or title substring' doesn't specify matching behavior or case sensitivity).
Capture authentication headers from network requests on a page. Useful for extracting Bearer tokens, API keys, or other auth headers from logged-in sessions. Listens for background requests first, then reloads if needed.
Close a tab by URL/title match via CDP (no focus change). Falls back to IPC index-based close.
Evaluate JavaScript code on a page and return the result. If 'tab' is specified, uses CDP to evaluate on that tab without changing focus. Otherwise evaluates on the current tab via IPC.
Switch to a specific tab by index (IPC only — this intentionally changes focus)
Get all bookmarks.
Get browser history entries. Optionally search by URL or title.
Get the full HTML content of a page. If 'tab' is specified, uses CDP to fetch content from that tab without changing focus. Otherwise fetches from the current tab via IPC.
Output schemas not documented. Tools return unstructured JSON strings (e.g., 'JSON.stringify(sessionTabs, null, 2)') without declaring field types, required fields, or pagination. LLMs cannot plan downstream calls or extract structured data reliably.
Parameter descriptions lack format/constraint details. E.g., 'Tab to target by URL or title substring' doesn't specify case sensitivity, partial vs. exact match, or behavior when multiple tabs match. LLMs cannot reliably construct valid calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Get the plain text content of a page (all visible text). If 'tab' is specified, uses CDP to fetch text from that tab without changing focus. Otherwise fetches from the current tab via IPC.
Get all quickmarks (quick bookmarks).
Navigate back in browser history. If 'tab' is specified, operates on that tab via CDP without changing focus.
Navigate forward in browser history. If 'tab' is specified, operates on that tab via CDP without changing focus.
List all open tabs with indices, URLs, titles, and active state. Uses CDP for fresh title/URL data enriched with session file indices, falling back to session file only.
Move the current tab to a new position (IPC only)
Navigate a tab to a URL. If 'tab' is specified, navigates that tab via CDP without changing focus. Otherwise navigates the current tab via IPC.
Open a new tab with the specified URL. Always opens in background (no focus change).
Reload a page. If 'tab' is specified, reloads that tab via CDP without changing focus.
Take a screenshot of a page. If 'tab' is specified, uses CDP to capture that specific tab without switching focus. Otherwise captures the currently focused tab via IPC.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Tools marked DESTRUCTIVE (close_tab) or WRITE (navigate, focus_tab) lack protocol-level hints. Agents cannot reason about safety without explicit annotations.
Error handling returns raw error messages without recovery guidance. E.g., 'Error: CDP not available' tells the agent nothing about whether to retry, fall back, or ask the user. No error classification (retryable vs. fatal).
Minimal descriptions for discovery tools. get_bookmarks and get_quickmarks have empty input schemas and 50-char descriptions. No explanation of what structure they return, when to call them, or how results chain to other tools.