OpenChrome
OpenChrome is a harness-engineered MCP server that drives AI agents through a real Chrome browser via CDP, enabling authenticated, parallel, and bot-resistant browser automation.
Navigation & Tab Management
Navigate to URLs, go forward/back, reload pages, create/close tabs
Manage multiple isolated workers and parallel browser lanes
List and switch Chrome profiles for per-profile isolation
Page Interaction
Click, type, scroll, hover, drag-and-drop, file uploads via natural language or precise coordinates
Fill forms (single or multi-field), execute multi-step action sequences (
act)Execute custom JavaScript (async/await, Shadow DOM helpers)
Content Reading & Extraction
Read pages as DOM, accessibility tree, CSS diagnostics, semantic summary, or clean Markdown
Find elements by natural language, CSS/XPath selectors, or vision-based annotated screenshots
Extract structured JSON data via schema, JSON-LD, Microdata, OpenGraph, or CSS
Inspect focused page state (forms, errors, tabs) without loading the full DOM
Parallel & Workflow Automation
Initialize multi-worker workflows with isolated tabs visiting different sites simultaneously
Track workflow progress, collect results, batch-execute JavaScript across tabs
Paginate through multi-page content (keyboard, click, URL, scroll strategies)
Execute cached plans by ID, bypassing per-step LLM calls
Network & Environment Control
Simulate network conditions (offline, 2G–4G, custom throttling)
Intercept, block, modify, or log network requests; capture traffic with/without response bodies
Manage cookies, localStorage/sessionStorage, HTTP auth credentials
Override user agent, geolocation, and device emulation (mobile/tablet/desktop)
Crawling & Scraping
Recursively crawl websites via BFS, best-first, or sitemap.xml with auto-discovery
Async/resumable crawl jobs with concurrency and content filtering options
Validate page health (navigation + console errors + DOM summary)
Screenshots, PDFs & Monitoring
Capture viewport or full-page screenshots (PNG/WebP/JPEG) and generate PDFs
Capture browser console output and collect Web Vitals (LCP, CLS, INP, TTFB, FCP)
Capture evidence bundles (DOM + screenshot + network + console + perceptual hash)
Diff two evidence bundles deterministically for before/after comparison
Monitor CDP connection health with heartbeat and reconnect metrics
Detect page gates (CAPTCHA, bot-check, SSO redirect, paywall, 2FA)
Assertions & Contracts
Evaluate Outcome Contract assertions against page evidence for pass/fail/inconclusive verdicts
Inspect safety policy matrix and preview policy decisions for tool/args combinations
Session & Context Management
Save/load checkpoints, snapshot/resume session context after compaction
Query tool call journal for session history, auditing, and handoff summaries
Compact journal entries into model-friendly summaries
Skills, Memory & Recording
Record and recall domain skills (reusable automation workflows keyed by domain+name)
Store domain knowledge (selectors, tips, avoid patterns) in a memory store
Record/replay full sessions; export as JSON, HTML, Puppeteer, Playwright, or MCP-replay formats
Task Orchestration & AI Support
Create and manage background tasks with polling; create task-scoped browser lanes
Structured reflection artifacts for task-failure recovery guidance
Check session progress (progressing, stalling, stuck) with advisory suggestions
Anti-bot stealth modes (CDP-free navigation, Turnstile bypass), circuit breakers, auto-recovery
Utilities
Generate TOTP 2FA codes for configured domains
Ask vision questions about screenshots via host LLM sampling
Fetch large output handles with pagination; copy text to clipboard
Run environment diagnostics (
openchrome doctor) for health checks
Enables AI agents to navigate, interact, and extract data from Amazon's website through the OpenChrome MCP server.
Enables AI agents to navigate, interact, and extract data from Datadog's dashboard through the OpenChrome MCP server.
Enables AI agents to navigate, interact, and extract data from eBay's website through the OpenChrome MCP server.
Enables AI agents to navigate, interact, and extract data from Stripe's dashboard through the OpenChrome MCP server.
Enables AI agents to navigate, interact, and extract data from Walmart's website through the OpenChrome MCP server.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpenChromecompare AirPods Pro prices on Amazon, Best Buy, and Walmart"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpenChrome
OpenChrome is a browser automation MCP server for controlling a real Chrome browser from Claude Code, Codex CLI, OpenCode, or any MCP client.
It ships as a Node CLI plus MCP runtime. Desktop apps, browser extensions, native-host installers, deployment templates, and release artifact builders are outside this repository surface.
Install
npm install -g openchrome-mcp
openchrome setup --client codexFor Claude Code:
openchrome setup --client claudeRestart the MCP host after setup so it reloads the generated configuration.
Related MCP server: byob
Run
openchrome serve --auto-launch --auto-elect --minimalManual Codex CLI configuration:
openchrome config --client codexAdd the printed [mcp_servers.openchrome] block to ~/.codex/config.toml.
CLI
OpenChrome can call its MCP tools directly from the shell:
oc run navigate --arg url=https://example.com
oc run read_page --arg mode=dom --json
oc navigate https://example.com
oc click ref_5Playbooks run deterministic YAML scenarios:
oc playbook run scenario.yaml --vars url=https://iana.org --out report.mdHTTP Mode
Run a long-lived MCP HTTP daemon when multiple clients should share one managed Chrome owner:
openchrome serve --http 3100 --auth-token <token> --idle-timeout 30m
curl -s http://127.0.0.1:3100/healthIndependent stdio clients should use separate --port and --user-data-dir
profiles, or connect through broker mode with --auto-elect.
Capabilities
Real Chrome control through CDP.
Navigation, clicks, typing, screenshots, DOM reads, accessibility reads, and natural-language element lookup.
Parallel tab/session workflows with broker-safe profile ownership.
Compact page serialization for lower-token agent loops.
Outcome contracts, evidence bundles, diffs, and diagnostics.
Optional pilot-tier recovery and skill runtime behind
--pilot.
Full tool catalogue: docs/agent/capability-map.md.
Documentation
Topic | Link |
Architecture | |
Getting started | |
CLI | |
Playbooks | |
MCP topologies | |
HTTP daemon | |
Security model | |
Repository structure |
Development
git clone https://github.com/shaun0927/openchrome.git
cd openchrome
npm install
npm run build
npm testUseful checks:
npm run lint
npm run lint:repo-structure
npm run lint:tier
npm run docs:capability-map:checkLicense
MIT
Available Tools
118 toolsactADestructive
Execute multi-step browser actions from a natural language instruction. Parses and runs click, type, select, scroll, hover, navigate, and wait steps in sequence.
When to use: Automating a known multi-step flow (login, form fill, navigation) in one call. When NOT to use: Use interact for a single element action, or computer for raw coordinate input.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to execute on | |
| instruction | Yes | Natural language description of actions (e.g., "click login, type admin in username, click submit") | |
| context | No | Additional context (e.g., "on the login page") | |
| verify | No | Verify mode. boolean is legacy: true→"screenshot", false→"none". String enum returns a compact diff signal (AX-hash delta + pHash, ≤4KB). | |
| timeout | No | Max time in ms for entire sequence. Default: 30000 | |
| use_workflow_cache | No | Opt-in: try guarded structured workflow cache before legacy action cache. Default: false | |
| record_workflow_cache | No | Opt-in: record safe successful parsed sequences into the structured workflow cache. Default: false | |
| allow_risky_replay | No | Allow replay of workflow cache entries marked risky. Default: false | |
| workflow_debug | No | Include concise workflow cache accept/reject metadata in the response. Default: false | |
| returnAfterState | No | Optional chaining hint. When "ax" or "dom", the response includes a page snapshot of that mode captured after the post-action wait, removing the need for a follow-up read_page call. Default: "none". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructiveHint=true and readOnlyHint=false. The description adds context about parsing instructions and sequential execution, which is consistent with annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus two usage lines. No wasted words, front-loaded with purpose, then usage guidance. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters (100% schema coverage) and no output schema, the description covers core functionality and usage context. Could mention caching parameters but not necessary given schema detail. Adequate for complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds value by listing the types of actions parsed (click, type, etc.), which is not in the schema, enhancing understanding of the 'instruction' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool as executing multi-step browser actions from natural language, listing specific actions (click, type, etc.), and distinguishes from siblings by specifying when to use 'interact' or 'computer' instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (automating a known multi-step flow) and when not to use (single element action→interact, raw coordinate→computer), providing clear alternatives and guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_executeADestructive
Execute JS across multiple tabs in parallel.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes | Tasks to execute in parallel | |
| concurrency | No | Max parallel tasks. Default: 10 | |
| failFast | No | Stop on first failure. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true and readOnlyHint=false, so the description's mention of 'parallel' adds context. However, it does not elaborate on destructive behavior, idempotency, or performance implications beyond the schema's Promise auto-awaited note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. It efficiently conveys the core action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple parameters, nested objects, no output schema) and lack of return value documentation, the description is too sparse. It omits failure behavior, result format, and how task results are retrieved, making it incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are described in the input schema (100% coverage), so the description adds no extra parameter-level meaning. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Execute' and resource 'JS across multiple tabs', distinguishing it from single-tab execution tools like 'javascript_tool'. It explicitly mentions parallel execution, setting it apart from sequential alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies parallel batch execution but provides no explicit guidance on when to use this tool versus siblings like 'javascript_tool' for single-tab or 'batch_paginate' for paging. No when-not-to-use or alternative naming is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_paginateB
Extract content from paginated viewers in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| strategy | Yes | Pagination strategy | |
| totalPages | No | Total pages. Required for keyboard/click | |
| startPage | No | Starting page number. Default: 1 | |
| captureMode | No | Capture format per page. Default: text | |
| keyAction | No | Next-page key. Default: ArrowRight | |
| nextSelector | No | Next button selector (click) | |
| urlTemplate | No | URL with {N}/{page}/{offset} placeholder | |
| waitBetweenPages | No | Wait between pages in ms. Default: 500 | |
| scrollAmount | No | Viewports per scroll. Default: 1 | |
| maxScrolls | No | Max scroll steps. Default: 50 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'extract content' implying read-only behavior, but annotations set readOnlyHint=false, creating a contradiction. It does not disclose that strategies involve clicking, scrolling, or keyboard actions that modify page state. Annotations already provide some transparency, but the description adds no behavioral context beyond the contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the core purpose. However, it sacrifices necessary guidance for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, 4 strategies, no output schema), the description is insufficient. It does not explain return values, strategy behavior, prerequisites, or how to choose between strategies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3 is appropriate. The description does not add any parameter-specific meaning beyond what the schema already provides, such as how strategies differ or which parameters are needed for each strategy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('extract content'), the resource ('paginated viewers'), and the efficiency ('in one call'). It distinguishes from sibling tools like crawl by focusing on pagination extraction in a single call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like crawl, navigate, or manual pagination. The description does not mention preconditions, when to choose different strategies, or when to avoid this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
computerA
Mouse, keyboard, and screenshot actions on a tab. Supports click, type, scroll, key, hover, and screenshot by pixel coordinate or element ref.
When to use: Precise coordinate-based input, screenshots, or keyboard shortcuts. When NOT to use: Use interact for natural-language element actions, or act for multi-step sequences.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| action | Yes | Action to perform | |
| coordinate | No | [x, y] for click/scroll actions | |
| text | No | Text to type or key to press | |
| duration | No | Wait duration in seconds | |
| scroll_direction | No | Scroll direction | |
| scroll_amount | No | Scroll wheel ticks. Default: 3 | |
| ref | No | Element ref or backendNodeId | |
| screenshotQuality | No | Screenshot quality. low: reduced resolution and quality for smaller payload. | |
| screenshotFormat | No | Only for action "screenshot". Image format for the returned base64. Default: "webp" (smallest payload). Use "png" for clients that cannot decode webp inline (e.g. some MCP UIs), at the cost of larger payloads. "screenshotQuality" is ignored for png (PNG is lossless). | |
| includeUserAgentShadowDOM | No | Include user-agent shadow DOM in hit detection. Default: false | |
| force | No | Only for action "screenshot". Force full screenshot, bypassing adaptive degradation. Default: false. | |
| returnAfterState | No | Optional chaining hint. When "ax" or "dom", the response includes a page snapshot of that mode captured after the post-action wait, removing the need for a follow-up read_page call. Default: "none". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, but the description adds no behavioral context beyond basic actions. It does not mention side effects, state changes, or post-action waits, though the schema hints at such with duration and returnAfterState. The description adds minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using four well-structured sentences including explicit usage guidelines. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (13 params, no output schema, many actions), the description provides a high-level overview and usage context. It could mention return format or behavior of actions like wait and scroll, but the schema fills many gaps. A minor shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (13 params all described). The description only adds 'by pixel coordinate or element ref' which matches coordinate/ref params. With high schema coverage, baseline is 3; description provides little extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it handles mouse, keyboard, and screenshot actions on a tab, listing specific actions like click, type, scroll, key, hover, and screenshot. It clearly distinguishes from siblings interact (natural language) and act (multi-step sequences).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides 'When to use' and 'When NOT to use' sections, naming specific alternatives (interact for natural language, act for sequences). This is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_captureBDestructive
Capture browser console output (start, stop, get, clear).
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| action | Yes | Action to perform | |
| filter | No | Log types to capture. Default: all | |
| limit | No | Max logs to return (get action) | |
| cursor | No | Opaque pagination cursor returned as nextCursor from a prior console_capture get call. | |
| maxLogs | No | Max logs to store. Default: 1000 | |
| maxBytes | No | Max total bytes of logs to store. Default: 4194304 (4 MiB) | |
| boundaryMarkers | No | Wrap console-origin text in <oc:console>. Default true; false disables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds that the tool manages a capture lifecycle (start/stop/clear), which implies state changes. However, it does not detail side effects like memory consumption or that clear is irreversible, so it adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose and actions. It is front-loaded with the primary verb and resource, with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no output schema, the description lacks essential context such as the capture lifecycle, session scope, storage limits (already in schema), or when to use each action. The agent cannot infer important behavioral details like the ability to filter logs or paginate results, which are only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes all parameters in detail. The description merely restates the actions, adding no new information about parameter usage beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as capturing browser console output and lists the supported actions (start, stop, get, clear). It distinguishes from siblings like network_capture tools by focusing on console output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The agent receives no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookiesADestructive
Manage browser cookies (get, set, delete, clear).
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| action | Yes | Action to perform | |
| name | No | Cookie name | |
| value | No | Cookie value | |
| domain | No | Cookie domain. Default: current domain | |
| path | No | Cookie path. Default: / | |
| secure | No | Secure flag | |
| httpOnly | No | HTTP-only flag | |
| sameSite | No | SameSite attribute | |
| expires | No | Expiration Unix timestamp (seconds) | |
| raw | No | Return all cookies with full attributes, bypassing classification. | |
| dryRun | No | Preview-only mode for destructive actions (delete, clear). When true, returns counts and a sample of cookies that would be deleted without mutating any state. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, so the description's mention of 'manage' covers destructive actions like delete/clear. However, the description does not elaborate on behavioral traits such as the effect of dryRun parameter or that preview mode exists. The schema provides some detail, but the description adds minimal extra transparency beyond 'manage'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—one sentence with no wasted words. It front-loads the core purpose ('manage browser cookies') and lists actions, making it efficient for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters and no output schema, the description is minimal. It lacks details on return values, error handling, or usage scenarios. However, the schema is comprehensive, partially compensating. The description could provide more context on how actions interact or ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all parameters. The description adds no additional meaning beyond what the schema already provides, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: managing browser cookies by performing actions like get, set, delete, clear. The verb 'manage' combined with the explicit list of actions makes it specific and distinct from sibling tools like 'storage' or 'network'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for cookie management but does not explicitly state when to use this tool versus alternatives (e.g., for simple cookie operations vs. other storage methods). No guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawlA
Recursively crawl a website via BFS. Opens pages in new tabs, extracts text and links, follows them up to max_depth. Respects robots.txt and scope constraints.
When to use: Extracting content from multiple pages of a site when the URL structure is not known in advance. When NOT to use: Use crawl_sitemap when the site has a sitemap.xml, or navigate for a single page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Starting URL to crawl | |
| max_depth | No | Maximum link-follow depth (0 = start page only). Default: 2 | |
| max_pages | No | Maximum number of pages to crawl. Default: 20 | |
| cursor | No | Opaque pagination cursor returned as nextCursor from a prior crawl call. Cursoring paginates returned pages after the crawl completes. | |
| scope | No | URL glob pattern limiting which URLs to follow (e.g. "https://docs.example.com/**"). Default: same origin as start URL. | |
| include_patterns | No | URL glob patterns — only follow links matching at least one | |
| exclude_patterns | No | URL glob patterns — skip links matching any of these | |
| output_format | No | Content format per page. "markdown-clean" uses cheerio+turndown to strip nav/footer/ads. Default: markdown | |
| onlyMainContent | No | markdown-clean only: strip nav/header/footer/aside/ads. Default: true. | |
| includeLinks | No | markdown-clean only: preserve <a> as markdown links. Default: true. | |
| content_filter | No | markdown-clean only: deterministic fit_markdown filter. Default: none. | |
| return_raw | No | markdown-clean only: include raw_markdown in each page. Default: false. | |
| return_fit | No | markdown-clean only: include fit_markdown and use it as content when filtering. Default: true when filtered. | |
| respect_robots | No | Whether to fetch and obey robots.txt. Default: true | |
| delay_ms | No | Delay between page fetches in milliseconds. Default: 1000 | |
| concurrency | No | Max parallel tab fetches. Default: 3 | |
| engine | No | Fetch engine: "cdp" (default, opens a Chrome tab per page), "static" (Node fetch only, fails closed on insufficient pages), or "auto" (static first, fall back to CDP when static is insufficient). | |
| include_metrics | No | When true, include approximate output size/token metrics in the JSON result. Default: false. | |
| strategy | No | Crawl traversal strategy. Default: bfs. best_first scores discovered URLs by query/url_score and visits highest-scoring URLs first. | |
| query | No | Optional query terms used by strategy=best_first URL scoring. | |
| url_score | No | Optional strategy=best_first URL scoring hints: keywords, prefer_paths, exclude_paths, same_depth_bias. | |
| dispatcher | No | Crawl concurrency dispatcher. Default: fixed. adaptive reduces concurrency on memory/error pressure and records origin backoff for 429/503 responses. | |
| dispatcher_options | No | dispatcher=adaptive options: min_concurrency, max_concurrency, memory_pressure_mb, origin_backoff_ms, rate_limit_statuses. | |
| cache_mode | No | Opt-in crawl content cache mode. Default: disabled. | |
| cache_ttl_ms | No | Maximum age for enabled/read_only cache hits. Negative or omitted means no TTL expiry. | |
| cache_scope | No | Cache namespace/safety scope. Default: public; session adds a session fingerprint to the key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the sparse annotations: opening new tabs, respecting robots.txt and scope constraints, following links up to max_depth. It does not contradict annotations. Some details like engine behavior or caching are not mentioned, but the core behavior is well-covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short paragraphs: core functionality, usage guidance, and a trailing note on scope/responsiveness. Every sentence adds value, front-loaded with the most important information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 26 parameters and no output schema, the description provides a solid high-level understanding. It covers the main use case, BFS traversal, robots.txt handling, and links to sibling tools. Advanced features like caching or best-first strategy are not detailed, but the schema handles those. The description is sufficiently complete for an agent to decide when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already described in the schema. The description adds minimal extra semantics for individual parameters, mentioning only max_depth implicitly. Baseline of 3 is appropriate since the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: recursively crawl a website via BFS, extracting text and links. It distinguishes itself from siblings like navigate (single page) and crawl_sitemap (when sitemap exists). The specific verb 'crawl' and resource 'website' with method 'BFS' make it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to use' and 'When NOT to use' sections, with clear alternatives: use crawl_sitemap when a sitemap is available, or navigate for a single page. This helps the agent choose correctly among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_cancelADestructive
Mark a crawl job as cancelled. Returns immediately. Subsequent crawl_status calls on this jobId will skip the runner and report status "cancelled".
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | REQUIRED Job id returned by crawl_start. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and non-idempotent behavior. The description adds immediate return and status change details, but doesn't cover all side effects (e.g., irreversibility).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and key behavior. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple cancellation tool with one parameter and no output schema, the description covers the main use and state change. Minor gap: no mention of return value or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter jobId is fully described in the input schema. The tool description does not add additional semantic meaning beyond referencing 'crawl job', so it meets baseline without enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool marks a crawl job as cancelled, using a specific verb and resource. It distinguishes itself from siblings like crawl_start and crawl_status by focusing on cancellation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after starting a crawl job that needs to be stopped. It explains the effect on subsequent crawl_status calls but lacks explicit when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_sitemapA
Crawl a website using its sitemap.xml. Auto-discovers sitemaps from robots.txt or /sitemap.xml. Supports sitemap index files and URL filtering.
When to use: Extracting content from many pages of a site that publishes a sitemap.xml. When NOT to use: Use crawl for BFS discovery when no sitemap exists, or navigate for a single page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Website URL (auto-discovers /sitemap.xml, /sitemap_index.xml) | |
| sitemap_url | No | Explicit sitemap URL (skips auto-discovery) | |
| filter | No | URL glob pattern to filter which sitemap URLs to visit | |
| max_pages | No | Maximum number of pages to visit. Default: 50 | |
| output_format | No | Content format per page. "markdown-clean" uses cheerio+turndown to strip nav/footer/ads. Default: markdown | |
| onlyMainContent | No | markdown-clean only: strip nav/header/footer/aside/ads. Default: true. | |
| includeLinks | No | markdown-clean only: preserve <a> as markdown links. Default: true. | |
| query | No | markdown-clean content_filter="bm25" query terms. | |
| content_filter | No | markdown-clean only: deterministic fit_markdown filter. Default: none. | |
| return_raw | No | markdown-clean only: include raw_markdown in each page. Default: false. | |
| return_fit | No | markdown-clean only: include fit_markdown and use it as content when filtering. Default: true when filtered. | |
| concurrency | No | Max concurrent page fetches. Default: 3 | |
| engine | No | Fetch engine: "cdp" (default, opens a Chrome tab per page), "static" (Node fetch only, fails closed on insufficient pages), or "auto" (static first, fall back to CDP when static is insufficient). | |
| cache_mode | No | Opt-in crawl content cache mode. Default: disabled. | |
| cache_ttl_ms | No | Maximum age for enabled/read_only cache hits. Omit for no TTL expiry. | |
| cache_scope | No | Cache namespace/safety scope. Default: public. | |
| include_metrics | No | When true, include approximate output size/token metrics in the JSON result. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false and others; description adds context on auto-discovery, caching modes, and filtering. No contradictions, but could disclose more about side effects or state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured with front-loaded purpose and clear usage section. Every sentence adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage, behavior, and parameters well. Minor gap: no mention of output format or return structure, but implied by 'extracting content' and parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds overview but no additional insight beyond what the schema already provides, meeting baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it crawls a website using sitemap.xml, with auto-discovery and URL filtering. It distinguishes from siblings by contrasting with 'crawl' and 'navigate' in the usage guidelines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (many pages with sitemap) and when not to use (no sitemap -> crawl, single page -> navigate), providing clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_startA
Initialise a resumable crawl job. Returns { jobId, status: "pending" } immediately — performs NO network I/O. Drive progress with crawl_status({ jobId, advance: N }) which fetches up to N pages per call. Same args as the legacy crawl tool. Use crawl_cancel to stop.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | REQUIRED Starting URL to crawl | |
| max_depth | No | Max link-follow depth. Default: 2 | |
| max_pages | No | Max pages to crawl. Default: 20 | |
| scope | No | URL glob limiting which URLs to follow. Default: same origin. | |
| include_patterns | No | URL globs — follow only links matching at least one. | |
| exclude_patterns | No | URL globs — skip links matching any. | |
| output_format | No | Content format. Default: markdown | |
| onlyMainContent | No | For markdown-clean, remove nav/footer/ads before conversion. Default: true | |
| includeLinks | No | For markdown-clean, include link destinations in markdown. Default: true | |
| respect_robots | No | Whether to obey robots.txt. Default: true | |
| delay_ms | No | Delay between page fetches (ms). Default: 1000 | |
| concurrency | No | Max parallel fetches. Default: 3 | |
| cache_mode | No | Opt-in crawl content cache mode. Default: disabled. | |
| cache_ttl_ms | No | Maximum age for enabled/read_only cache hits. Omit for no TTL expiry. | |
| cache_scope | No | Cache namespace/safety scope. Default: public. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool returns immediately with a pending status and does no network I/O. Annotations are sparse (no readOnly/destructive/idempotent hints), so description carries the full burden and does so effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words. Purpose is front-loaded, followed by behavioral note and usage instructions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 15 parameters and no output schema, the description clearly explains the return format and the follow-up steps (crawl_status, crawl_cancel). The workflow is fully contextualized.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds little beyond 'Same args as the legacy crawl tool'. This reference to a known sibling is helpful but does not increase semantic value beyond the schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it initializes a resumable crawl job, returns a jobId immediately, and performs no network I/O. Distinguishes from siblings by specifying that progress is driven via crawl_status and stopping via crawl_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use crawl_status for progress and crawl_cancel for stopping. Also mentions it has the same arguments as the legacy crawl tool, providing clear guidance on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_statusARead-onlyIdempotent
Advance a crawl job by up to advance pages (default 5, env OC_CRAWL_ADVANCE_DEFAULT) and return current state. advance: 0 is read-only and performs no fetching. Returns { status, completed, total, errors, pages?, pagesOmitted?, startedAt, finishedAt? }. Pages array is capped at OC_CRAWL_STATUS_MAX_PAGES (default 200).
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | REQUIRED Job id returned by crawl_start. | |
| advance | No | Max pages to fetch in this call. Default OC_CRAWL_ADVANCE_DEFAULT (5). Use 0 for read-only. | |
| includePages | No | Include `pages` in the response. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds behavioral specifics: advance=0 is read-only, pages array capped at environment variable, return shape details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, efficient front-loading of action and key behavior, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains return shape. Covers main state and limits. Lacks error conditions but sufficient for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions. Description adds environment variable defaults and special semantics for advance=0 and includePages.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies the verb 'advance' and the resource 'crawl job', with details on advance count and read-only mode. It distinguishes from siblings like crawl_start (initiates) and crawl_cancel (stops).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes default advance and read-only behavior. Context implies use for advancing/checking crawl status, but no explicit when-not-to-use or alternative tools mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drag_dropB
Drag and drop by selector or coordinates. Pass intent="..." (≤120 chars) to label this action in audit logs.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| sourceSelector | No | Source CSS selector | |
| sourceX | No | Source X (alternative to selector) | |
| sourceY | No | Source Y (alternative to selector) | |
| targetSelector | No | Target CSS selector | |
| targetX | No | Target X (alternative to selector) | |
| targetY | No | Target Y (alternative to selector) | |
| steps | No | Intermediate drag steps. Default: 10 | |
| delay | No | Delay in ms between steps. Default: 10 | |
| intent | No | Human-readable label for this action in audit logs (≤120 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no destructive or idempotent hints, so description should fill in. It only mentions intent labeling; missing details on what happens during drag (e.g., success/failure behavior, if coordinates override selectors).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loading the main action and then adding the intent detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and 10 parameters—description is minimal. Could explain how steps/delay affect behavior or default values. Adequate but not complete for complex usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions. The description adds context that intent is for audit logs with a 120-char limit, but otherwise does not add meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (drag and drop) and the two methods (by selector or coordinates). Distinguishes from sibling tools like 'interact' or 'act' by its specific functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'interact' or 'form_input'). Does not mention prerequisites or restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_pickA
Start or cancel an in-page human element picker overlay. Returns selector, DOM, style, and bounding-box facts; it does not persist skills directly.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab ID to pick from | |
| action | No | start waits for a picked element; cancel cancels an in-flight pick. Default: start. | |
| timeoutMs | No | Max wait for a click in ms. Default 60000; capped at 300000. | |
| cancelOnEscape | No | Reserved for compatibility; Escape cancellation is enabled by the overlay. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are neutral (not read-only, not destructive). The description adds context: it starts a UI overlay, waits for a click, returns selector, DOM, style, and bounding-box facts. It does not contradict annotations and goes beyond them by explaining the interactive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no wasted words. It front-loads the main action and purpose, then adds details about return values and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters (1 required), no output schema, and neutral annotations, the description adequately explains what the tool does and returns. It could mention timeout or cancellation behavior, but the return facts list provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all parameters well-documented. The description adds no additional param details beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (start or cancel) and the resource (in-page human element picker overlay). It mentions returning specific facts and distinguishes from sibling tools by noting it does not persist skills, which sets it apart from skill-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for picking elements interactively and notes it does not persist skills, suggesting when not to use it. However, it does not explicitly state when to use this tool versus alternatives like inspect or query_dom.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emulate_deviceC
Emulate device viewport and UA via preset or custom.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| preset | No | Device preset | |
| width | No | Custom width (overrides preset) | |
| height | No | Custom height (overrides preset) | |
| deviceScaleFactor | No | Device scale factor. Default: 1 | |
| isMobile | No | Emulate mobile device. Default: false | |
| hasTouch | No | Emulate touch events. Default: false | |
| userAgent | No | Custom UA string (overrides preset) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, implying modification, but the description does not add context about persistence, side effects, or reversibility. Beyond stating the function, no additional behavioral details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence without fluff. It is efficiently structured, though it could benefit from slight expansion for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and no mention of behavior like state persistence or scope (e.g., per tab or global), the description is insufficiently complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter well-defined in the input schema. The description adds no further meaning to the parameters, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool modifies viewport and user agent via preset or custom. It is specific about the verb 'emulate' and resource 'device viewport and UA', but does not explicitly differentiate from sibling tool 'user_agent' which also handles UA.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'user_agent' or when not to use it. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_planADestructive
Execute a cached plan by ID, bypassing per-step LLM calls. Falls back gracefully on failure for manual retry.
| Name | Required | Description | Default |
|---|---|---|---|
| planId | Yes | Plan ID to execute | |
| tabId | Yes | Tab ID to execute the plan against | |
| params | No | Runtime params merged with plan defaults | |
| taskSignature | No | Optional deterministic BrowserTaskSignature that bounds allowed tools, loop guards, and budgets for this execution | |
| reflectionStrategy | No | Opt-in bounded reflection metadata strategy. Default omitted path preserves legacy output. | |
| reflectionScope | No | Optional reflection recall scope: domain, taskFingerprint, contractId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true and openWorldHint: true. The description adds the fallback behavior on failure for manual retry, but lacks details on what gets destroyed or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, with no redundant information. Every sentence provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters and no output schema, the description does not explain return values, plan structure, or caching details. The openWorldHint annotation suggests external effects, but they are not elaborated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a description. The tool description does not add any additional meaning beyond the schema, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a cached plan by ID, bypassing per-step LLM calls, distinguishing it from other execution tools like batch_execute. The verb 'execute' and resource 'cached plan' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for efficient plan execution when cached and mentions failure fallback for manual retry, but does not specify when not to use it or compare with sibling tools for guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_dataB
Extract JSON-schema data from JSON-LD, Microdata, OpenGraph, or CSS. Use multiple:true for listings, mode="semantic" plus query for bounded host-side chunks, or exactly one scope: selector, ref_id, backendNodeId.
When to use: Typed products, articles, prices, or semantic facts. When NOT to use: Use read_page for raw content or javascript_tool for ad-hoc scraping.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to extract from | |
| schema | Yes | JSON Schema defining output structure. Example: { "type": "object", "properties": { "title": { "type": "string" }, "price": { "type": "number" } } } | |
| instruction | No | Optional natural language hint (e.g., "product details") | |
| query | No | Required for mode="semantic": query describing the information to extract from a bounded markdown chunk | |
| maxChars | No | Semantic mode only: max chunk chars returned to the host. Default 12000, hard cap 50000. | |
| startFromChar | No | Semantic mode only: continuation offset into filtered markdown. Default: 0. | |
| includeLinks | No | Semantic mode only: preserve markdown links. Default: true. | |
| includeImages | No | Semantic mode only: reserved for image markdown inclusion. Default: false. | |
| alreadyCollected | No | Semantic mode only: values already collected by the host, used for simple chunk dedupe hints. | |
| selector | No | CSS selector to scope extraction region | |
| ref_id | No | Element ref_id from read_page or oc_observe to scope extraction region | |
| backendNodeId | No | Chrome backend DOM node id to scope extraction region | |
| multiple | No | Extract array of items (for listings/tables). Default: false | |
| output_mode | No | "inline" (default): return the full payload in-band — byte-identical to v1.11.0. "handle": write payload to the handle store and return a small descriptor; redeem with oc_output_fetch. "auto": inline if payload ≤ output_inline_limit_bytes, otherwise handle. | |
| output_inline_limit_bytes | No | Only honored when output_mode="auto". If the serialized payload exceeds this byte count the response spills to a handle. Default: 32768. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (not read-only), but the description implies a read-only extraction operation. This contradiction misleads about behavioral traits. Description does not disclose side effects or state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured, with three sentences covering purpose, usage, and mode hints. Slightly technical but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters and no output schema, the description lacks crucial details about return format and behavior. It does not specify output structure or explain all parameter interactions (e.g., scope selectors).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description references a 'mode' parameter (e.g., mode='semantic') that does not exist in the input schema, causing inconsistency. No additional parameter semantics are provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts JSON-schema data from specific sources (JSON-LD, Microdata, OpenGraph, CSS) and distinguishes itself from sibling tools like read_page and javascript_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'When NOT to use' sections provide clear guidance: use for typed products, articles, prices; avoid for raw content (read_page) or ad-hoc scraping (javascript_tool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_uploadB
Upload files to a file input element on the page. Pass intent="..." (≤120 chars) to label this action in audit logs.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to upload files to | |
| selector | Yes | CSS selector for the file input element | |
| filePaths | Yes | File paths to upload. Paths must resolve under configured file_upload roots. | |
| intent | No | Human-readable label for this action in audit logs (≤120 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false; description adds minimal behavioral context beyond 'Upload files'. Does not disclose file size limits, overwrite behavior, or possible side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, main action front-loaded, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and minimal annotations, description lacks details on return behavior, error cases, or constraints beyond what's in schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds value by specifying that file paths must resolve under configured roots, but intent parameter info is already in schema. Schema coverage is 100%, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Upload' and resource 'files to a file input element on the page', distinguishing it from sibling tools like form_input or fill_form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions optional intent parameter for audit logs but lacks guidance on when to use vs alternatives, prerequisites, or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_formC
Fill form fields and optionally submit. Pass intent="..." (≤120 chars) to label this action in audit logs.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to execute on | |
| fields | No | Field label/name/placeholder to value map. Checkboxes: "true"/"false" | |
| submit | No | Submit button query after fill | |
| clear_first | No | Clear before fill. Default: true | |
| waitForMs | No | Poll timeout for dynamic fields in ms. Default: 0 | |
| pollInterval | No | Poll interval in ms (50-2000). Default: 300 | |
| loginCheck | No | After submit, run a generic login-failure detector that flips success → failure when the password form is still mounted. Default: "auto". Set "off" to restore pre-#658 behavior. | |
| refs | No | Optional ref→value map (#831). Refs come from a recent read_page(mode="ax") snapshot. When present, refs are processed before `fields` and skip AX/CSS discovery. Stale refs produce a STALE_REF error — no silent coordinate fallback. | |
| verify | No | Verify mode. boolean is legacy: true→"screenshot", false→"none". String enum returns a compact diff signal (AX-hash delta + pHash, ≤4KB). | |
| intent | No | Human-readable label for this action in audit logs (≤120 chars) | |
| capture_artifact | No | When true, stage replay artifact steps for oc_skill_record after successfully filled fields. Default false is a strict no-op. | |
| returnAfterState | No | Optional chaining hint. When "ax" or "dom", the response includes a page snapshot of that mode captured after the post-action wait, removing the need for a follow-up read_page call. Default: "none". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the audit logging behavior for intent, but fails to disclose important aspects like side effects, error states (e.g., STALE_REF), timeout behavior, or the fact that it performs mutations. Annotations are neutral and do not compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loads the core purpose and efficiently introduces the key intent feature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool having 12 parameters with complex interactions (refs, verify, returnAfterState, polling), the description gives no overview of the workflow or how these pieces fit together. It lacks sufficient context for an AI agent to use the tool correctly without relying entirely on the parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal value by reiterating the intent parameter's audit purpose. No additional insights beyond schema are provided for other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'fill' and resource 'form fields', and mentions optional submit and intent labeling. However, it does not distinguish this tool from the sibling 'form_input', which likely has overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool or when to choose alternatives. There is no mention of prerequisites, typical use cases, or exclusion criteria for sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findARead-onlyIdempotent
Find elements by query. Returns up to 20 matches with refs.
When to use: Locating elements by natural language when exact selectors are unknown. When NOT to use: Use query_dom when you have a CSS selector or XPath, or interact to find-and-click in one step.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to search in | |
| query | Yes | What to find (natural language) | |
| waitForMs | No | Poll timeout in ms. Default: 3000. 0 to disable | |
| pollInterval | No | Poll interval in ms. Default: 200 | |
| vision_fallback | No | Deprecated alias for allow_vision_fallback (kept for back-compat). | |
| allow_vision_fallback | No | Opt into vision-based screenshot analysis when DOM discovery returns nothing. #831 flipped the default to OFF — supply `true` here OR set OPENCHROME_VISION_MODE=on (or fallback/auto) to enable vision. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, nondestructive, idempotent. The description adds that it returns up to 20 matches with refs, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with only essential information, front-loaded with purpose, and every sentence adds value. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description mentions return format (up to 20 matches with refs). It covers usage context well, though output structure specifics are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add parameter details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds elements by query and returns matches with refs. It distinguishes from sibling tools like query_dom and interact by specifying when to use alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'When NOT to use' sections provide clear guidance, naming specific alternative tools (query_dom, interact) and conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
form_inputA
Set one form element value by ref. Pass intent="..." (≤120 chars) to label this action in audit logs.
When to use: Filling a single known input, textarea, select, or checkbox by ref. When NOT to use: Use fill_form({fields:{...}}) for multiple fields or optional submit.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to set form value in | |
| ref | Yes | Element ref or backendNodeId | |
| value | Yes | Value to set. Checkboxes: "true"/"false" | |
| intent | No | Human-readable label for this action in audit logs (≤120 chars) | |
| capture_artifact | No | When true, stage a replay artifact step for oc_skill_record. Default false is a strict no-op. | |
| returnAfterState | No | Optional chaining hint. When "ax" or "dom", the response includes a page snapshot of that mode captured after the post-action wait, removing the need for a follow-up read_page call. Default: "none". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark readOnlyHint=false, destructiveHint=false. Description adds audit logging via intent, checkbox value format, capture_artifact no-op behavior, and returnAfterState chaining. Though not exhaustive, it provides significant behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two primary sentences plus two concise guidance lines. Front-loaded main action then usage rules. No unnecessary words; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completeness is high given no output schema. Covers usage, parameters, and behavioral details. Could mention error handling or that it does not trigger events, but these are minor gaps for such a focused tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters. Description adds meaningful context: intent for audit logs, value format for checkboxes, capture_artifact as strict no-op, and returnAfterState as chaining hint to avoid follow-up calls. This adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and resource 'form element value by ref', specifying input types (text, textarea, select, checkbox). Differentiates from sibling 'fill_form' which handles multiple fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'When NOT to use' sections, with direct alternative 'fill_form' for multiple fields or optional submit, providing clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geolocationC
Set or clear geolocation override.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| preset | No | Preset city | |
| latitude | No | Custom latitude (-90 to 90) | |
| longitude | No | Custom longitude (-180 to 180) | |
| accuracy | No | Accuracy in meters. Default: 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description minimally indicates mutation (set/clear) but adds no behavioral context beyond annotations. Annotations are present but not detailed; the description does not disclose potential side effects, permission requirements, or what 'override' means in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. It is efficient but could benefit from slightly more detail without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool complexity (5 parameters, no output schema), the description lacks completeness. It does not explain how to clear the override, the effect on the browser, or any constraints. The rich schema partially compensates, but important usage context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides, but it does not contradict or mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets or clears a geolocation override, using specific verbs (set/clear) and a resource (geolocation override). It distinguishes the tool's purpose from siblings, though no sibling differentiation is explicitly provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention exclusions. No context is given about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
http_authB
Set or clear HTTP auth credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to set auth for | |
| action | Yes | Set or clear credentials | |
| username | No | Username for HTTP auth | |
| password | No | Password for HTTP auth |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint=false) but the description adds minimal behavioral context beyond setting/clearing credentials, failing to disclose side effects like credential persistence or scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, efficient and front-loaded, though it could include more detail without becoming overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool but lacks explanation of behavior differences between 'set' and 'clear', and how optional parameters interact with the action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description does not add meaning beyond the schema, offering no details on parameter dependencies (e.g., clear doesn't need username/password).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set or clear') and the resource ('HTTP auth credentials'), making the tool's purpose immediately understandable and distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as other authentication-related tools or manual credential handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_qaARead-onlyIdempotent
Ask the connected host LLM a question about a caller-supplied screenshot. Forwards via MCP sampling/createMessage when the client advertises the sampling capability. Returns { status: "unsupported_by_host", reason } when the capability is absent — OpenChrome never uses its own API keys. The caller MUST supply one of screenshot.ref, screenshot.path, or screenshot.base64. No auto-capture.
| Name | Required | Description | Default |
|---|---|---|---|
| screenshot | Yes | REQUIRED Exactly one of `ref`, `path`, or `base64` must be supplied. Optional `mime_type` defaults to `image/png`. | |
| question | Yes | REQUIRED Vision Q&A prompt for the host LLM. | |
| max_tokens | No | Optional sampling cap. Defaults to 512. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral context beyond annotations: explains forwarding via MCP sampling, that OpenChrome never uses its own API keys, and details the unsupported response. No contradiction with annotations (readOnlyHint, destructiveHint, idempotentHint are all consistent).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences plus a critical note. Information is front-loaded: purpose first, then mechanism, then constraints. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description covers purpose, mechanism, dependency on client capability, fallback behavior, input requirements, and defaults. For a moderately complex tool (vision QA, three input modes, nested object), this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by stating 'REQUIRED Exactly one of...' for the screenshot object, clarifying that mime_type defaults to image/png, and explaining max_tokens defaults to 512. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool asks the host LLM a question about a screenshot. It uses a specific verb ('Ask') and resource ('screenshot'), and distinguishes from sibling tools like vision_find by specifying the mechanism (MCP sampling).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when the tool works (client must advertise sampling capability) and what happens otherwise (returns unsupported status). It also specifies that exactly one screenshot identifier must be supplied. However, it does not explicitly compare to alternatives like vision_find or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspectARead-onlyIdempotent
Extract focused page state by query. Returns headings, form fields, errors, tabs, and interactive counts scoped to the query intent.
When to use: Checking focused aspects of page state (forms, errors, tabs) without loading the full DOM. When NOT to use: Use read_page for full DOM/AX tree, or find to locate a specific element.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to inspect | |
| query | Yes | What to inspect (natural language) | |
| scope | No | Element scope. Default: visible | |
| include_metrics | No | When true, append approximate returned size/token metrics to text output. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds behavioral context about return types (headings, forms, etc.) and scope, aligning with annotations. Discloses non-destructive, idempotent read behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise paragraphs: first states purpose and returns, second gives usage guidelines. No fluff, efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and annotations, the description provides sufficient context: return types, usage scenarios, and limitations. Could mention return format but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. Description does not add additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts focused page state by query, listing specific return elements (headings, form fields, errors, tabs, interactive counts) and distinguishes from siblings like read_page and find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (focused aspects without full DOM) and when not to use, with alternatives (read_page for full DOM, find for specific elements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interactA
Find element by natural language; click/hover/double_click it; wait for DOM settle; return state.
When to use: One described element action, with coordinate fallback for Shadow DOM/canvas/iframes. When NOT to use: Use act for multi-step flows; computer for general coordinate clicks.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Tab ID to execute on | |
| taskId | No | Task id when using a task-scoped browser lane. | |
| laneId | No | Task-scoped browser lane id; validates tabId or defaults to the lane current target. | |
| query | No | Element to act on (natural language). Required when mode is "ref" (default). | |
| mode | No | Dispatch mode. "ref" (default) resolves the element by query; "coordinate" sends a CDP mouse event directly to pixel coordinates. | ref |
| coordinate | No | Pixel coordinates for coordinate mode. Required when mode is "coordinate". | |
| action | No | Action to perform. Default: click. Use type with value to enter text. | |
| value | No | Text to type when action is type. Supports vault://name in pilot mode. | |
| waitAfter | No | DOM settle wait in ms. Default: 500 | |
| returnFormat | No | Response content. Default: both | |
| verify | No | Verify mode. boolean is legacy: true→"screenshot", false→"none". String enum returns a compact diff signal (AX-hash delta + pHash, ≤4KB). | |
| returnAfterState | No | Optional chaining hint. When "ax" or "dom", the response includes a page snapshot of that mode captured after the post-action wait, removing the need for a follow-up read_page call. Default: "none". | |
| waitForMs | No | Poll timeout for element in ms. Max: 30000 | |
| pollInterval | No | Poll interval in ms. Default: 200 | |
| ref | No | Snapshot ref ID (from read_page refs map). When provided, skips AX re-resolution and clicks the element directly via its cached backendDOMNodeId. | |
| intent | No | Optional short label (≤120 chars) describing the user-facing goal of this action, e.g. "submit login form". Recorded in the task journal for observability. | |
| capture_artifact | No | When true, stage a replay artifact step for oc_skill_record after a successful click. Default false is a strict no-op. | |
| locatorFallback | No | Opt-in AI locator fallback extension point. Disabled by default; when enabled, provider candidates are validated before any action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavioral traits beyond annotations: waits for DOM settle, returns state, coordinate fallback for complex elements. Does not contradict annotations (all false). Could mention that actions are mutable (click/type) but adequately covers core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three short lines covering core action, when to use, and when not to use. No redundant information; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite high parameter count (18) and no output schema, the description only covers the core action and coordinate fallback, omitting details on return formats, verification, artifact capture, and chaining. Adequate for basic understanding but incomplete for full usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds context for coordinate mode and action types, and explains when to use different modes, providing meaning beyond parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds an element by natural language and performs actions (click/hover/double_click), explicitly distinguishing itself from sibling tools 'act' (multi-step flows) and 'computer' (general coordinate clicks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' (one described element action, with coordinate fallback for Shadow DOM/canvas/iframes) and 'When NOT to use' (use act for multi-step flows; computer for general coordinate clicks), including specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
javascript_toolADestructive
Execute JavaScript in page context. Supports await, async IIFE, and shadow-DOM helpers via __pierce.
When to use: Custom DOM queries, data extraction, or triggering JS APIs not reachable via other tools. When NOT to use: Use interact or act for UI interactions, or extract_data for structured schema-based extraction.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to execute code in | |
| code | No | JS code. Last expression returned | |
| text | No | Deprecated. Use "code" instead | |
| timeout | No | Timeout in ms. Default: 30000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint, so description adds value with shadow DOM helpers and async support. Could elaborate on execution side effects but fine.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Brief, well-structured with clear sections. Every sentence adds value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers use cases, execution details, and parameter hints. No output schema but return value implied. Complete for a JS execution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds only minor nuance about return value ('Last expression returned'). Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Execute JavaScript in page context' with specific features like await, async IIFE, __pierce. Distinguishes from siblings like interact/act and extract_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'When NOT to use' sections provide clear guidance on appropriate contexts and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightweight_scrollA
Scroll page via JS. Returns new scroll position.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to scroll | |
| direction | Yes | Scroll direction | |
| amount | No | Scroll amount in pixels. Default: 300 | |
| smooth | No | Smooth scroll. Default: false | |
| selector | No | Scrollable element selector. Default: window | |
| scrollToEnd | No | Scroll to end in given direction. Default: false | |
| waitAfterMs | No | Wait after scroll in ms. Default: 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive behavior. The description adds that scrolling is performed via JavaScript and that the new scroll position is returned, providing useful context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. Front-loads the action and clearly states the return value. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the core action and return value, it does not specify the return structure or handle edge cases (e.g., invalid selector). With 7 parameters and no output schema, more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions in the input schema (100% coverage), so the baseline is 3. The description does not add any meaning beyond what the schema provides for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Scroll page via JS') and its return value ('Returns new scroll position'). It is specific, uses a verb+resource structure, and distinguishes itself from siblings like 'javascript_tool' or 'navigate' by focusing on lightweight scrolling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for scrolling a page, but provides no guidance on when to use it over alternatives like 'javascript_tool' or 'act'. No when-not-to-use or explicit context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesARead-onlyIdempotent
List available Chrome profiles with names and directory IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| userDataDir | No | Custom Chrome user data dir. Default: system Chrome location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds value by specifying the returned fields (names, directory IDs) and implies non-mutating behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the verb 'List' and contains no unnecessary words. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description fully covers what the tool does and what it returns. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single optional parameter (userDataDir). The description does not add any parameter semantics beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('List'), resource ('Chrome profiles'), and output ('with names and directory IDs'). It is a distinct verb+resource combination not duplicated in sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives or context conditions. While the tool is simple, the description lacks any usage timing or exclusion notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memoryADestructive
Manage domain knowledge. Actions: "record" (store), "query" (retrieve by domain), "validate" (adjust confidence). Key prefixes: "selector:", "tip:", "avoid:".
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: record, query, or validate | |
| domain | No | (record, query) Domain | |
| key | No | (record) Key. (query) Key prefix filter. | |
| value | No | (record) Knowledge value | |
| id | No | (validate) Knowledge entry ID | |
| success | No | (validate) true = accurate, false = outdated/broken |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, so the tool can modify state. The description adds context about actions and key prefixes, but does not detail specific behavioral traits like overwriting on record or confidence adjustment during validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the overall purpose, then specifics. Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, destructive, no output schema), the description covers actions and prefixes but lacks details on return values or behavior for each action, which is important for a knowledge management tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage. The description adds value by explaining the actions and introducing key prefixes ('selector:', 'tip:', 'avoid:') which are not in the schema, aiding agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages domain knowledge with specific actions: record, query, validate. It distinguishes itself from sibling tools by its unique purpose of storing and retrieving knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists the actions and their purposes but does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. The usage context is implied but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
networkCDestructive
Simulate network conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| preset | Yes | Network preset | |
| downloadKbps | No | Download Kbps (preset=custom only) | |
| uploadKbps | No | Upload Kbps (preset=custom only) | |
| latencyMs | No | Latency in ms (preset=custom only) | |
| output_mode | No | "inline" (default): return the full payload in-band — byte-identical to v1.11.0. "handle": write payload to the handle store and return a small descriptor; redeem with oc_output_fetch. "auto": inline if payload ≤ output_inline_limit_bytes, otherwise handle. | |
| output_inline_limit_bytes | No | Only honored when output_mode="auto". If the serialized payload exceeds this byte count the response spills to a handle. Default: 32768. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and openWorldHint=true, but the description adds no extra behavioral details (e.g., whether changes persist, effect on browser, error scenarios). Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short (one sentence) for a tool with 7 parameters. Lacks structure and important context, bordering on under-specification rather than conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and minimal description. Fails to explain return values, side effects, or usage patterns, leaving significant gaps for a tool that modifies network conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters. The description adds no additional meaning beyond the schema, earning baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Simulate network conditions.' conveys the general purpose but fails to differentiate from sibling tools like network_capture_full or oc_get_connection_info. It lacks specificity about what 'simulate' entails (e.g., throttling, offline mode).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no preconditions or postconditions mentioned. The description is too vague to help an agent decide contextually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_capture_fullA
Capture network requests with response bodies (capped). Actions: start, stop, getLogs, clear. Bodies over maxBodyBytes are omitted with reason="over_cap".
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab (target) ID | |
| action | Yes | REQUIRED Action to perform | |
| options | No | CaptureOptions (start only). Defaults: maxEntries=5000, maxBodyBytes=262144 (full mode). | |
| keepBodies | No | On stop: retain on-disk bodies (default false). | |
| limit | No | Max entries to return on getLogs. Default 100; 0 = all. | |
| cursor | No | Opaque pagination cursor returned as nextCursor from a prior getLogs call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly, non-destructive, non-idempotent, non-open-world, which align with a tool that starts/stops captures. The description adds key behavioral details: bodies over maxBodyBytes are omitted with reason='over_cap'. This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, highly concise, front-loaded with the core purpose and actions. Every word earns its place; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description does not explain the structure of getLogs results (e.g., entries, pagination via cursor/limit). It leaves the return format unspecified, which for a complex tool with multiple actions is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 6 parameters have descriptions in the schema (100% coverage). The description adds context about the cap behavior affecting maxBodyBytes and mentions actions, but does not provide additional detail beyond the schema for most parameters. Minor value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures network requests with response bodies (capped) and enumerates the four possible actions (start, stop, getLogs, clear). It distinguishes itself from the sibling network_capture_lite by implying this is the 'full' version with body capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives like network_capture_lite. It lists actions and options but lacks context such as prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_capture_liteA
Capture network request metadata + headers (no bodies). Cheap passive recorder. Actions: start, stop, getLogs, clear.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab (target) ID | |
| action | Yes | REQUIRED Action to perform | |
| options | No | CaptureOptions (start only). Defaults: maxEntries=5000, maxBodyBytes=262144 (full mode). | |
| keepBodies | No | On stop: retain on-disk bodies (default false). | |
| limit | No | Max entries to return on getLogs. Default 100; 0 = all. | |
| cursor | No | Opaque pagination cursor returned as nextCursor from a prior getLogs call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set destructiveHint=false, matching the description's 'passive recorder' nature. The description adds that it does not capture bodies, but omits details on data persistence or side effects. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: one explaining the core purpose and one listing the actions. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not explain what getLogs returns or how to interpret results. For a tool with 6 parameters and multiple actions, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description lists actions and defaults for options but adds little beyond the schema's own descriptions. The 'Cheap passive recorder' context is helpful but not parameter-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures network request metadata and headers (but not bodies), and enumerates the four actions. The name 'lite' and sibling 'network_capture_full' differentiate it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies lightweight, passive recording via 'Cheap passive recorder' and 'no bodies', but does not explicitly state when to use this vs. the full capture tool or specify when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_assertARead-onlyIdempotent
Evaluate a single Outcome Contract assertion against caller-supplied evidence (snapshot). Returns verdict pass/fail/inconclusive plus the list of failed leaf assertions. Core-tier single-call surface; retry and escalation live in the pilot runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | No | Optional identifier for a registered contract. Reserved for forward compatibility — currently no registry exists, so callers must supply `contract` inline. | |
| contract | No | Assertion DSL object (see src/contracts/types.ts: kind ∈ url|dom_text|dom_count|network|screenshot_class|no_dialog|image_qa|and|or|not). Validated via validateAssertion() before evaluation. | |
| args | No | Reserved for future contract templating. Ignored in v1.11. | |
| evidence | No | Pre-captured page evidence. Required for evaluation; without it the verdict is `inconclusive`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and idempotentHint=true. The description adds behavioral details: returns verdict pass/fail/inconclusive, requires evidence else inconclusive, and mentions the core-tier vs pilot runtime distinction. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences: first states purpose and outputs, second provides context about tool tier. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description adequately covers the return value (verdict and failed leaf assertions) and the required input condition (evidence). It also notes the tool's place in the architecture. Minor gap: does not explain the verdict options beyond pass/fail/inconclusive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The main description adds only marginal context (e.g., 'caller-supplied evidence (snapshot)'). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'evaluate', the resource 'Outcome Contract assertion', and the outputs (verdict and failed leaf assertions). It also distinguishes from sibling tools by noting this is the core-tier single-call surface, with retry/escalation elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('Core-tier single-call surface; retry and escalation live in the pilot runtime') but does not explicitly state when to use this tool vs alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_checkpointA
Save, load, list, or delete automation checkpoints for long-running session continuity. Use "save" to persist current task state, "list" to inspect the bounded checkpoint timeline, "load" to restore metadata after context compaction, and "delete" to clean up.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| checkpointId | No | Specific checkpoint id for load/delete. Omit to use latest/current checkpoint. | |
| label | No | Optional short label for timeline inspection (save only). | |
| taskDescription | No | Description of the current automation task (required for save) | |
| completedSteps | No | List of completed steps (for save) | |
| pendingSteps | No | List of pending steps (for save) | |
| extractedData | No | Intermediate results to persist (for save) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, destructiveHint=false). The description discloses basic behaviors (save persists, delete cleans up) but lacks details on failure modes, overwrite behavior, or permanence of delete. More context would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main purpose, then lists actions and their uses. It is concise with no unnecessary words, earning its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema, the description covers action selection but does not explain return values, error states, or side effects. Adequate for basic use but lacking completeness for complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description adds minor value, e.g., 'Omit to use latest/current checkpoint' for checkpointId and 'required for save' for taskDescription, but largely reiterates schema info. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Save, load, list, or delete automation checkpoints for long-running session continuity.' It specifies the resource (automation checkpoints) and the actions, distinguishing it from sibling tools like oc_session_resume or oc_context_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance for each action: 'Use "save" to persist current task state, "list" to inspect the bounded checkpoint timeline, "load" to restore metadata after context compaction, and "delete" to clean up.' This helps agents choose the correct action, though it does not exclude alternatives when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_connection_healthARead-onlyIdempotent
Get CDP connection health metrics including heartbeat mode, reconnect count, ping latency, connection state, and live reconnection progress. Use this to monitor connection stability during long-running sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds value by detailing the metrics returned (heartbeat mode, reconnect count, ping latency, etc.) and the monitoring use case, without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences: the first specifies what the tool returns, and the second states its use case. No wasted words, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description provides sufficient context by listing the metrics returned and the monitoring purpose, though it does not detail how the metrics are structured or formatted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema coverage is 100%. The description does not need to add parameter meaning, and it appropriately omits any parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets CDP connection health metrics and lists specific metrics (heartbeat mode, reconnect count, etc.), distinguishing it from siblings like oc_get_connection_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this for monitoring connection stability during long-running sessions, providing clear context on when to use it, though it does not specify when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_context_exportARead-onlyIdempotent
Export the active tab's auth-relevant state (cookies + local/sessionStorage + optional UA/viewport/HTTP-auth) as a portable plaintext envelope. The envelope is byte-deterministic modulo capturedAt and carries a SHA-256 integrity hash for tamper detection on import. SECURITY: the envelope is plaintext by design — the host MUST treat it as a secret. Pair with oc_context_import on a fresh openchrome instance to carry signed-in state across hosts.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab ID to export from. | |
| origin | No | Explicit origin to record in the envelope. Default: active tab origin. | |
| includeStorage | No | Capture localStorage + sessionStorage. Default: true. | |
| includeHttpAuth | No | Capture HTTP Basic auth credentials supplied via `http_auth set`. Default: false (rarely safe to round-trip). | |
| captureUA | No | Capture navigator.userAgent. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds that the envelope is byte-deterministic modulo capturedAt, carries a SHA-256 integrity hash, and is plaintext by design. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loading the purpose, and includes essential security and pairing information without waste. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the envelope's properties but does not detail its exact structure (e.g., JSON fields). Adequate for use, but the envelope format could be more explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds default values and security context for parameters like includeHttpAuth, providing value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports auth-relevant state (cookies, storage) as a portable plaintext envelope, distinguishing it from its pair sibling oc_context_import. It uses specific verbs and resource details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly pairs with oc_context_import for carrying signed-in state across hosts, providing clear usage context. It does not explicitly state when not to use, but the security note implies caution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_context_importA
Strict-replace import of a ContextEnvelope produced by oc_context_export. Verifies the SHA-256 integrity hash first — on mismatch returns { ok: false, integrityError } WITHOUT applying any state. On success, existing cookies for the envelope origin and the active-origin web storage are CLEARED, then the envelope payload is installed. Merge semantics are intentionally not supported. SECURITY: the envelope is plaintext — the host MUST treat it as a secret.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab ID to apply the envelope to. | |
| envelope | Yes | REQUIRED A `ContextEnvelope` produced by `oc_context_export`. | |
| strictOrigin | No | When true, reject the import if the active tab origin does not match `envelope.origin`. Default: false (caller is responsible for navigating). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description details destructive actions (clears cookies/web storage) but annotations set destructiveHint=false, creating a direct contradiction per scoring rules. The description itself is transparent, but the contradiction mandates a score of 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with front-loaded purpose, concise behavioral details, and a critical security note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preconditions, integrity check, partial return value for failures, and side effects. Missing success return value description and output schema, which is needed for completeness given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). Description adds overall context but does not improve parameter understanding beyond schema descriptions. Envelope parameter implicitly described via integrity check.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb ('import'), resource ('ContextEnvelope'), and source ('produced by oc_context_export'). Distinct from sibling tools like oc_context_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Strict-replace import' and 'Merge semantics are intentionally not supported,' guiding when to use this tool. Could further clarify alternatives for merge needs, but none listed among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_copy_to_clipboardA
Copy text to the system clipboard. Useful for copying MCP server URLs or config snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to copy to clipboard. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description straightforwardly explains the action; annotations confirm it's non-destructive. No hidden behaviors or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise—two sentences with no wasted words. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully adequate for a simple tool with one required parameter. No missing information needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter schema has 100% coverage, and description adds context by suggesting typical usage, enhancing understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it copies text to the system clipboard and gives specific use cases (MCP server URLs or config snippets), differentiating it from sibling tools which are unrelated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes usefulness for copying specific content, implying when to use. No explicit when-not or alternatives, but simplicity and lack of similar tools make this sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_devtools_urlARead-onlyIdempotent
Get the Chrome DevTools inspector URL for the current worker's active page. Returns a URL you can paste into any local browser to attach live DevTools to the running page. Use targetId to select a specific open tab, or workerId to select a specific worker's current page.
| Name | Required | Description | Default |
|---|---|---|---|
| targetId | No | Optional CDP target ID. When provided, returns the DevTools URL for that specific tab. | |
| workerId | No | Optional worker ID. When provided (and targetId is omitted), returns the DevTools URL for that worker's current page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds 'Returns a URL you can paste into any local browser,' confirming it's a read-only operation. It does not disclose potential errors or limitations (e.g., requiring an active worker), but the annotations cover the safety profile adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a clear purpose: purpose, return value, and parameter guidance. No wasted words, front-loaded with the main action. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no required params, no output schema), the description covers all essential aspects: what it gets, what it returns, and how to specify parameters. The output URL type is explained, and annotations cover safety. No gaps for an agent to make mistakes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented. The description restates parameter intent: 'Use targetId to select a specific open tab, or workerId to select a specific worker's current page.' This adds little beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the Chrome DevTools inspector URL for the current worker's active page.' This specifies the verb (Get), resource (DevTools inspector URL), and context (current worker's active page), making it distinct from sibling tools like 'inspect' or 'oc_observe'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on choosing between targetId and workerId: 'Use targetId to select a specific open tab, or workerId to select a specific worker's current page.' However, it does not mention when to use this tool over alternatives (e.g., 'inspect' or browser DevTools), so usage guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_diffARead-onlyIdempotent
Compare two evidence-bundle IDs or paths and return deterministic DOM, screenshot phash, URL, console, and network diff facts.
| Name | Required | Description | Default |
|---|---|---|---|
| before | Yes | REQUIRED Before evidence bundle ID or absolute bundle path. | |
| after | Yes | REQUIRED After evidence bundle ID or absolute bundle path. | |
| kinds | No | Kinds to compare. Default: dom, screenshot, url, console, network. |
Output Schema
| Name | Required | Description |
|---|---|---|
| before | Yes | |
| after | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that the diffs are 'deterministic' and specifies the exact components compared. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 20 words that conveys the essential purpose and scope without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the three fully described parameters and the existence of an output schema, the description covers the tool's purpose and behavior completely without missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all three parameters. The tool description does not add extra parameter details beyond what the schema provides, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'compare', the resource 'evidence-bundle IDs or paths', and lists the specific diff facts returned (DOM, screenshot phash, URL, console, network). This is specific and differentiates it from other oc_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to compare two evidence bundles and lists the kinds of diffs. However, it does not explicitly mention when not to use it or provide alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_doctor_reportARead-onlyIdempotent
Read the most recent openchrome doctor diagnostic report from cache. Returns the DoctorReport written by the last openchrome doctor run. Does NOT trigger new checks — run openchrome doctor in a shell to refresh.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that the tool reads from cache and does not trigger new checks, which is consistent and goes beyond annotations by explaining the caching mechanism.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence states the main purpose, the second clarifies important behavioral detail (no new checks, refresh method). Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no parameters and full annotations, the description provides the essential context: it reads a cached report, does not run checks, and how to refresh. The only minor gap is the lack of return value structure, but since there is no output schema, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is 100%. The description does not add meaning to parameters (since none exist), meeting the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the most recent openchrome doctor diagnostic report from cache, specifying the verb 'Read' and the resource 'doctor diagnostic report'. It distinguishes from sibling tools like `oc_doctor` by implying it does not run checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says the tool does NOT trigger new checks and instructs users to run `openchrome doctor` in a shell to refresh the cache, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_evidence_bundleA
Capture a snapshot of the current page state (DOM, screenshot, network slice, console, perceptual hash) and write it to a bundle directory. Returns { bundle_id, path, size_bytes, parts }. Default include = ['dom', 'screenshot']; pass include to capture more parts. network_window_ms (default 5000) limits the network slice to recent entries. Core-tier; does not depend on the pilot runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Which parts to capture. Default ['dom', 'screenshot']. Allowed items: 'dom' | 'screenshot' | 'network' | 'console' | 'phash' | 'gate' | 'schema_diff'. `gate` requires `evidence.snapshot.gate`; `schema_diff` requires `target_schema` and `evidence.snapshot.observed`; otherwise the part is omitted. | |
| target_schema | No | Declared target schema (see src/core/contracts/schema-diff.ts: { version: 1, fields: [ { name, type, required? } ] }). When supplied together with `evidence.snapshot.observed` and the 'schema_diff' part is included, the bundle writes `schema_diff.json` containing the structured field-match diff. | |
| network_window_ms | No | Rolling window (ms) used to slice the supplied `evidence.snapshot.network` array. Default 5000. | |
| evidence | No | Caller-supplied snapshot. Provide the subset of fields the requested parts need: `dom`, `screenshot_png_base64`, `network`, `console`, `now_ms`, `gate`, `observed`. Missing fields cause the corresponding part to be omitted gracefully. | |
| output_mode | No | "inline" (default): return the full payload in-band — byte-identical to v1.11.0. "handle": write payload to the handle store and return a small descriptor; redeem with oc_output_fetch. "auto": inline if payload ≤ output_inline_limit_bytes, otherwise handle. | |
| output_inline_limit_bytes | No | Only honored when output_mode="auto". If the serialized payload exceeds this byte count the response spills to a handle. Default: 32768. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by explaining graceful omission of missing fields, output modes (inline, handle, auto), and conditions for optional parts like `gate` and `schema_diff`. This adds significant behavioral context not captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loading the core purpose, and each sentence adds necessary information without redundancy. It covers key behaviors in a compact format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 6 parameters and no output schema, the description fully explains the return value, all configurable parts, conditional inclusions, output modes, and error handling (graceful omission). It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter. The tool description adds value by clarifying defaults for `include` and `network_window_ms`, and the overall purpose of `evidence`. However, the schema itself already provides comprehensive parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Capture a snapshot of the current page state' and the resource 'bundle directory'. It lists all captured parts and the return object, distinguishing it from sibling tools that focus on other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Core-tier; does not depend on the pilot runtime' and explains defaults for `include` and `network_window_ms`. However, it does not explicitly mention when not to use this tool or compare it to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_gate_inspectARead-onlyIdempotent
Detect whether the current tab is gated (CAPTCHA, bot-check, SSO redirect, paywall, 2FA prompt). Returns facts only — never invokes any solver, never makes a third-party HTTP call, never bypasses the gate. The host agent decides what to do next.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab ID to inspect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (read-only, idempotent), the description adds critical context: no solver invocation, no third-party calls, no bypassing. This clarifies the tool's safe, non-intrusive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. First sentence defines purpose with examples; second sets boundaries. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool does and doesn't do. With no output schema, the return format is unspecified but implied as factual. Slightly incomplete without an example result, but sufficient for a simple detection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter tabId. The description does not add extra meaning beyond the schema's 'REQUIRED Tab ID to inspect', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool detects whether a tab is gated (CAPTCHA, SSO, etc.), using specific verbs and resources. It distinguishes from siblings like 'inspect' by emphasizing it only detects, never solves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly outlines when to use (check for gates) and what it does not do (solve, make calls). It implies the agent should decide next steps. Explicit alternatives are not given, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_get_connection_infoARead-onlyIdempotent
Get connection configuration for a web AI host (Claude Web, ChatGPT, Gemini, or custom). Returns the MCP server URL, bearer token, settings page URL, step-by-step instructions, and (when Chrome is reachable) a devtools block with live DevTools inspector URLs for all open pages. Use host="openchrome" to introspect the openchrome server itself — when --auto-connect is active, returns {mode: "auto-connect", userDataDir, port}.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Web AI host to generate config for. Use "all" for all hosts, or "openchrome" for openchrome server status (e.g. auto-connect mode). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly and idempotent. The description adds valuable behavioral details: it returns MCP server URL, bearer token, settings page, instructions, and optionally live DevTools inspector URLs when Chrome is reachable. It also reveals the conditional behavior for the 'openchrome' host.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences long. The first sentence clearly states the core purpose, and the second sentence adds a crucial special case. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, rich annotations, and no output schema, the description fully covers the tool's behavior, return values, and special scenarios (e.g., Chrome reachability, --auto-connect mode). It is complete for a read-only info tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema covers 100% of the parameter (host with enum), the description adds meaning by explaining each enum value's purpose and giving a concrete example for 'openchrome.' This goes beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Get connection configuration for a web AI host,' which clearly states the verb (Get) and resource (connection configuration). The tool is distinct from its many siblings as it focuses on fetching configuration details for specific AI hosts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific use-case for the 'openchrome' host value and explains what it returns when --auto-connect is active. However, it does not explicitly differentiate this tool from alternatives like oc_connection_health or oc_devtools_url, which are siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_journalA
Query the tool call journal. Actions: "summary" (milestone overview), "recent" (last N entries), "handoff_summary" (compact JSON resume handoff). When to use: Reviewing session history, restoring context, or auditing past tool calls. When NOT to use: Use read_page or inspect to check the current live page state.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Query type | |
| count | No | (recent) Number of entries to return. Default: 20, max: 100 | |
| tool | No | Filter by tool name | |
| sessionId | No | (handoff_summary) Limit journal evidence to one session id | |
| checkpointId | No | (handoff_summary) Source checkpoint id. Only "current" is backed by the existing checkpoint store. | |
| includeCheckpoint | No | (handoff_summary) Include the current checkpoint file when available. Default: true | |
| since | No | ISO timestamp or relative ("1h", "30m") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, implying possible writes, but the description describes only a query operation. No behavioral traits beyond the contradictory annotation are disclosed, such as whether the tool modifies state, requires auth, or has rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three sentences covering purpose, actions, and usage boundaries. No wasted words, and critical information is front-loaded. Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema, the description provides essential context: actions, their outputs (e.g., 'compact JSON resume handoff'), and usage boundaries. It could be more complete with details on error behavior or pagination for the 'recent' action, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all 7 parameters. The description adds no additional semantic meaning beyond what the schema provides, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies verb 'Query' and resource 'tool call journal', and enumerates three actions with brief explanations. However, it does not explicitly differentiate from similar sibling tools like oc_journal_compact, missing an opportunity for clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('reviewing session history, restoring context, auditing') and when NOT to use (use read_page or inspect for live page state), with concrete alternative tool names. This is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_journal_compactARead-onlyIdempotent
Compress a sliding window of journal entries into a compact model-friendly summary. Defaults to a deterministic recent_k strategy that fits a token budget. checkpoint_only returns milestone-flagged entries. sampling forwards a summarisation prompt to the host LLM via sampling/createMessage — only available when the client advertises the sampling capability; returns { status: "unsupported_by_host" } otherwise. OpenChrome never uses its own LLM.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Optional MCP session id filter. The `recent_steps` window is taken across all sessions first, then filtered by this id — so a busy multi-session journal may yield fewer than `recent_steps` entries for one session; raise `recent_steps` to compensate. When omitted, all recent entries are considered. | |
| recent_steps | No | How many recent journal entries to consider. Default 50. | |
| token_budget | No | Approximate token budget for the summary text. Default 1024. | |
| strategy | No | Compaction strategy. Defaults to `recent_k` (deterministic). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent. The description adds: 'Defaults to deterministic recent_k', 'checkpoint_only returns milestone-flagged entries', 'sampling forwards to host LLM and returns unsupported status', and 'OpenChrome never uses its own LLM'. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph, but it is well-organized with front-loading of purpose, then defaults, then strategy details. It could benefit from visual structure like bullets, but remains clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers inputs and strategies but lacks explanation of the return value format for strategies other than sampling. The output is described as 'compact model-friendly summary', which is vague. Given no output schema, more detail would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 4 parameters described in schema). The description adds extra context: session_id explains filtering behavior after cross-session window, recent_steps and token_budget have defaults, strategy enum values are explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compresses journal entries into a summary, with specific verb 'compress' and resource 'journal entries'. It distinguishes from siblings like oc_journal by stating 'compact model-friendly summary' and detailing strategies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each strategy (recent_k, checkpoint_only, sampling) and notes the sampling capability requirement. It does not explicitly state when to avoid this tool, but the purpose and sibling context make it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_lane_closeADestructive
Close a task-scoped browser lane and its lane-owned targets without closing unrelated task tabs.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | 16-hex task id returned by oc_task_start. | |
| task_id | No | Alias for taskId. | |
| laneId | No | Lane id returned by oc_lane_create. | |
| lane_id | No | Alias for laneId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description adds value by clarifying that unrelated task tabs remain untouched, providing context beyond the annotations. It doesn't detail what 'lane-owned targets' are or potential side effects, but the added scope constraint is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct, front-loaded, and contains no unnecessary words. Every part adds value: action, scope, and exclusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple close operation with destructive annotations, the description is mostly complete. It explains what is closed and what is preserved. However, it could mention handling of missing lanes or confirmation of closure, but given the tool's simplicity and schema coverage, it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear parameter descriptions, so baseline is 3. The description does not add additional meaning beyond the action; it restates the parameters implicitly. No extra value added to parametric understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'close' and the resource 'task-scoped browser lane', and specifies it does not affect unrelated task tabs, distinguishing it from sibling lane-manipulation tools like oc_lane_create or oc_lane_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to close a lane) but lacks explicit guidance on when not to use it or comparison with alternatives like oc_lane_list or oc_lane_get. The 'without closing unrelated task tabs' provides some context but not full usage criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_lane_createA
Create a task-scoped browser lane on existing SessionManager worker/target primitives. Lanes isolate refs, tabs, and trace metadata for host-driven parallel work. Optional profile: "inherit" (default) shares the server Chrome user-data-dir; "scratch" provisions a fresh temp user-data-dir at creation and removes it on oc_lane_close.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | REQUIRED 16-hex task id returned by oc_task_start. | |
| task_id | No | Alias for taskId. | |
| name | No | Optional human label. | |
| purpose | No | Optional bounded purpose for audit/debugging. | |
| initialUrl | No | Optional URL to open as the first lane target. | |
| budget | No | Optional host-owned lane budget metadata; recorded only. | |
| profile | No | Profile isolation mode. `"inherit"` (default) shares the existing Chrome user-data-dir. `"scratch"` provisions a clean temporary Chrome user-data-dir for the lane and removes it automatically when the lane is closed via oc_lane_close. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (no readOnly, destructive, etc.), so the description carries the burden. It discloses the profile behavior, including that scratch provisions and removes a temp directory. However, it does not mention error conditions, side effects on existing state, or whether the operation is safe to repeat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and efficiently adds the crucial profile isolation detail. No fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description covers the basic concept and profile modes but omits important context: what the return value is, how to reference the lane later, error conditions, and prerequisite that the taskId must refer to an existing task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds significant extra context for the profile parameter, detailing the behavior of 'inherit' and 'scratch' beyond the schema. For other parameters, it adds little, but the profile explanation elevates the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a task-scoped browser lane on existing SessionManager worker/target primitives.' It explains the function of a lane ('isolate refs, tabs, and trace metadata') and distinguishes itself from sibling tools like oc_lane_close.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating it operates 'on existing... primitives' and explains the profile options, but it does not explicitly tell when to use this tool versus alternatives, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_lane_getARead-onlyIdempotent
Fetch one task-scoped browser lane including live target ids and counters.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | 16-hex task id returned by oc_task_start. | |
| task_id | No | Alias for taskId. | |
| laneId | No | Lane id returned by oc_lane_create. | |
| lane_id | No | Alias for laneId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, non-destructive, and idempotent. The description adds that the returned data includes 'live target ids and counters', which is extra behavioral context. However, it does not explain other behavioral traits (e.g., latency, side effects). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous words. It efficiently conveys the essential purpose and key output characteristics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description only mentions 'live target ids and counters' as return content. It lacks details on the structure of the returned lane object, which could hinder an AI agent's correct invocation. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with clear descriptions for all parameters. The tool description does not add new parameter meaning beyond what is already in the input schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch'), the resource ('one task-scoped browser lane'), and the included data ('live target ids and counters'). This effectively distinguishes the tool from siblings like oc_lane_create, oc_lane_list, and oc_lane_close.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or context for selection among sibling lane-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_lane_listARead-onlyIdempotent
List task-scoped browser lanes for a task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | 16-hex task id returned by oc_task_start. | |
| task_id | No | Alias for taskId. | |
| laneId | No | Lane id returned by oc_lane_create. | |
| lane_id | No | Alias for laneId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds scope context ('task-scoped') but no additional behavioral details like pagination or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence that efficiently conveys the tool's purpose without extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with good annotations and full schema coverage, the description is adequate. However, it could mention the return format or any default behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter. The description does not add any further meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', resource 'browser lanes', and scope 'for a task'. It is specific and distinguishes from sibling tools like oc_lane_create and oc_lane_close.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as oc_lane_get. Prerequisites or filtering options are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_normalize_actionARead-onlyIdempotent
Validate and normalize a near-valid browser/computer action payload without executing it. Use this before calling real action tools when a host model produced aliases such as left_click, hotkey, coordinate, or missing click button. This tool is side-effect-free: it does not touch Chrome, CDP, tabs, DOM, cookies, storage, or files.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | REQUIRED Candidate action object to validate and normalize. The action is never executed. | |
| targetTool | No | Optional target tool context. Currently advisory only; normalization remains side-effect-free. | |
| strict | No | When true (default), missing required fields and unsupported action types make ok=false. | |
| redactNormalized | No | When true, caller-provided string payload values in normalized output are replaced with '[REDACTED]'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| changed | Yes | |
| normalized | No | |
| warnings | Yes | |
| errors | Yes | |
| safety | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent. Description goes further with 'side-effect-free: it does not touch Chrome, CDP, tabs, DOM, cookies, storage, or files.' Lists exactly what is not affected, adding valuable behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first sentence front-loads purpose and key qualifiers (validate, normalize, near-valid, without executing), second sentence emphasizes side-effect-free nature. No wasted words, all essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists (not shown but indicated), description covers purpose, usage context, behavioral traits, and parameter semantics adequately. No missing critical information; the tool is well-described for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. Description adds minimal extra value beyond schema; it restates that action is never executed, but schema already says 'Action is never executed.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Validate and normalize a near-valid browser/computer action payload without executing it.' Identifies the specific resource (action payload) and verb (validate and normalize). Differentiates from sibling execution tools by emphasizing non-execution, making its unique purpose obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'Use this before calling real action tools when a host model produced aliases such as left_click, hotkey, coordinate, or missing click button.' Provides clear context for use, though could strengthen with explicit when-not-to-use or alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_observeARead-onlyIdempotent
Deterministic, numbered list of actionable elements on the page. When to use: replace the read_page → query_dom → inspect → interact pattern when you already know which kind of action you want to take (click / fill / select / hover / focus). Returns refs that plug directly into interact. When NOT to use: full-page comprehension (use read_page), structural CSS diagnostics (use read_page mode=css), or natural-language replay (use act). No LLM, no outbound network — pure AX-tree traversal.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab ID to observe | |
| scope | No | 'viewport' (default) restricts to the current viewport; 'document' returns all actionable nodes | |
| actions | No | Filter to nodes offering at least one of these action verbs | |
| limit | No | Hard cap on returned entries (default 200, max 1000) | |
| includeHidden | No | Include disabled / aria-hidden / display:none nodes (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds context beyond annotations: 'No LLM, no outbound network — pure AX-tree traversal,' reinforcing deterministic and safe behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (4 sentences) with front-loaded purpose, clear usage guidelines, and no redundant text. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description covers return value ('Returns refs that plug directly into interact'), purpose, usage boundaries, and operational constraints. Complete for a list tool with rich annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all 5 parameters. Description adds no extra parameter-level meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Deterministic, numbered list of actionable elements on the page' with specific verb and resource. It clearly distinguishes from sibling tools like read_page and act by referencing the read_page→query_dom→inspect→interact pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('replace the read_page → query_dom → inspect → interact pattern when you already know which kind of action you want to take') and when-not-to-use guidance with alternative tools (read_page for comprehension, act for language-based replay, etc.).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_open_host_settingsA
Open the MCP connector settings page for a web AI host in the default browser.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Web AI host whose settings page to open. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the tool opens a browser page, which is useful behavioral information. However, it does not detail side effects such as whether a new tab is created, focus changes, or if the call fails silently when no browser is present. Annotations do not provide additional safety context, so the description carries some burden but falls short of full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that immediately conveys the tool's purpose. It is front-loaded, concise, and contains no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is fairly complete. It explains what the tool does and what input it takes. However, it could mention that it opens in the default browser and implicitly requires a browser environment, which might affect completeness for agents lacking that context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add meaningful information about the 'host' parameter beyond what the input schema already provides (enum values and a short description). With 100% schema coverage, a baseline of 3 is appropriate since the schema already documents the parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool opens the MCP connector settings page for a web AI host in the default browser. It uses a specific verb and resource, and it is distinct from siblings like 'oc_devtools_url' or 'cookies' which deal with different settings or configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., whether the host must be configured first) or context in which this tool is appropriate, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_output_fetchA
Redeem an output handle returned by a large-output tool (read_page, crawl, network, extract_data, oc_evidence_bundle). Supports offset/limit pagination for JSON arrays (item-based) and binary blobs (byte-range). Returns eof=true and next_offset=null when the last page has been read.
| Name | Required | Description | Default |
|---|---|---|---|
| output_handle | Yes | REQUIRED Handle identifier returned by a large-output tool (e.g. "oh_ABCDEFGHIJKL"). | |
| offset | No | Byte offset (binary) or item index (JSON array). Default: 0. | |
| limit | No | Max items (JSON array) or bytes (binary/non-array JSON) to return per page. Default: 200 items for JSON arrays, 65536 bytes for blobs. | |
| format | No | "auto" (default): JSON arrays use item pagination, blobs use byte-range. "items": force item pagination (JSON arrays only). "bytes": force byte-range pagination. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses pagination modes (item-based vs byte-range), defaults for offset/limit, and termination indicators (eof, next_offset). It does not cover error conditions like invalid handles, but provides sufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, front-loading the purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (pagination with two modes) and the absence of an output schema, the description adequately covers the return behavior (eof, next_offset). It could mention error handling, but the essential information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value beyond the schema by explaining default values (200 items, 65536 bytes), the 'auto' format behavior, and the meaning of eof and next_offset. This helps the agent understand parameter effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Redeem an output handle returned by a large-output tool...' It specifies the verb 'Redeem' and the resource 'output handle', and distinguishes it from sibling tools by mentioning the specific tools that produce output handles (read_page, crawl, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: after a large-output tool returns an output handle. It does not explicitly say when not to use, but the context is clear. It does not list alternative tools, but the purpose is specific enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_performance_analyzeARead-onlyIdempotent
Drill into one named insight from a trace captured by oc_performance_insights. Returns Markdown details and an evidence list. Unknown insight names return { error: 'unknown_insight', supported: [...] } without crashing.
| Name | Required | Description | Default |
|---|---|---|---|
| trace_id | Yes | REQUIRED Trace handle returned by oc_performance_insights. | |
| insight | Yes | REQUIRED Name of the insight to drill into. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, ensuring safety. The description adds transparency by stating the return format (Markdown details and evidence list) and error handling (unknown insight returns error without crashing), which is not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence covers purpose and output, the second covers error handling. Every sentence adds value, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description is nearly sufficient. It covers what the tool does, its inputs, and error behavior. However, it does not explain the format of the returned Markdown details or evidence list, which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds context by tying 'trace_id' to the output of 'oc_performance_insights' and notes that 'insight' is from an enum, with error handling for unknown values. This provides a slight improvement over the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool drills into a specific insight from a trace captured by 'oc_performance_insights', identifying it as a drill-down tool. It distinguishes from the sibling 'oc_performance_insights' which captures traces and returns insights, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates this tool is used after obtaining a trace from 'oc_performance_insights', providing a clear usage context. It also mentions that unknown insight names return an error with supported list, guiding correct input. However, it does not explicitly state when to avoid using this tool or list alternatives beyond the implied dependency.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_performance_insightsA
Capture a CDP performance trace and return named insights (LCPBreakdown, DocumentLatency, RenderBlocking, CLSCulprits, LongTasks, ThirdParties). Returns a trace_id usable by oc_performance_analyze. Core-tier; trace handles are session-scoped and evicted on session close. Disable via OPENCHROME_PERF_INSIGHTS=0.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab ID to trace. | |
| url | No | If set, navigate the tab to this URL before tracing. | |
| reload | No | Reload the page after starting the trace (cold-load capture). | |
| cpuThrottling | No | CPU throttling rate. 1 = none, 4 = mid-tier mobile. | |
| network | No | Network throttling profile. | |
| autoStop | No | When to stop tracing. "load" = page load event, "idle" = network idle, { ms: N } = fixed timeout. Default 3000ms. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false etc. The description adds behavioral context: it starts tracing (nontrivial operation), session-scoped handles are evicted on session close, and it can be disabled via environment variable. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first directly states purpose and outputs, second adds essential lifecycle context. Every sentence is necessary, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (1 required) and no output schema, the description covers key aspects: purpose, returned insights, trace_id for analysis, session scoping, and disable option. Adequate for an agent to use the tool safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds no new parameter-level meaning beyond listing output insights. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('capture', 'return') and clearly names the resource ('CDP performance trace', named insights list). It distinguishes from sibling 'oc_performance_analyze' by stating the trace_id is usable by that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (performance tracing) and provides lifecycle details (session-scoped, eviction on close, disable env var). However, it does not explicitly contrast when not to use this tool versus alternatives like performance_metrics or network_capture.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_policyARead-onlyIdempotent
Inspect deterministic OpenChrome safety policy. Use action="matrix" to list irreversible-action rules or action="evaluate" to preview a policy decision for a tool/args context.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | matrix lists policies; evaluate returns a decision for tool/args. Default: matrix. | |
| tool | No | (evaluate) Tool name to evaluate. | |
| args | No | (evaluate) Tool arguments to classify. | |
| dryRun | No | (evaluate) Whether the caller requested a dry-run/preview path. | |
| elicitationSupported | No | (evaluate) Whether client-side elicitation/confirmation is available. | |
| allowedDomains | No | (evaluate) Optional task allowedDomains policy. | |
| checkpoint | No | (evaluate) Optional checkpoint evidence with createdAt, now, and taskId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds the deterministic nature and the two modes of operation, consistent with annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and then explain the two actions. Every sentence adds value with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema, the description covers the two main use cases well. It could mention the output format (e.g., list, decision object) but the schema handles parameter details adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description provides a high-level summary of the action parameter but doesn't add new semantic details beyond what the schema already explains for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects deterministic OpenChrome safety policy, specifying two distinct actions (matrix and evaluate). This is a specific verb+resource combo that distinguishes it from sibling tools like oc_gate_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use each action: 'matrix' for listing rules, 'evaluate' for previewing a decision. While it doesn't list alternatives, the context is clear and no exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_profile_statusBRead-onlyIdempotent
Check browser profile type and capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true, destructiveHint false, and idempotentHint true. The description's 'check' verb is consistent but adds no additional behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at 6 words, front-loading the purpose. It could be slightly more descriptive without harming conciseness, but it is mostly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status check tool with no parameters or output schema, the description is adequate but lacks details on what 'profile type and capabilities' means or what the return value contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description does not need to elaborate on parameters, and the empty schema leaves no gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks browser profile type and capabilities, using a specific verb and resource. It is distinct from sibling tools based on its unique name, but no explicit differentiation is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_profiles. There is no context for when to check profile status or what actions to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_progress_statusARead-onlyIdempotent
Read-only diagnostics for whether the current OpenChrome session appears to be progressing, stalling, or stuck. Returns bounded counters and advisory next-call suggestions; it never stops, retries, recovers, or executes browser actions.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Optional session ID. Defaults to the current MCP session. | |
| window | No | Recent completed calls to inspect. Default 10, min 3, max 50. | |
| includeRecentCalls | No | Include redacted compact recent call summaries. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sessionId | Yes | |
| status | Yes | |
| window | Yes | |
| counters | Yes | |
| topSignal | No | |
| suggestedPolicy | Yes | |
| suggestedNextCalls | Yes | |
| recentCalls | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, destructive hint false, and idempotent. The description adds valuable behavioral details: 'it never stops, retries, recovers, or executes browser actions.' This goes beyond the annotations and helps the agent understand the tool's passive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with three sentences: the first defines purpose, the second describes return type, and the third clarifies what the tool does not do. No unnecessary words, and the critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a diagnostic tool with 3 parameters and an output schema, the description adequately covers the purpose, behavior, and limitations. It explains what the tool returns ('bounded counters and advisory next-call suggestions') and that it is safe to call. No gaps are apparent given the availability of the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters with descriptions (sessionId, window with default/min/max, includeRecentCalls). The description does not add parameter-level meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's purpose: 'Read-only diagnostics for whether the current OpenChrome session appears to be progressing, stalling, or stuck.' It also explicitly states what the tool does not do ('it never stops, retries, recovers, or executes browser actions'), which distinguishes it from action-oriented sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by stating it is read-only and does not execute browser actions, implying it should be used for non-intrusive health checks. However, it does not explicitly list alternative tools for different diagnostics, leaving the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_queryARead-onlyIdempotent
Resolve a semantic element query into stable refs for interaction workflows. Uses local AX/DOM matching only; no external AgentQL or LLM provider is called. Pass returned refs to interact, act, fill_form, read_page(ref_id), or plan parseResult.storeAs paths.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab id to query. | |
| query | Yes | REQUIRED Semantic query such as "checkout button" or "email field". | |
| purpose | No | How the caller intends to use the result. Default: interaction. | |
| limit | No | Maximum refs to return. Default 5, max 20. | |
| includeCandidates | No | When true, include lower-scored DOM candidates as well as AX matches. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds useful behavioral info: uses only local AX/DOM matching, no external calls. This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-loaded with the core purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and informative annotations, the description covers the tool's function, usage, and output handling well. It does not explain return format, but the overall completeness is high for a query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add significant per-parameter info beyond the schema, but provides overall context. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Resolve a semantic element query into stable refs') and the resource ('semantic element queries'). It distinguishes from sibling tools by noting local AX/DOM matching only, no external providers. The purpose is specific and clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: for interaction workflows, and directs where to pass the refs (interact, act, etc.). However, it does not explicitly state when not to use or name alternatives among siblings, though the differentiation from external-provider tools is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_reap_orphansADestructive
Manually sweep and terminate orphaned OpenChrome-managed Chrome processes. Never touches attach-mode or unmarked user Chrome.
| Name | Required | Description | Default |
|---|---|---|---|
| ports | No | Optional Chrome remote-debugging ports to check for legacy PID-file orphans. Defaults to the active CDP port window (base port through base+4); ownership markers are always scanned. | |
| dryRun | No | Preview orphaned Chrome processes that would be terminated without killing processes or deleting marker/PID files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool terminates processes (destructive) and specifies it does not affect attach-mode or unmarked Chrome, adding behavioral context beyond the annotations. It does not mention idempotency or side effects, but the safety boundary is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two sentences that efficiently convey purpose and a key safety constraint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two optional parameters and no output schema, the description covers the core purpose and safety. It could mention the result or return value, but the lack of such is acceptable given the tool's nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the input schema already provides detailed descriptions for both parameters (ports and dryRun). The overall description adds no extra parameter information, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'sweep and terminate' and clearly identifies the resource as 'orphaned OpenChrome-managed Chrome processes'. It also explicitly excludes attach-mode or unmarked user Chrome, differentiating it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is for manual intervention and clarifies what it never touches, providing safety guidance. However, it lacks explicit when-to-use or when-not-to-use compared to alternatives, though the context implies its use for cleaning orphaned processes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_recording_exportA
Export a recording as JSON or a self-contained HTML report. For HTML, saves to ~/.openchrome/recordings/{id}/report.html and returns the path.
| Name | Required | Description | Default |
|---|---|---|---|
| recordingId | Yes | The recording ID to export. | |
| format | No | Export format. Default: "json". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, and the description adds context about the HTML export saving to a specific path and returning that path. This goes beyond annotations, though it could be more explicit about file creation side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action, and contains no unnecessary words. It is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For HTML export, the description specifies the return value (path). However, for JSON export, it does not clarify whether the JSON is returned directly or saved to a file, leaving a gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema itself documents both parameters. The description adds no extra meaning beyond the enum values for format; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a recording in JSON or HTML format. It uses a specific verb ('Export') and resource ('recording'), and the lack of sibling export tools makes differentiation inherent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool vs alternatives or when not to use it. It implies usage for exporting recordings, but no guidance on format selection or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_recording_listARead-onlyIdempotent
List available session recordings, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of recordings to return. Default: 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint. Description adds ordering behavior ('newest first') beyond annotations. No contradictions. Could disclose scope of 'available' recordings but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no wasted words. Perfectly concise for the information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one optional parameter and rich annotations. Description is mostly complete but lacks details on output format (e.g., fields returned) and pagination behavior. Adequate for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'limit' with schema description covering 100%. Description does not add meaning beyond schema. Baseline 3 is appropriate as schema is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('List') and resource ('session recordings') with sorting order ('newest first'), distinguishing it from sibling recording tools like oc_recording_start or oc_recording_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites, use cases, or when not to use it. Minimal context for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_recording_startA
Start a new session recording. All subsequent MCP tool calls will be recorded until oc_recording_stop is called. Errors if a recording is already active.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional human-readable label for this recording. | |
| profile | No | Optional browser profile name to associate with this recording. | |
| trajectoryBundle | No | Default false. When true, write a file-based trajectory bundle under ~/.openchrome/trajectories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (non-read-only), destructiveHint=false, idempotentHint=false. The description adds that it records calls and errors if a recording is active, which is behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and contains no extraneous information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple start-recording tool with no output schema and good annotations, the description provides all necessary context: what it does, scope, and error condition. It is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 3 parameters are fully described in the schema (100% coverage). The description does not add additional detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Start a new session recording' and explains that it records subsequent MCP tool calls until oc_recording_stop is called. It also notes the error condition if already active, distinguishing it from other recording-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that recordings continue until oc_recording_stop and errors if already active, providing clear context for when to use it. It does not explicitly mention alternatives or when not to use, but the usage is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_recording_statusARead-onlyIdempotent
Report whether session recording is active, including trajectory bundle metadata when enabled.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as read-only and idempotent. The description adds behavioral detail about returning trajectory bundle metadata when enabled, but does not specify what 'enabled' means or the metadata structure. Given the simplicity, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. It efficiently conveys the tool's purpose without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description provides essential information. However, it omits the structure of the return value, which could be helpful for an agent to process the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema description coverage is 100%. The description does not need to add parameter info, so the baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Report' and the resource 'whether session recording is active', adding 'including trajectory bundle metadata when enabled'. It effectively distinguishes from siblings like oc_recording_start/stop/list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a status check but provides no explicit guidance on when to use this tool versus alternatives like oc_recording_list or oc_recording_start/stop. More context on usage context would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_recording_stopADestructive
Stop the active session recording and finalize it to disk. Returns a summary of the recording. Errors if no recording is active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses destructive behavior (finalize to disk) consistent with destructiveHint=true. Includes error condition and return summary. Could elaborate on irreversibility but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with key information. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely describes the tool's behavior given zero parameters and no output schema. Covers success outcome, return value, and error case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so the baseline 4 applies. Description adds no param info, but schema coverage is 100% trivially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (stop), resource (active session recording), and outcomes (finalize to disk, return summary, error if none). Distinguishes from sibling tools like oc_recording_start, oc_recording_status, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns that it errors if no recording is active, implying the prerequisite. Lacks explicit mention of when not to use or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_reflectB
Create, get, or list structured task-failure reflection artifacts. Reflections are passive recovery guidance only; OpenChrome never executes nextPlan automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | REQUIRED Reflection action: create, get, list, or validate. | |
| id | No | (get) Reflection id | |
| scope | No | (create/list) domain, taskFingerprint, optional contractId/urlPattern | |
| trigger | No | (create) stuck, plan_failed, contract_failed, workflow_partial, or timeout | |
| evidence | No | (create) journalEntryIds, hintRules, failedAssertions, and lastTools | |
| diagnosis | No | (create) bounded diagnosis text | |
| nextPlan | No | (create) passive next-trial plan items | |
| avoid | No | (create) actions/strategies to avoid repeating | |
| confidence | No | (create) confidence 0..1 | |
| expiresAt | No | (create) optional unix ms expiry | |
| limit | No | (list) max records, default 3, max 100 | |
| includeExpired | No | (list) include expired reflections for debugging | |
| success | No | (validate) whether using this reflection succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool can write (readOnlyHint=false) and is not destructive. The description adds that it creates/gets/lists and is passive, which is helpful. But it does not disclose potential side effects, required permissions, or behavior for each action beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise—only two sentences. The first sentence clearly states the verb and resource, and the second adds the important passive qualifier. Every sentence earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters and no output schema, the description is minimal. It does not explain return values, how to use each action (e.g., 'validate' marks success), the structure of reflections, or provide examples. Given the tool's complexity, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional parameter context beyond the schema; it only summarizes the actions. No extra semantic meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates, gets, or lists task-failure reflection artifacts, which distinguishes it from other oc_ tools like oc_journal or oc_checkpoint. However, it could be more specific about the 'structured' nature and how it differs from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that reflections are passive recovery guidance only and that OpenChrome never executes nextPlan automatically, providing contextual usage guidance. However, it does not explicitly state when to use this tool versus alternatives, such as when recording failure analysis rather than automatic recovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_run_eventsBRead-onlyIdempotent
Return recent events for an opt-in OpenChrome run ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED Run identifier returned by oc_run_start. | |
| limit | No | Maximum number of events to return. Default 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds 'recent events' but doesn't elaborate on ordering, pagination, or side effects. With strong annotations, the description adds little behavioral context beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded. No fluff, but lacks additional context that could improve usability. Efficient for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and description does not explain the return format or structure of events. For a tool with few parameters and no nested objects, the missing return value documentation is a gap, but annotations cover safety adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both parameters (run_id, limit) are described in the schema with clear meaning. The description adds no extra semantic value. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns recent events for a specific run ledger. The verb 'Return' and resource 'events' are precise. It differentiates from sibling tools like oc_run_status by specifying events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Lacks prerequisites, context, or exclusion criteria. Sibling tools like oc_run_status are not compared, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_run_finishADestructive
Finish an opt-in OpenChrome run ledger with a terminal, needs_user_input, or needs_strategy_change status.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED Run identifier returned by oc_run_start. | |
| status | Yes | REQUIRED Terminal, needs_user_input, or needs_strategy_change run status. | |
| message | No | Optional finish reason. | |
| metadata | No | Optional finish metadata. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Finish' aligns with annotations showing destructiveHint=true. It does not add additional behavioral context beyond what annotations provide, such as side effects or required run state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the essential information without any unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple finish action with no output schema, the description adequately covers the purpose and allowed statuses. It lacks mention of error conditions or prerequisites, but the completeness is high given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are described in the input schema with 100% coverage. The description provides no extra meaning beyond the schema definitions, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (finish), the resource (OpenChrome run ledger), and the allowed statuses. However, it doesn't explicitly differentiate from sibling tools like oc_task_finish, but the resource name is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a run needs to be finished with a specific terminal or ongoing status. It does not mention when not to use it or suggest alternatives like checking run status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_run_startA
Start an opt-in OpenChrome run ledger. Returns {run_id,status,pathless metadata}.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | Optional caller-supplied safe run id. | |
| session_id | No | Optional session id to associate with the run. | |
| tab_id | No | Optional tab id to associate with the run. | |
| metadata | No | Optional JSON metadata. | |
| budget | No | Optional run-level wandering budget. When exceeded, oc_run_status records a needs_strategy_change finish event. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds that it returns '{run_id,status,pathless metadata}', which is useful but does not disclose side effects like whether multiple starts are allowed or if prior runs affect it. Minimal additional value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a return format note, making it very concise. It contains no unnecessary words, but it could be slightly more structured to list the return fields. Still efficient for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool starts a run and has a complex nested 'budget' parameter, the description lacks details on when to set budgets or how they interact with run behavior. No output schema exists, so the return format note helps, but missing context about run lifecycle among siblings (e.g., relationship to oc_run_finish) reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are described in the input schema (100% coverage). The description does not add extra meaning beyond the schema, such as explaining the 'budget' object's impact or providing examples. With high schema coverage, baseline is 3, and the description does not improve it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Start an opt-in OpenChrome run ledger'. It specifies the verb 'Start' and the resource 'OpenChrome run ledger', and distinguishes it from sibling tools like oc_run_finish and oc_run_status that perform other run lifecycle operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when needing to start a run) but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. The context is clear but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_run_statusC
Return the current status and summary for an opt-in OpenChrome run ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED Run identifier returned by oc_run_start. | |
| budget | No | Optional run-level wandering budget. When exceeded, oc_run_status records a needs_strategy_change finish event. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation ('Return'), but annotations indicate it is not read-only (readOnlyHint=false). The tool can trigger a 'needs_strategy_change' finish event when budget is exceeded, which is undisclosed. This side effect should be mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence (14 words) that is front-loaded and contains no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description should explain return values and when to call it (e.g., after oc_run_start). It lacks these details, leaving the agent uncertain about usage and expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond what the schema already provides for both parameters, particularly the budget object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns status and summary for a run ledger, with specific verb and resource. It distinguishes from siblings like oc_run_start, but could be more specific about what 'status and summary' includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as oc_run_events or oc_run_finish. The context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_session_resumeA
Restore working context after context compaction. Reads the last oc_session_snapshot, checks which tabs are still alive, and returns a resume guide with your objective, progress, and tab status. Call this after compaction to continue where you left off.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshotId | No | Specific snapshot ID to restore (default: latest) | |
| taskId | No | Optional TaskRun id. When present, include latest task checkpoint/resume context if available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool reads the last snapshot and checks live tabs, implying a non-destructive read operation. Annotations (readOnlyHint: false, destructiveHint: false) are neutral; the description provides additional context about the behavior without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loading the primary action and then detailing the process and calling action. Every sentence is informative and there is no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema and having minimal annotations, the description explains the output structure (resume guide with objective, progress, tab status) and the conditions for use (after compaction). It provides enough context for an agent to understand when and how to invoke the tool, though more detail on side effects could be added.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions (snapshotId and taskId), achieving 100% coverage. The tool description does not add new information about the parameters beyond summarizing their roles; it only generalizes that it reads the latest snapshot. Thus, the description does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose with a specific verb ('Restore working context after context compaction'), details the process (reads snapshot, checks tabs), and specifies the output (resume guide with objective, progress, tab status). It distinguishes itself from sibling tools like oc_session_snapshot by focusing on restoration rather than capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('Call this after compaction to continue where you left off'). It implies the context of use, but does not explicitly exclude other scenarios or mention alternatives, though the sibling list includes related tools like oc_session_snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_session_snapshotA
Save browser state snapshot for context recovery after compaction. Captures open tabs, worker state, and your task memo. Use before long operations or periodically during multi-step tasks. Restore with oc_session_resume.
| Name | Required | Description | Default |
|---|---|---|---|
| objective | Yes | What you are trying to accomplish | |
| currentStep | Yes | What step you are currently on | |
| nextActions | Yes | Planned next actions | |
| completedSteps | No | Steps already completed | |
| notes | No | Additional context or notes | |
| label | No | Optional label for this snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-destructive mutation. The description adds context about capturing tabs/worker/memo and the compaction use case, going beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste: first states action, second lists captures, third gives usage guidance and restore reference. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, captures, and usage well. However, it omits mention of return value (e.g., snapshot ID) and the label parameter's purpose, leaving minor gaps for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully describes parameters. The description's mention of 'task memo' loosely maps to the 'notes' parameter but adds no new semantic detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a browser state snapshot for context recovery, specifying what it captures (open tabs, worker state, task memo) and the restore counterpart (oc_session_resume). This distinguishes it from siblings like oc_session_resume and other session tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises use 'before long operations or periodically during multi-step tasks' and mentions the companion restore tool, providing clear context. It lacks explicit when-not-to-use guidance but is sufficient for basic decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_skill_exportARead-onlyIdempotent
Export an opt-in codegen replay artifact written by --codegen. Returns the path and byte count for puppeteer, playwright, or mcp-replay output. Default OpenChrome behavior is unchanged when --codegen is off.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | No | Skill id or session id hint. For codegen artifacts this is matched against file names. | |
| session_id | No | Exact MCP session id to export. Defaults to current session. | |
| format | Yes | REQUIRED Export format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value by stating the return format and that default behavior is unchanged when --codegen is off, providing context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no superfluous words. Efficiently communicates purpose, output, and a behavioral note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with high schema coverage and annotations, the description covers purpose, output, and a condition. It could mention prerequisites (e.g., codegen must be running) but is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The description does not add significant new meaning for the parameters, as it focuses on the output. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports an opt-in codegen replay artifact and specifies the output (path and byte count) and formats (puppeteer, playwright, mcp-replay). This distinguishes it from sibling export tools like oc_context_export and oc_recording_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for codegen replay artifacts only, and mentions default behavior unchanged when --codegen is off. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_skill_recallARead-onlyIdempotent
Retrieve skills from the JSON skill memory store for a given domain. Returns a recency-sorted list (last_used_at desc). Optionally filter by contract_id and cap results with limit (default 20). No LLM ranking — deterministic store order is returned as-is unless task/query or ranked is supplied. Each result carries codegenReplay ({available, artifacts}) for the LLM-free replay fast path. Use oc_skill_record to write skills.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to retrieve skills for (e.g. "amazon.com"). Must be a non-empty string ≤ 253 chars and match the domain used at record time. | |
| contract_id | No | Optional. Restrict results to skills whose contract_id matches this value exactly. Omit to return skills across all contracts. | |
| task | No | Optional task text. When present, recall is ranked by deterministic task relevance. | |
| query | No | Optional alias for task. Ignored when task is also provided. | |
| ranked | No | Opt in to deterministic ranked recall. Also enabled when task is provided. | |
| limit | No | Maximum number of skills to return. Default 20. Pass 0 to return an empty list. Values below 0 are treated as 0. | |
| include_unpromoted | No | When true, also surface promotionState=recorded skills. Default false: once a domain has any re_verified/recallable skill, recall hides recorded ones to keep the LLM-free fast path safe. Domains with no promoted skill auto-fallback to v1.x (all non-quarantined surface). (#1431) | |
| include_quarantined | No | When true, also surface promotionState=quarantined skills. Default false; diagnostic only — they failed re-verification and should not be replayed. Independent of the recorded/promoted filter, so on an unpromoted domain (v1.x auto-fallback) it yields recorded + quarantined. (#1431) | |
| use_run_stats | No | Opt in to factor audit-log run statistics (recent-window failure rate) into ranked recall, demoting skills that fail often. Implies ranked recall. Default false (no audit-log I/O when off). When on, does a one-time synchronous audit-log scan per call. (#1457) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds recency-sorted order, codegenReplay fast path, deterministic ranking behavior, and detailed boolean parameter effects (include_unpromoted, include_quarantined, use_run_stats). No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph with each sentence adding value. Could be more structured (e.g., bullet points for parameters), but remains concise and front-loads key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return format, pagination via limit, ranking options, edge cases (limit 0/negative, unpromoted domains, audit-log stats). No output schema, but description compensates with behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
100% schema coverage, description adds constraints (domain length, contract_id exact match), explains interaction between task/query/ranked, limit=0 behavior, and details on boolean parameters (e.g., unpromoted domain fallback). Adds significant value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves skills from a JSON skill memory store for a given domain. Specifies verb 'retrieve' and resource 'skills', and distinguishes from sibling oc_skill_record (write).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on default recency-sorted order, optional filters (contract_id, limit), and ranked recall via task/query or ranked. Mentions alternative oc_skill_record for writing. Could be more explicit about when to use vs other tools, but sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_skill_recordA
Record a skill (domain, name, steps, contract_id) into the JSON skill memory store. Idempotent on (domain, name) — re-recording preserves the existing skill_id and usage counters while updating steps and contract_id. Pass frozen_snapshot to atomically write a gzipped snapshot alongside the record. Returns { skill_id, stored_at, snapshot_path? }. Core-tier; no LLM ranking. Use oc_skill_recall to retrieve skills.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain this skill belongs to (e.g. "amazon.com"). Used as the storage partition key and must be a non-empty string ≤ 253 chars. | |
| name | Yes | Human-readable skill name, unique within the domain (e.g. "add-to-cart"). Acts as the idempotency key together with domain. | |
| steps | Yes | Opaque step list supplied by the host agent. The store persists this inline in the JSON file without schema validation. Each element may be any JSON-serialisable value. | |
| contract_id | Yes | Identifier of the Outcome Contract that governs this skill (ties into oc_assert #784 and the contracts registry). | |
| frozen_snapshot | No | Optional opaque snapshot payload to persist alongside the record. Written exactly once (write-once semantics) under <rootDir>/<domain>/snapshots/<skill_id>.json.gz. Omit on re-records when you do not want to update the snapshot. | |
| replay_artifacts | No | Optional replay artifacts (selector-chain step recordings) to persist alongside the skill. Each artifact must conform to the ReplayArtifact schema. Ignored when OPENCHROME_SKILL_REPLAY is not enabled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims idempotency ('Idempotent on (domain, name)'), but the annotations set idempotentHint to false, creating a direct contradiction. Additionally, while it mentions atomic snapshot write and preservation of counters, it lacks details on authentication, error behavior, or side effects beyond the idempotency claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the core purpose, the second clarifies idempotency and directs to the sibling tool. No redundant information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering the 6 parameters (100% schema coverage) and no output schema, the description covers return values (skill_id, stored_at, snapshot_path?), idempotency behavior, and references the sibling tool. However, it does not mention the 'replay_artifacts' parameter or elaborate on 'Core-tier; no LLM ranking', leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining that (domain, name) form an idempotency key preserving skill_id and usage counters, and by describing the atomic write behavior for frozen_snapshot. This contextual information helps the agent understand parameter interplay.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records a skill into a JSON skill memory store, lists the key fields (domain, name, steps, contract_id), and explicitly distinguishes itself from the sibling tool oc_skill_recall by directing users to use that for retrieval. The verb 'Record' and resource 'skill' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool (recording skills) and mentions idempotency on (domain, name), implying re-recording is allowed. It explicitly points to oc_skill_recall for retrieval, providing a clear alternative. However, it does not state when NOT to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_stopADestructive
Shut down OpenChrome and close Chrome. Auto-relaunched on next tool call.
| Name | Required | Description | Default |
|---|---|---|---|
| keepChrome | No | Keep Chrome running, just disconnect. Default: false in standalone mode, true when running in broker owner mode so shared clients are not impacted. | |
| dryRun | No | Preview sessions/tabs and managed Chrome resources that oc_stop would shut down without mutating runtime state. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint=true, but the description adds the key behavior 'Auto-relaunched on next tool call,' which is not captured in annotations. This is valuable context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and contains no fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple shutdown tool with no output schema, the description covers the main action and auto-relaunch but lacks details on side effects, prerequisites, or how parameters affect behavior (though schema covers those).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters. The tool description does not add any extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Shut down OpenChrome and close Chrome,' using a specific verb and resource. It distinguishes itself from siblings by noting auto-relaunch, which is unique among the many oc_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description does not mention criteria like 'use when you need to completely stop the browser' or exclude scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_cancelADestructive
Request cancellation of a background task. Best-effort: the runner aborts the underlying tool at the next work-unit boundary. Terminal tasks are unaffected. PENDING tasks transition straight to CANCELLED.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | REQUIRED task_id returned by oc_task_start. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the cancellation mechanism (best-effort, work-unit boundary), effects on PENDING vs terminal tasks, and transitions. This goes beyond annotations (destructiveHint: true) and provides full behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each valuable, front-loaded with purpose. No wasted words. Concisely covers purpose, behavior, and edge cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description is complete: it explains the action, behavior, limitations, and state transitions. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes task_id as 'REQUIRED task_id returned by oc_task_start' (100% coverage). The description adds no further parameter semantics beyond confirming it from start. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it requests cancellation of a background task, specifies the best-effort behavior, and explains effects on different task states (terminal unaffected, PENDING to CANCELLED). This distinguishes it from sibling tools like oc_task_start or oc_task_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implicit guidance: use when you need to cancel a task, noting it is best-effort and does not affect terminal tasks. It does not explicitly mention when not to use or alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_finishB
Finish a host-driven task envelope as completed, failed, or cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | ||
| taskId | No | Alias for task_id. | |
| outcome | Yes | REQUIRED Terminal task outcome: completed, failed, or cancelled. | |
| note | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action and outcomes. It does not disclose permissions, irreversibility, or side effects of finishing a task envelope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the essential purpose without extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameter count and lack of output schema, the description is too minimal. It does not specify behavior upon finishing, how outcomes affect the task, or proper usage of parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 50% schema coverage, the description adds no additional meaning beyond the schema. The parameters `task_id` and `note` lack descriptions, and the relationship between `task_id` and `taskId` is not clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Finish'), the object ('host-driven task envelope'), and the possible outcomes ('completed, failed, or cancelled'). It effectively distinguishes from sibling tools like oc_task_start or oc_task_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it is used to finish a task, but does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_getARead-onlyIdempotent
Fetch a single task by task_id. By default returns meta only; pass include_result=true to also resolve the persisted result payload.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | task_id returned by oc_task_start. | |
| taskId | No | Alias for task_id. | |
| include_result | No | When true, also returns the persisted result.json contents. | |
| includeDigest | No | When true, also returns a deterministic bounded task evidence digest. | |
| include_digest | No | Alias for includeDigest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, so the description does not need to reiterate safety. It adds valuable behavioral detail about default return (meta only) and the effect of include_result, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no wasted words. It front-loads the core purpose ('Fetch a single task by task_id') and adds the optional behavior in the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the return value structure (e.g., what 'meta only' includes). Given the absence of an output schema, this is a notable gap for a tool with many sibling tools. However, the essential behavior is covered, and annotations provide safety context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds extra meaning: task_id is from oc_task_start, and include_result returns persisted result.json. This enhances understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a single task by task_id, and specifies the default behavior (meta only) with an optional flag to get the full result. This directly distinguishes it from sibling tools like oc_task_list which lists tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use include_result (to get the persisted result payload). However, it does not explicitly differentiate from related sibling tools like oc_task_run_get or oc_task_start, though the purpose is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_listARead-onlyIdempotent
List background tasks in the ledger. Default limit=50, sorted by created_at descending. Supports status/kind/since/limit filters.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| kind | No | ||
| since | No | Only tasks created at or after this ms epoch. | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds context about default limit, sorting, and available filters, going beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no unnecessary words. Front-loaded with purpose, followed by key defaults and filter options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not mention the return format or pagination behavior beyond the default limit. For a list tool, more details on the response structure would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'since' has a description). The description lists the parameter names but does not explain valid values for 'status' or 'kind' or provide details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'background tasks in the ledger'. It also specifies default limit and sorting, distinguishing it from sibling tools like oc_task_get or oc_task_run_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing tasks with filters, but does not explicitly state when to use this tool versus alternatives or provide when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_run_checkpointB
Write a compact caller-provided checkpoint summary for a non-terminal TaskRun and return the checkpoint metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED TaskRun id returned by oc_task_run_start. | |
| summary | Yes | REQUIRED Caller-provided summary, redacted and capped at 8 KiB. | |
| current_cursor | No | ||
| evidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false. The description adds minimal behavioral context beyond stating it writes a summary and returns metadata. It does not explain consequences of calling on a terminal run, whether it can be called multiple times (non-idempotent), or what triggers side effects like redaction or capping of the summary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that efficiently conveys the core action and resource. Every word adds value; there is no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite moderate parameter count and no output schema, the description omits key context such as the format or fields of the returned metadata, the behavior when called repeatedly, and the meaning of optional parameters. An agent would need to infer or experiment to understand the full contract of this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the description does not add meaning for the two optional parameters (current_cursor, evidence). The schema itself provides descriptions for run_id, summary, and the evidence structure, but the description only reinforces the summary parameter. The agent lacks guidance on how to use current_cursor and when to supply evidence, reducing autonomous invocation accuracy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Write') and resource ('checkpoint summary for a non-terminal TaskRun') and clearly indicates the return value ('checkpoint metadata'). It distinguishes this tool from sibling checkpoint-related tools like oc_checkpoint or oc_task_run_complete by specifying the non-terminal state requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'non-terminal TaskRun' which implies when to use it, but it does not explicitly state when not to use it or provide alternatives. For example, it doesn't clarify when oc_checkpoint or oc_task_run_update would be more appropriate, leaving the agent to infer usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_run_completeBDestructive
Enter a terminal TaskRun state (COMPLETED, FAILED, or CANCELLED). Terminal TaskRuns are immutable.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED TaskRun id returned by oc_task_run_start. | |
| status | No | Defaults to COMPLETED. | |
| progress_summary | No | ||
| completed_items | No | ||
| failed_items | No | ||
| last_evidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint=true, and the description adds the key behavioral trait 'Terminal TaskRuns are immutable.' However, it does not disclose other effects, failure modes, or confirmation requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) with no wasted words. The first sentence delivers the core purpose, and the second adds an important behavioral note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, nested objects like failed_items) and the absence of an output schema, the description is too brief. It does not explain what happens upon success/failure or how to use optional parameters effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description adds no additional meaning for the six parameters. Parameters like progress_summary and failed_items remain unexplained beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Enter a terminal TaskRun state' and lists the possible states (COMPLETED, FAILED, CANCELLED). It distinguishes the tool from siblings like oc_task_run_update by implying finality, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like oc_task_run_update or oc_task_run_checkpoint. No mention of prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_run_getARead-onlyIdempotent
Read a TaskRun meta record and optionally its event log.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED TaskRun id returned by oc_task_run_start. | |
| include_events | No | When true, include events.jsonl entries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the optional inclusion of event log, which is helpful but does not disclose any additional behavioral traits like rate limits or error handling. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence (11 words) that is front-loaded with the core action. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two parameters and no output schema. The description covers the basic operation but lacks return value details. Given low complexity, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters well-described. The description's mention of 'optionally its event log' aligns with the include_events parameter, but adds no new meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'TaskRun meta record', and notes the optional inclusion of event log. This distinguishes it from sibling tools like oc_task_run_list or oc_task_run_start.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides basic usage but does not explicitly mention when to use this tool versus alternatives like oc_task_run_list or oc_task_get. No guidance on when not to use it or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_run_listBRead-onlyIdempotent
List recent TaskRuns sorted by created_at descending. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| limit | No | Default 50, max 200. | |
| since | No | Unix ms lower bound for created_at. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds 'Read-only' which confirms but does not add new behavioral context. With rich annotations, the bar is lower; the description provides minimal additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, one sentence plus 'Read-only', with no wasted words. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with optional parameters and no output schema, the description is adequate but lacks details about the result format, fields returned, or pagination behavior. It covers the basics but leaves room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 2 of 3 parameters with descriptions (limit and since). The description does not add any extra meaning beyond the schema. The status enum lacks description but is covered by the enum values themselves. No additional parameter details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists recent TaskRuns sorted by created_at descending, indicating a specific verb and resource. However, it does not explicitly differentiate from sibling tools like oc_task_list or oc_task_run_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any exclusions or context notes. The description is purely functional without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_run_needs_helpA
Move a non-terminal TaskRun to NEEDS_HELP with a secret-safe reason, optional resume hint, cursor, and evidence pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED TaskRun id returned by oc_task_run_start. | |
| reason | Yes | REQUIRED Secret-safe reason this TaskRun needs user help. | |
| resume_hint | No | ||
| current_cursor | No | ||
| last_evidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: 'non-terminal' constraint and 'secret-safe reason'. Annotations are silent on state changes; description reveals mutation (move to NEEDS_HELP). No contradiction, but no details on reversibility or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single 20-word sentence, front-loaded with action and target. No unnecessary words; every piece of information adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers overall purpose and parameter list, but lacks details on return values (no output schema), prerequisites (e.g., how to obtain run_id), and consequences of state change. Leaves some questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 40%; description mentions all 5 params briefly ('secret-safe reason', 'optional resume hint, cursor, and evidence pointer'). Adds meaning beyond schema for 'reason' but leaves 'cursor' and 'hint' vague. Partially compensates for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Move', specific resource 'non-terminal TaskRun', target state 'NEEDS_HELP', and lists parameters. Distinguishes from siblings like oc_task_run_complete by specifying the state transition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when a task requires human help, but lacks explicit when-to-use or alternatives. Among many task-run tools, no guidance on when this is preferred over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_run_startA
Start an opt-in goal-level TaskRun. Tracks user goal, success criteria, progress summary, item progress, and evidence across multiple OpenChrome tool calls without changing existing browser tools.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | REQUIRED User-level goal to track, redacted and capped at 4 KiB. | |
| success_criteria | No | Optional concrete success criteria. | |
| session_id | No | Optional OpenChrome session id to associate. | |
| workflow_id | No | Optional workflow id to associate. | |
| ledger_task_ids | No | Optional #855 async ledger task ids to link when available. | |
| auto_session_snapshot | No | Optional #1013 policy. When enabled, TaskRun lifecycle tools write compact oc_session_snapshot artifacts without changing ordinary browser tools. | |
| page_url | No | Optional current page URL. When pilot + skill-curator + OPENCHROME_AUTO_RECALL=1 are all enabled, the start response includes a `recalled_skills` field with up to 5 promoted curator skills for this URL's host — the host LLM uses them as priors for the goal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds that the tool does not change existing browser tools and tracks progress across calls. It provides behavioral context beyond annotations but does not detail prerequisites or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the tool's core purpose without unnecessary words. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about return values or side effects, which is critical for a start tool. No output schema exists, so the description should explain what the tool returns (e.g., task_run_id). This omission makes it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond what the schema already provides, maintaining the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts an opt-in goal-level TaskRun, tracks user goal, success criteria, progress, and evidence. It distinguishes from sibling tools by specifying it is goal-level and does not change existing browser tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for tracking user goals across multiple tool calls, but does not explicitly guide when to use this tool versus alternatives like oc_task_start or oc_run_start. No exclusions or when-not-to-use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_run_updateA
Update a non-terminal TaskRun with progress, item results, cursor, evidence, or explicit NEEDS_HELP resume back to RUNNING. Existing browser tools are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | REQUIRED TaskRun id returned by oc_task_run_start. | |
| status | No | Only RUNNING is accepted. Use oc_task_run_needs_help / oc_task_run_complete for other transitions. | |
| resume_reason | No | Required when resuming from NEEDS_HELP to RUNNING. | |
| progress_summary | No | ||
| completed_items | No | ||
| failed_items | No | ||
| current_cursor | No | ||
| last_evidence | No | ||
| ledger_task_ids | No | ||
| workflow_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the tool updates a non-terminal TaskRun and that existing browser tools are unaffected, which adds useful behavioral context. However, it does not disclose authentication requirements, rate limits, or potential side effects beyond the update. With no annotations providing safety hints (all false), the description partially fills the transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a clear front-loaded purpose statement followed by a behavioral note. Every word contributes meaning without redundancy. It is appropriately sized for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 10 parameters and no output schema, the description is too brief. It does not explain the return value structure nor detail complex parameters like last_evidence (which includes nested objects) or the relationship between parameters like status and resume_reason. The schema provides some descriptions, but 30% coverage leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps several parameters to conceptual actions (e.g., 'progress' to progress_summary, 'item results' to completed_items/failed_items). However, with only 30% schema parameter coverage, the description should clarify all parameters, but it omits ledger_task_ids and workflow_id. The mapping adds value but is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update', identifies the resource as 'non-terminal TaskRun', and lists specific elements that can be updated (progress, item results, cursor, evidence, NEEDS_HELP resume). It also distinguishes from sibling tools by noting that browser tools are unaffected, implying this tool is for task-run state updates only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description itself does not explicitly state when to use this tool versus alternatives like oc_task_run_needs_help or oc_task_run_complete. However, the input schema for the 'status' parameter provides guidance by restricting allowed values and directing to other tools for non-RUNNING transitions. This indirect guidance is moderately helpful but not front-loaded in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_startA
Create a task-level browser harness envelope, or launch a long-running tool as a background task. Returns a task_id that can be polled with oc_task_get / oc_task_list / oc_task_wait, or aborted with oc_task_cancel. The result is persisted to disk and survives MCP-session loss.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Optional name of the underlying MCP tool to run in the background. Omit kind to create a task envelope for host-driven browser tool calls. | |
| args | No | Arguments forwarded to the underlying tool when kind is set. | |
| objective | No | Host-declared objective for task-level browser harness tracking. | |
| phase | No | Initial host-declared task phase. Default: explore. | |
| policy | No | Deterministic budget policy: maxToolCalls, maxObservationStreak, maxConsecutiveSameTool, maxFailureStreak, maxSameUrlNavigations, maxWallMs, allowedDomains, checkpointEveryCalls. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: it returns a task_id, the result is persisted to disk, and it survives MCP-session loss. These add context beyond the annotations (which only have false hints). No contradiction with annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) and front-loaded with the primary action. Every sentence provides essential information about purpose, return value, and durability, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema, minimal annotations), the description covers the two use cases and the return value. It could be enhanced by explaining the task lifecycle or error handling, but it is sufficiently complete for an agent to understand its basic functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the input schema already describes all 5 parameters, the description adds meaningful context for the 'kind' parameter by explaining the effect of omitting it ('creates a task envelope for host-driven browser tool calls'). This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's two purposes: creating a task-level browser harness envelope or launching a long-running tool as a background task. It uses specific verbs ('Create', 'launch') and resource ('task-level browser harness envelope', 'background task'), and distinguishes from sibling oc_task_* tools by explaining the polling/cancellation workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (for background tasks or host-driven browser tool calls) and mentions related polling tools (oc_task_get, oc_task_list, oc_task_wait, oc_task_cancel). However, it does not explicitly state when not to use it or provide alternatives for synchronous execution, leaving a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_updateB
Update a task envelope phase or note. Does not execute browser actions.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | ||
| taskId | No | Alias for task_id. | |
| phase | No | ||
| note | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description discloses that it does not execute browser actions, indicating a non-destructive metadata update, but lacks info on side effects, permissions, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with action, followed by important exclusion. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low schema coverage, the description is minimal. It does not clarify that all parameters are optional or describe return values, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%; description mentions 'phase or note' but does not explain the alias relationship between task_id and taskId, nor the enum values for phase. Fails to compensate for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates a task envelope phase or note, and explicitly distinguishes from browser actions. However, 'task envelope' is not further defined, which could cause ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for updating task metadata without browser execution, but does not explicitly state when to use vs. alternatives like oc_task_get or oc_task_run_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_task_waitARead-onlyIdempotent
Block until the task reaches a terminal state (COMPLETED / FAILED / CANCELLED) or timeout_ms elapses. Default timeout_ms is 60000.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | REQUIRED task_id returned by oc_task_start. | |
| timeout_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds 'block' behavior beyond annotations (readOnlyHint=true, idempotentHint=true). Describes timeout behavior. No contradictions; annotations are consistent with a read-only wait operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence, front-loaded with purpose and states default. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior and timeout. No output schema, so return value is implicit. Annotations provide safety context. Could mention return value, but adequate for a simple blocking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 50% description coverage; task_id is described, timeout_ms is not. Description adds default timeout value but not min/max constraints or usage tips. Provides some added value but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it blocks until a task reaches terminal state or timeout. Verb 'block' and resource 'task' are specific. Distinguishes from siblings like oc_task_get (non-blocking status check).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when waiting for task completion. Mentions default timeout. No explicit exclusions or alternatives, but sibling tools (e.g., oc_task_get) exist for non-blocking checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_totp_generateA
Generate a current TOTP 2FA code for a domain. Requires TOTP secret to be configured.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to generate TOTP code for (e.g., "github.com") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, etc. The description adds the requirement for a pre-configured secret but no other behavioral traits like error conditions or rate limits. Since annotations are not contradicted, but the description adds little beyond stating a prerequisite, scoring is low.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action, and contains no unnecessary words. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema, no nested objects), the description adequately covers purpose and prerequisite. It could mention what happens if the secret is not configured, but overall it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% description coverage for the single parameter (domain), including an example. The description does not add any additional meaning beyond what the schema provides, so baseline score 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (generate), resource (TOTP 2FA code), and context (for a domain). There is no overlap with sibling tools, as TOTP generation is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (TOTP secret configured) but does not specify when to use this tool vs alternatives or when not to use it. Usage guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oc_vitalsARead-onlyIdempotent
Collect a read-only Web Vitals snapshot from the current page without adding page scripts or package dependencies. Returns LCP, CLS, INP, TTFB, and FCP with Core Web Vitals ratings where browser timing entries are available.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | REQUIRED Tab ID to collect Web Vitals from. | |
| timeoutMs | No | Maximum collection time in ms. Default 5000, min 100, max 30000. |
Output Schema
| Name | Required | Description |
|---|---|---|
| action | Yes | |
| tabId | Yes | |
| vitals | Yes | |
| source | Yes | |
| noDependency | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. The description adds that it requires no page scripts or package dependencies and returns specific metrics with Core Web Vitals ratings. This adds some context beyond annotations but does not significantly expand behavioral disclosure (e.g., effects on page state or limitations).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Purpose is front-loaded, and key details (metrics, no dependencies) are included. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (documenting return values) and comprehensive annotations, the description is nearly complete. It lists returned metrics and Core Web Vitals ratings. Missing context might include whether the snapshot is from a specific tab (tabId) or current state, but that is implied by the parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (tabId and timeoutMs have descriptions). The description does not add substantial meaning beyond schema – it mentions 'current page' but tabId is already clear. Slight additional context about Core Web Vitals ratings, but baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool collects a read-only Web Vitals snapshot and lists specific metrics (LCP, CLS, INP, TTFB, FCP). The verb 'Collect' and resource 'Web Vitals snapshot' are specific. However, it does not explicitly differentiate from sibling tools like performance_metrics, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is safe and lightweight (read-only, no scripts/dependencies) but provides no explicit guidance on when to use this tool versus alternatives. No when-not-to-use or comparison with other tools (e.g., performance_metrics, oc_observe) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_contentBRead-onlyIdempotent
Get HTML content from page or element.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to get content from | |
| selector | No | CSS selector. Omit for full page | |
| outerHTML | No | Return outerHTML vs innerHTML. Default: true | |
| boundaryMarkers | No | Wrap page-origin content in <oc:page>. Default true; false disables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no behavioral context beyond 'Get HTML content', missing details like return format, handling of selectors, or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with one clear sentence, no redundancy, and front-loaded purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While schema covers parameters, the description omits return value semantics and integration hints. For a simple tool with no output schema, some context about what HTML is returned (full page vs element) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well described in the schema. The description adds no additional meaning beyond the schema, maintaining a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves HTML content from a page or element, which is a specific verb+resource. It distinguishes from siblings like 'read_page' which may focus on other aspects, but could be more explicit about its unique value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'read_page', 'query_dom', or 'inspect'. The description simply states the function without context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_pdfB
Generate PDF from page. Saves to path or returns base64.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to generate PDF from | |
| path | No | Save path. Omit for base64 | |
| format | No | Paper format. Default: A4 | |
| landscape | No | Landscape mode. Default: false | |
| printBackground | No | Print backgrounds. Default: true | |
| scale | No | Render scale (0.1-2.0). Default: 1 | |
| marginTop | No | Top margin, e.g. "1cm" | |
| marginRight | No | Right margin, e.g. "1cm" | |
| marginBottom | No | Bottom margin, e.g. "1cm" | |
| marginLeft | No | Left margin, e.g. "1cm" | |
| pageRanges | No | Page ranges, e.g. "1-5, 8, 11-13" | |
| displayHeaderFooter | No | Show header/footer. Default: false | |
| headerTemplate | No | Header HTML template (needs displayHeaderFooter) | |
| footerTemplate | No | Footer HTML template (needs displayHeaderFooter) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide minimal behavioral clues (all false). The description adds that the tool generates a PDF and can save to filesystem or return base64, but does not disclose potential side effects, permissions needed, or performance implications beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 9 words, yet communicates the core purpose and two output options. Every word is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count (14) and lack of output schema or annotations, the description is minimal. It covers the fundamental behavior but omits context about default parameter values, page ranges, or format settings that are only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add new parameter information beyond what the schema already provides, but it does reinforce the path omission for base64 output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a PDF from a page and specifies two output options: save to path or return base64. It uses a specific verb and resource, and is distinct from sibling tools like page_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as page_screenshot or network_capture. The description does not include context for when PDF output is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_reloadB
Reload the current page.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to reload | |
| ignoreCache | No | Bypass cache (hard refresh). Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly and non-destructive behavior, but the description adds no further behavioral context. It does not disclose that reloading causes network requests, may lose unsaved form data, or that the page will be re-rendered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence, five words) and front-loaded. It is efficient, though marginally under-specified for a complete definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description is mostly adequate. However, it omits any mention of return behavior or side effects, such as the page being reloaded and event sequences triggered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (tabId and ignoreCache). The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Reload the current page' clearly states the action with a specific verb and resource. It distinguishes itself from sibling tools like 'navigate' (which changes the URL) and 'interact' (which performs actions within the page).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'wait_for' or 'navigate'. No prerequisites or conditions (e.g., page must be fully loaded) are mentioned, and there is no indication of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_screenshotA
Save page screenshot to file or return as base64. Supports full-page capture, region clipping, and multiple image formats.
When to use: Capturing a screenshot for saving to disk or when the full-page or clipped region is needed. When NOT to use: Use computer(action:"screenshot") for an inline viewport screenshot during interaction.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to capture | |
| path | No | Save path. Omit for base64 return | |
| fullPage | No | Capture entire scrollable page. Default: false | |
| format | No | Image format. Default: png | |
| quality | No | Compression quality 0-100, for jpeg/webp only. Default: 80 | |
| clip | No | Capture specific region | |
| omitBackground | No | Transparent background (png only). Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so no contradiction. The description adds that the tool can output to file or base64, but does not elaborate on side effects (e.g., file overwriting, error handling) or the exact return value when saving to file. It repeats some parameter details already in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with three short sentences. The main purpose is front-loaded, followed by usage guidelines. No redundant words or sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, nested object) and no output schema, the description covers the core functionality well. However, it lacks details about the return value when saving to disk (e.g., file path?) and error scenarios. This is a minor gap for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds limited extra meaning. It clarifies the dual output mode via the 'path' parameter (save vs. base64) and mentions defaults (format PNG, quality 80), but these are already in the schema. The nested 'clip' object is noted but not explained beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a page screenshot to file or returns as base64, and lists key features like full-page capture, region clipping, and multiple image formats. It distinguishes from sibling tool 'computer(action:"screenshot")' by specifying when not to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'When NOT to use' sections provide direct guidance, including a specific alternative (computer action) for inline viewport screenshots. This helps the agent select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_metricsCRead-onlyIdempotent
Get page performance metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to get metrics from | |
| type | No | Metrics type. Default: all | |
| includeResources | No | Include resource timing entries |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds no behavioral details beyond annotations (readOnlyHint, idempotentHint). Does not disclose constraints like tabId requirement or that metrics are page-specific.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted content. Could be slightly more informative, but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 parameters, no output schema, and many sibling tools, the description is too sparse. Does not explain output or when to use over similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameters are well-documented in schema. Description adds no additional meaning beyond the schema, baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get page performance metrics' – clear verb and resource. However, it does not differentiate from sibling tools like oc_performance_analyze or oc_performance_insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No when-to-use or when-not-to-use context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_domARead-onlyIdempotent
Query DOM elements via CSS selector or XPath. Returns tag, attributes, text, position. CSS results include a ref field for use in subsequent calls.
When to use: Precise element lookup by CSS selector or XPath when you know the exact selector. When NOT to use: Use find for natural-language element search or read_page for full DOM structure.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to query | |
| method | Yes | Query method: css or xpath | |
| selector | No | (css) CSS selector | |
| xpath | No | (xpath) XPath expression | |
| multiple | No | Return all matches. Default: false | |
| pierceShadow | No | Search inside shadow DOM when no results in light DOM. Default: true | |
| limit | No | (multiple) Max results per page. Defaults to 50 for CSS/XPath. | |
| cursor | No | Opaque pagination cursor returned as nextCursor from a prior query_dom multiple-result call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds context about ref field for chaining and implies pagination via cursor/limit, consistent with annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first defines functionality, second lists return values, third provides usage guidance. Every sentence is essential and well-placed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters with full schema coverage and annotations, the description adds usage context and output details (ref field). Could mention pagination behavior more explicitly, but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions for each parameter. The description adds minimal extra semantics beyond what the schema provides (e.g., ref field mention but not a parameter). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries DOM elements via CSS selector or XPath, returns specific data (tag, attributes, text, position), and notes a ref field. This distinguishes it from siblings like find and read_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (precise element lookup by exact selector) and when NOT to use (use find for natural-language or read_page for full DOM). Provides clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_pageARead-onlyIdempotent
Get page as DOM, accessibility tree (ax), CSS diagnostics, semantic summary, or clean Markdown (article-shaped).
When to use: Reading page structure, verifying content, extracting the full DOM tree, or reducing article-like pages to Markdown. When NOT to use: Use inspect for targeted state queries or find to locate a specific element.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Tab ID to read from | |
| taskId | No | Task id when using a task-scoped browser lane. | |
| laneId | No | Task-scoped browser lane id; validates tabId or defaults to the lane current target. | |
| depth | No | Max tree depth. Default: 8 (all), 5 (interactive) | |
| filter | No | Filter: interactive for form/button/link only | |
| ref_id | No | Parent ref for subtree scoping | |
| selector | No | CSS selector (css mode only) | |
| mode | No | Output mode: dom (default), ax, css, semantic, or markdown (clean article extraction). | |
| onlyMainContent | No | Markdown mode only: strip nav/header/footer/aside/ads. Default: true. | |
| includeLinks | No | Markdown mode only: preserve <a> as markdown links. Default: true. | |
| contentFilter | No | Markdown mode only: deterministic fit_markdown filter. Default: none. | |
| query | No | Markdown mode only: required when contentFilter="bm25". | |
| returnRaw | No | Markdown mode only: include raw_markdown in JSON response. Default: false. | |
| returnFit | No | Markdown mode only: include fit_markdown and use it as content when filtering. Default: true when filtered. | |
| filterOptions | No | Markdown mode only: minWords, maxSections, bm25Threshold, pruneThreshold. | |
| includePagination | No | Include pagination info. Default: true | |
| cursor | No | Markdown mode only: opaque cursor returned as nextCursor from a prior paginated read_page markdown call. | |
| compression | No | Compression mode. "delta" returns only changes since last read. | |
| planningProfile | No | DOM mode only: stable omits decorative/noisy serialization details without mutating the live page. Default: default. | |
| fallback | No | AX mode only: use "dom" to explicitly fall back to DOM output if AX output exceeds the output budget. Default: none. | |
| compact | No | AX mode only: return a compact AX snapshot that keeps actionable/ref-bearing nodes, value/state nodes, and ancestors. Default: false, or true when OPENCHROME_PROFILE=fast. | |
| diagnostics | No | Include structured read_page timing diagnostics in the MCP result metadata. Default: false. | |
| include_metrics | No | When true, include approximate returned size/token metrics in the emitted payload. Default: false. | |
| boundaryMarkers | No | Wrap page-origin plaintext in <oc:page>. Default true; false disables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds context about output modes, compression, fallback, and planning profiles, but doesn't reveal significant behavioral traits beyond what annotations imply. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with purpose, followed by concise usage guidelines. Slightly longer due to multiple modes, but well-structured and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (24 params, no output schema), the description provides sufficient context for agent decision-making, covering usage, alternatives, and key behaviors. Minor gaps like return structure could be inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 24 parameters are fully described in the schema (100% coverage), so the description adds minimal extra meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves page content in multiple formats (DOM, AX, CSS, semantic, markdown) and explicitly distinguishes from sibling tools inspect and find in the 'When NOT to use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' and 'When NOT to use' sections, naming alternatives and scenarios, which is ideal for guiding an agent's decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_interceptADestructive
Intercept network requests (log, block, modify). preset="optimize-bandwidth" blocks Image/Media/Font/Stylesheet; preset="optimize-bandwidth-light" blocks Image/Media/Font. User block/allow/modify rules run after presets; explicit allow rules win. OPENCHROME_OPTIMIZE_BANDWIDTH= can auto-apply to new targets.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| action | Yes | Action to perform | |
| preset | No | Bandwidth preset: "optimize-bandwidth" blocks Image/Media/Font/Stylesheet; "optimize-bandwidth-light" blocks Image/Media/Font only. | |
| rule | No | Rule definition (addRule) | |
| ruleId | No | Rule ID (removeRule) | |
| limit | No | Max logs to return (getLogs) | |
| dryRun | No | Preview enable/addRule rule installation without enabling interception, installing listeners, or mutating rules. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and non-read-only behavior. The description adds that user rules run after presets and allow rules win, but does not elaborate on side effects like destroyed state or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, covering key points in one paragraph. No unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested objects, multiple actions), the description covers main aspects: presets, rule order, auto-apply. No output schema, but the description adequately explains what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. The description adds value beyond schema by detailing preset behavior and dryRun effect, which helps understand parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool intercepts network requests for logging, blocking, or modifying. It lists presets and their effects. However, it does not explicitly differentiate from sibling tools like network_capture_full or network_capture_lite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context on when to use presets and auto-apply via environment variable, but lacks explicit guidance on when to use this tool vs alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storageCDestructive
Manage browser localStorage and sessionStorage.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| storageType | Yes | local or session storage | |
| action | Yes | Action to perform | |
| key | No | Storage key | |
| value | No | Value to store (string) | |
| dryRun | No | Preview-only mode for destructive actions (remove, clear). When true, returns counts and a sample of keys that would be deleted without mutating any state. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true and readOnlyHint: false. The description adds no extra behavioral context (e.g., that actions like remove/clear are destructive) but does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise, but it lacks important details such as the supported actions and the dryRun parameter. It is adequately front-loaded but insufficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, destructive actions, and no output schema, the description is too thin. It omits critical details like available actions and preview modes, making it incomplete for effective tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and every parameter has a description in the schema. The description itself provides no additional parameter insight, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manage browser localStorage and sessionStorage,' which communicates the domain but does not enumerate the specific actions (get, set, remove, clear, keys) that the tool supports. This vagueness reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus sibling tools like cookies, memory, or network. The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tabs_closeADestructive
Close one or more tabs by tabId, tabIds, or workerId.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Specific tab ID to close | |
| tabIds | No | Tab IDs to batch close | |
| workerId | No | Close all tabs in this worker (worker preserved) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description adds only minor context. The schema mentions 'worker preserved' for workerId, but this is not highlighted in the main description. No additional behavioral traits (e.g., reversibility, confirmation) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core functionality. However, it could be slightly more informative (e.g., mentioning worker preservation) without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with no output schema, the description covers the basic purpose but omits details like return type or side effects. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description merely summarizes the parameters without adding new meaning or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (close) and resource (tabs), and specifies the targeting options (tabId, tabIds, workerId). This effectively distinguishes it from sibling tools like tabs_context (get info) and tabs_create (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for closing tabs but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. The nuance about worker preservation is only in the schema, not the main description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tabs_contextARead-onlyIdempotent
Get session tab IDs grouped by worker.
| Name | Required | Description | Default |
|---|---|---|---|
| workerId | No | Filter to a specific worker | |
| summary | No | Return counts only, no tab details |
Output Schema
| Name | Required | Description |
|---|---|---|
| sessionId | Yes | |
| defaultWorkerId | No | |
| workerCount | Yes | |
| tabCount | Yes | |
| workers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description aligns but adds no further behavioral context (e.g., caching, performance implications). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that immediately conveys the tool's function with no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with an output schema, the description is adequate. It covers the core functionality, though it could optionally mention the output format or grouping details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters. The description adds no additional meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get session tab IDs grouped by worker.' clearly states the action (get), the resource (session tab IDs), and the grouping logic. It distinctively contrasts with sibling tools like tabs_close and tabs_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No context about preferred scenarios, prerequisites, or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tabs_createB
Create a new tab with URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to open in the new tab | |
| workerId | No | Worker ID for parallel ops. Default: default | |
| profileDirectory | No | Chrome profile directory name (e.g., "Profile 1"). Use list_profiles to see available profiles. Launches a separate Chrome instance for each profile. If omitted, uses the server default. Cannot be combined with workerId. | |
| recall | No | Override OPENCHROME_AUTO_RECALL for this call. true forces domain skill injection; false suppresses it even when the flag is on. | |
| isolatedContext | No | Optional BrowserContext name (#848). Named contexts share one Chrome process but isolate cookies/storage/cache. Created on first use, reused later. Names match [A-Za-z0-9_-]{1,64}; "default" is reserved. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, not destructive, not idempotent, and not open-world. The description adds no further behavioral context (e.g., whether the new tab gains focus, how it interacts with browser windows, or potential side effects). Given annotations exist, the description adds minimal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous words or repetition. It is front-loaded and perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and no output schema, the description is too minimal. It does not explain key aspects such as what happens after creation (e.g., tab focus, window behavior), how profiles and isolated contexts affect the operation, or any prerequisites. The tool is more complex than the description implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema fully documents all 5 parameters with descriptions. The tool description only adds 'with URL', which restates the required parameter. This meets the baseline expectation but does not enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new tab with URL' clearly states the verb (Create) and resource (new tab), and specifies the required parameter (URL). It distinguishes itself from sibling tools like tabs_close and tabs_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., navigate for changing the current tab, or other tab-related tools). No when-not or alternative context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_agentB
Set or reset browser user agent.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID | |
| preset | No | UA preset | |
| custom | No | Custom UA string (overrides preset) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so mutation is expected. Description adds 'reset' behavior but does not specify persistence, scope (tab or session), or side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no unnecessary words. Concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with full schema coverage, the description is mostly sufficient. Could mention resetting to default UA or interaction between 'preset' and 'custom', but schema already covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. Description adds no extra meaning beyond schema; 'reset' is implied but not explicitly tied to parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set or reset') and the resource ('browser user agent'). It is specific and distinguishes from sibling tools like 'emulate_device' which handle additional device parameters, though not explicitly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives (e.g., 'emulate_device') or when not to use it. No context about prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_pageA
Composite health check: navigate, wait, capture console errors, return structured summary (title, errors, interactive count, body sample).
When to use: Verifying a page renders correctly without errors in a single call instead of chaining navigate + wait_for + console_capture + read_page. When NOT to use: Use navigate + read_page when you need full DOM content, not just a health summary.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to validate. http:// and https:// schemes only. | |
| tabId | No | Reuse an existing tab. Omit to create a new tab. | |
| waitForSelector | No | Optional CSS selector that must appear before the page is considered ready. | |
| captureConsoleMs | No | How long to listen for console errors after navigation completes. Default: 1500, max: 10000. | |
| bodyTextSampleChars | No | How much visible body text to include in the summary. Default: 500, max: 2000. | |
| include_metrics | No | When true, include approximate output size/token metrics for the returned summary and body sample. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: it performs navigation (mutation), waits for a selector, captures console errors, and returns a summary. Annotations are not very informative (openWorldHint=true), but the description adds valuable context beyond them. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence for purpose, two for usage guidance. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions return fields (title, errors, interactive count, body sample). It covers the core use case well. Minor gap: no mention of error handling on navigation failure, but overall sufficient for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 6 parameters. The description does not add significant meaning beyond the schema, but it contextualizes the parameters within the composite action. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a composite health check combining navigation, waiting, console error capture, and returning a structured summary. It distinguishes itself from sibling tools like navigate and read_page by emphasizing its composite nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to use' and 'When NOT to use' guidelines, directing the agent to use this tool for a single-call health check instead of chaining multiple tools, and to use navigate + read_page when full DOM content is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vision_findBRead-onlyIdempotent
Find elements using vision-based screenshot analysis. Returns annotated screenshot with numbered elements.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to analyze | |
| instruction | No | Optional hint about what to look for (for future use) | |
| showGrid | No | Overlay coordinate grid on screenshot. Default: false | |
| showBoundingBoxes | No | Show bounding boxes around elements. Default: true | |
| interactiveOnly | No | Only show interactive elements (buttons, links, inputs). Default: true | |
| format | No | Output format: legacy text+image, provider-neutral snapshot JSON, or both. Default: legacy. | |
| includeImage | No | Include annotated image output. Defaults to true for legacy/both and false for snapshot. | |
| occlusionFilter | No | When true, drops elements whose center is covered by another element via elementFromPoint. Defaults to false to preserve today's output; set to true for stricter accuracy. | |
| iframes | No | Frame traversal mode. "all" still respects same-origin policy; cross-origin frames are listed in iframes.skipped. | none |
| mode | No | viewport: today's single-shot capture. tiled: full document scrolled in viewport-tall steps; returns per-tile screenshots and a unified element map. | viewport |
| recordTrajectory | No | Opt-in visual trajectory artifact capture for this call. Also enabled by OPENCHROME_VISUAL_TRAJECTORY=1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds that it performs 'vision-based screenshot analysis' and returns an annotated screenshot, but does not elaborate on the analysis process or potential side effects (though there are none). It adds some context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, but it is somewhat vague and lacks detail. It could be restructured to front-load key information like the purpose and output, but the brevity is acceptable given the schema richness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, no output schema), the description is too brief. It does not explain the output format, how 'numbered elements' are represented, or how to interpret the results. The annotations cover safety, but the description fails to provide sufficient operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are already well-described in the input schema. The tool description does not add any additional meaning or usage guidance for the parameters, providing no extra value beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find elements using vision-based screenshot analysis,' which specifies the verb (find) and resource (elements). It distinguishes from sibling tools like 'find' (likely DOM-based) by emphasizing 'vision-based.' It also mentions the return of an annotated screenshot with numbered elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings such as 'find', 'element_pick', or 'image_qa'. There is no mention of use cases, prerequisites, or alternatives, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_forARead-onlyIdempotent
Wait for a condition. Strongly prefer 'function', 'selector', or 'url_match' — they return as soon as the condition is true (1 round-trip). Use 'timeout' only as a last resort: it blocks for a fixed duration and returns no information, forcing you to poll with another tool afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to wait on | |
| type | Yes | Condition. PREFER: 'selector' (element appears), 'selector_hidden', 'function' (custom JS predicate, e.g. value="document.querySelectorAll('.error').length>0"), 'url_match', 'navigation'. AVOID 'timeout' — it just sleeps. | |
| value | No | Selector, JS function, URL pattern, or ms | |
| timeout | No | Max wait in ms. Default: 30000 | |
| visible | No | Require visibility (selector). Default: false | |
| pollIntervalMs | No | Function mode only: predicate polling interval in ms for main-frame evaluation. Default 200, min 50, max 5000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavioral traits beyond annotations: certain types return immediately (1 round-trip), timeout blocks and returns no info. This complements annotations (readOnlyHint, idempotentHint) without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, efficient delivery of key usage guidance. No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While coverage is high, the description omits return behavior (e.g., what happens on timeout or failure). With no output schema, this gap reduces completeness. Annotations compensate partially.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add new per-parameter meaning beyond reinforcing preferences already in the type enum descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Wait for a condition', specifying the verb 'wait' and the resource 'condition'. It distinguishes from sibling tools like 'oc_task_wait' by focusing on page-level conditions, and the parameter context reinforces this.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly guides which condition types to prefer ('function', 'selector', 'url_match') and warns against 'timeout' as a last resort, including rationale. This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workerC
Manage workers. Actions: "create" (isolated context), "list" (show all), "delete" (remove and close tabs).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: create, list, or delete | |
| name | No | (create) Worker name | |
| id | No | (create) Custom ID. Auto-generated if omitted | |
| workerId | No | (delete) Worker ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=false, but description states delete action 'removes and closes tabs,' implying destructive behavior. This contradiction scores a 1 per rules. Additionally, description adds 'isolated context' for create, which is useful, but the contradiction invalidates transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with 'Manage workers,' and efficiently lists actions. No wasted words—every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 4 parameters, the description lacks details on return values, prerequisites, or effects of actions (e.g., what list returns). Incomplete for a fairly complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described (action, name, id, workerId). The description adds no new parameter meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages workers with three specific actions (create, list, delete) and provides brief explanations for each. It differentiates from sibling tools like worker_complete and worker_update by focusing on basic CRUD operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as worker_complete or worker_update. The description lacks explicit when/when-not instructions or context for choosing among the actions beyond listing them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worker_completeCDestructive
Mark a worker as complete with final results.
| Name | Required | Description | Default |
|---|---|---|---|
| workerName | Yes | Name of the worker | |
| status | Yes | Final status | |
| resultSummary | Yes | Result summary (max 100 chars) | |
| extractedData | No | Final extracted data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, but the description adds no additional behavioral context (e.g., finality, irreversibility, or if it can be called multiple times). The description carries little extra value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded. It is efficient, though slightly more detail would improve value without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 required parameters, a complex nested object (extractedData), and no output schema, the description is insufficient. It does not explain the worker lifecycle context, what happens after completion, or how results are structured.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already provides clear parameter descriptions. The description does not add extra meaning beyond framing parameters as 'final results'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool marks a worker as complete with final results, distinguishing it from worker_update among siblings. However, it does not specify what 'mark as complete' entails in terms of lifecycle or side effects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like worker_update or when not to use it. There is no indication of prerequisites or postconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worker_updateB
Report worker progress to the orchestration scratchpad.
| Name | Required | Description | Default |
|---|---|---|---|
| workerName | Yes | Name of the worker | |
| status | No | Worker status | |
| iteration | No | Current iteration number | |
| action | No | Action being performed | |
| result | No | Result of the action | |
| extractedData | No | Data extracted so far | |
| error | No | Error message if any |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are provided (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), which set baseline expectations. The description adds that it reports progress, implying a write operation. However, it does not disclose side effects, state dependencies, or concurrency implications beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. Every word contributes meaning: verb, object, target. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters (1 required), no output schema, and no usage context, the description is too minimal. It lacks information about prerequisites, return behavior, or when to call this tool in a workflow. The agent would need to infer much from context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already describes all parameters with descriptions and enums. The description adds no additional parameter-level details. Per calibration, baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Report worker progress' to a specific resource ('orchestration scratchpad'). It uses a specific verb and resource, and it distinguishes from sibling tools like worker (likely start) and worker_complete (likely finish), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Given siblings like worker and worker_complete, explicit context about the progression from worker to worker_update to worker_complete would be helpful. The absence leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_cleanupADestructive
Clean up workflow resources (workers, tabs, scratchpads).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true. The description adds that it targets workers, tabs, and scratchpads, but does not elaborate on the exact effects (e.g., deletion, reset) or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that conveys the essential purpose without extra words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description provides basic resource types but lacks context on the outcome or state changes. It is adequate but could be more informative about the cleanup process.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description adds no parameter details, but none are needed. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('clean up workflow resources') and lists specific resource types (workers, tabs, scratchpads). This distinguishes it from sibling tools like workflow_collect or workflow_init.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use, or compare with similar tools like tabs_close or worker.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_collectARead-onlyIdempotent
Collect and aggregate results from all workers after completion.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds the condition 'after completion' but lacks details on handling of incomplete workers, output format, or side effects. Minimal additional behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb 'Collect'. No wasted words. Highly concise for a parameterless tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain expected return value or behavior. Only states action and timing. Lacks details on result format, behavior with no workers, or error conditions. Incomplete for full understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters. Schema coverage 100% (empty). Baseline 4 for zero parameters. Description does not add parameter info, which is appropriate since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states action (collect and aggregate) on resource (results from all workers) with condition (after completion). Differentiates from sibling workflow_collect_partial by specifying 'all' and 'after completion'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after workers complete, but no explicit guidance on when to use vs alternatives like workflow_status or worker. No exclusions or scenarios described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_collect_partialARead-onlyIdempotent
Collect results from completed workers without waiting for all to finish.
| Name | Required | Description | Default |
|---|---|---|---|
| onlySuccessful | No | Only return successful workers. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds behavioral context: it collects results and does not wait for all workers to complete. This is consistent and adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff. It efficiently conveys the tool's purpose and key behavioral trait (not waiting for all). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and strong annotations, the description is adequately complete. It explains the core behavior, but could benefit from a brief note on the return format. However, sibling tools provide context, making it sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the only parameter ('onlySuccessful') with a clear description. The tool description does not add any additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool collects results from completed workers without waiting for all to finish. It uses a specific verb ('collect') and resource ('completed workers'), and implicitly distinguishes from sibling 'workflow_collect' which likely waits for all.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use this tool ('without waiting for all to finish'), implying it is for partial results. It hints at an alternative (workflow_collect), but does not explicitly state when not to use it or list other alternatives. Still provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_initA
Initialize a workflow with multiple isolated workers for parallel browser ops.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workflow name | |
| workers | Yes | List of workers to create | |
| workerTimeoutMs | No | Per-worker timeout in ms. Default: 60000 | |
| maxStaleIterations | No | Stale update limit before circuit break. Default: 5 | |
| globalTimeoutMs | No | Global workflow timeout in ms. Default: 300000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate openWorldHint=true but no destructiveness. The description adds the behavioral trait 'isolated workers' but does not explain what isolation means, side effects, or what happens if called multiple times. More context on permissions or resource implications would improve.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key action and purpose. No wasted words; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the core purpose, it lacks details about workflow lifecycle, what initialization triggers (e.g., do workers start immediately?), and return value. For a tool with nested arrays and multiple parameters, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add parameter info. The description provides a general statement ('isolated workers'), but the schema already documents all parameters adequately. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Initialize' and the resource 'workflow with multiple isolated workers for parallel browser ops'. It effectively distinguishes from sibling tools like worker_init or workflow_status by emphasizing parallel browser operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like workflowerated tools. It is implied this is the first step in a workflow lifecycle, but no direct guidance or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_statusARead-onlyIdempotent
Get current workflow status and worker states.
| Name | Required | Description | Default |
|---|---|---|---|
| includeWorkerDetails | No | Include worker scratchpad details. Default: false | |
| includeLedger | No | Include compact task drift ledger diagnostics. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, so the description carries a lower burden. However, it adds no context beyond the annotations, such as what 'worker states' includes or the response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy. It is front-loaded and directly states the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and the description doesn't hint at return values or preconditions (e.g., requires an active workflow). For a status tool, more detail on what 'status' includes would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents both parameters. The description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource ('current workflow status and worker states'), which distinguishes it from sibling workflow tools like workflow_cleanup or workflow_collect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, such as oc_run_status or workflow_collect. It does not mention prerequisites, context (e.g., requires an active workflow), or when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The descriptions are detailed with 'When to use' and 'When NOT to use' sections, which greatly aids disambiguation. However, the sheer number of tools (118) means some overlap exists (e.g., multiple interaction tools like interact, act, computer), causing potential confusion despite the guidance.
Most tools follow a consistent verb_noun snake_case pattern (e.g., execute_plan, list_profiles, tabs_close). The 'oc_' prefix groups internal utilities consistently. Minor deviations exist (e.g., 'act' vs 'interact', 'page_content' as noun_verb), but overall the naming is predictable.
With 118 tools, the server is significantly over-scoped for typical browser automation needs. While each tool has a specific use case, many are highly specialized (e.g., oc_totp_generate, oc_diff) and could be consolidated. The count overwhelms users and suggests a lack of focus.
The server covers an exhaustive range of browser automation capabilities: navigation, interaction, crawling, data extraction, performance, recording, task management, workflows, and more. It includes advanced features like context export/import, performance insights, and skill management. Few obvious gaps exist.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.20239MIT
- AlicenseNot gradedqualityCmaintenanceLets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.132MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to fully control Google Chrome: navigate, click, fill forms, inspect DevTools, and manage tabs with parallel execution and session isolation.13MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to fully control a browser for web automation, including navigation, clicking, typing, scrolling, screenshots, and DOM inspection, with session persistence and anti-bot bypass.14MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shaun0927/openchrome'
If you have feedback or need assistance with the MCP directory API, please join our Discord server