Agent-first Browser - see your website like an AI agent. An Electron-based browser application that provides AI agents with browser automation capabilities through MCP-style commands and ARIA snapshot analysis.
This Electron-based browser automation server has 8 tools with basic schemas and descriptions, but significant gaps prevent production use. All tools have descriptions (10-80 chars, mostly adequate) and input schemas with types. However, parameter descriptions are sparse or missing context. No output schemas documented. Error handling is absent, no recovery guidance, no categorization. Tools lack idempotency hints and confirmation patterns for destructive operations (click, type, fill). The 'snapshot' tool returns ARIA refs but the response structure is undocumented. No tool annotations (readOnlyHint, destructiveHint). Parameter naming is inconsistent: 'selector' vs 'key' vs 'url'. No pagination, no rate limiting, no audit trail. This is a functional prototype but not production-grade.
Click an element. Prefer selectors like @e123 from interactiveRefs.
Double-click an element.
Fill an input field with a value.
Focus an element.
Navigate to a URL in the current browser session.
Press a keyboard key.
Refresh the current page snapshot (ARIA) and return current interactive refs.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does snapshot() return? What fields are in the ARIA response?).
Destructive/write operations (click, type, fill, press, dblclick) lack confirmation patterns and error recovery guidance. No dry-run support. Agents cannot safely retry on ambiguous failures.
Parameter descriptions are minimal or missing context. 'selector' description says 'prefer @e123 refs' but does not explain what @e123 is, when to use it, or how to obtain it. 'waitUntil' enum values lack explanation of when to use each.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Type text into an element.
No error handling or recovery guidance. Tools do not return actionable error messages. If 'click' fails, the LLM has no guidance on what to try next (retry? use a different selector? call snapshot() first?).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry, which modify state, or which are read-only. This is critical for agent planning.