An unrestricted headless browser tool for coding agents (Claude Code, Codex). MCP server + CLI.
agentBrowser has critical definition quality gaps across all 8 tools. Tool definitions are inferred from scattered source files rather than explicitly visible in a unified registry. Input schemas are not visible in the provided source code snippets. Descriptions exist but are often generic and lack actionable LLM guidance. The codebase shows tool names in ACTIONS array reference (src/mcp/server.ts line 24-27), but actual schema definitions are not provided. Per HARD SCORING RULES: tools without visible input schemas score 0 on schema dimension. Tools with generic/missing descriptions score 0-20. The fixture-server.mjs defines 'click' without schema visibility. Rust engine.rs references 'list_secrets' without visible schema. Overall, this server fails basic definition quality standards for production agent tooling.
No visible input schemas for ANY tool. source code snippets show tool registration (src/mcp/server.ts) but actual schema objects are not provided, making validation impossible.
Descriptions are generic or missing. 'type' tool has no discernible description in provided code. 'list_secrets' and 'click' have minimal docs. LLMs need 50-200 character descriptions explaining WHAT (action), WHEN (use case), and WHY (prerequisites). Current descriptions fail to guide tool selection.
Parameter descriptions missing. Even if schema files exist outside provided snippets, no parameter-level descriptions visible. LLMs cannot infer 'should I pass a CSS selector, XPath, or element ref to click()?' without explicit parameter docs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | 2026-07-28+ | v2 |
No documented output schema or return structure. LLMs don't know what snapshot() returns (HTML, JSON, array of elements?) or what fields to extract from list_secrets(). Lack of return schema prevents chaining and forces agent guesswork.
Security: fill_credential tool accepts secret_name as parameter, but no documentation on how credentials are stored/injected. Instructions mention 'value is read inside the engine and typed straight into the page' but tool definition should explicitly state 'credentials are server-managed; parameter is secret reference only, not the value itself'.
Error handling undefined. No evidence of actionable error messages or recovery guidance. Example: if 'click' fails, does the LLM retry, or is it a fatal element-not-found error? Should it call snapshot() first? Tool definitions must categorize errors and guide next steps.
Tool composition unclear. Instructions mention 'recommended loop: navigate → snapshot → act → snapshot' but tools don't declare dependencies or expected preconditions. LLM must infer that snapshot() reveals element refs needed by click(ref).