A shared, on-demand pool of isolated headless browser sessions for Claude Code subagents.
Harborage demonstrates solid tool design with consistent naming (verb_noun pattern), complete input schemas with type definitions, and clear descriptions. All 12 tools follow the action-verb convention (create_, list_, navigate, click, type, screenshot, get_, close_, set_, escalate_). Schemas are well-formed JSON Schema with required fields and enums where appropriate (e.g., waitUntil, level, direction). However, descriptions are terse (10-50 chars), lacking context about when to use each tool, prerequisites, or recovery guidance. Parameter descriptions are minimal, many lack detail about expected formats or constraints. Output schemas are not documented, forcing LLMs to infer response structure. Error handling is absent from tool definitions. Security considerations (session isolation, resource cleanup) are not surfaced in descriptions.
Clicks an element in a browser session
Closes a browser session and releases its resources
Creates a new isolated browser session in the shared pool
Escalates a session to allow direct DevTools protocol access
Retrieves console messages from a session
Retrieves the HTML content of the current page
Lists network requests captured in a session with optional filtering
Lists all active browser sessions in the pool
Tool descriptions are too brief (10-50 chars) and lack context. LLMs cannot determine when to use navigate vs click, or why escalate_session exists. Descriptions should explain WHAT, WHEN, and any prerequisites (50-200 chars baseline).
Output schemas are not documented. LLMs cannot infer what fields create_session returns, what structure list_sessions provides, or how to chain results to downstream tools. Every tool needs a documented return type.
Parameter descriptions are minimal or missing detail. 'sessionId' appears in 10 tools but is never described as 'Session identifier returned by create_session' or 'Required to target a specific browser instance'. LLMs need context about where IDs come from.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Navigates to a URL in a browser session
Takes a screenshot of the current page in a browser session
Sets a filter for network request capture in a session
Types text into a focused element in a browser session
No error handling guidance in tool definitions. If navigate fails (timeout, invalid URL, network error), LLMs have no recovery path. Descriptions should hint at common failures and next steps.
Tool composition risk: create_session returns a sessionId, but no tool documents what fields are in that response or how to use it. If the response omits critical metadata (e.g., browser type, timeout), downstream tools may fail silently.