RawTrace MCP
RawTrace MCP is a local server that wraps Playwright and Chrome DevTools Protocol to record raw DOM mutation and network event streams while an AI coding agent interacts with a web page — ideal for debugging complex automations where post-click snapshots are insufficient.
Browser Lifecycle & Tab Management
Launch or attach to Chromium/CDP endpoints, manage multiple tabs (list, open, switch, close), and close browser contexts.
Navigation
Navigate to URLs, reload pages, and traverse browser history (back/forward).
Page Observation & Inspection
Get page state (URL, title, frames, viewport), capture screenshots (plain or annotated with bounding boxes), read raw DOM/text, list interactive elements, optimize selectors, inspect accessibility trees, inspect forms, and view recent network summaries.
Browser Actions
Click, type, press keys, hover, scroll, select dropdown options, check/uncheck, fill and submit forms, handle JavaScript dialogs, observe before/after action diffs, and execute arbitrary JavaScript (
browser_eval, requires acknowledgment).
Waiting & Polling
Wait for selectors, URL changes, quiet network periods, specific network responses (including raw bodies), or timeouts. Poll until complex conditions (text, URL, selector state, element value, auth signals) are met.
Raw Trace / Event Recording
Start/stop capture sessions recording DOM mutations, network requests/responses, WebSocket messages, console logs, cookie changes, and frame events.
List sessions, get AI-readable manifests/summaries, read paginated event streams, search events by text/type/URL, search raw request/response body files, read specific trace artifacts, and export full trace bundles as ZIP files.
Credentials & Browser State
Get/set/clear cookies, read/write localStorage and sessionStorage, and export/import full Playwright storage state (cookies, localStorage, IndexedDB).
Files, Downloads & Environment
Upload files to file inputs, wait for and save downloads, list downloads, set viewport size, grant browser permissions, and set geolocation.
Safety Acknowledgment System
Sensitive operations each require explicit per-operation acknowledgment flags (
acknowledgeRawCapture,acknowledgeDangerousEval,acknowledgeCredentialAccess,acknowledgeStorageStateOverwrite,acknowledgeFileAccess,acknowledgePermissionChange,acknowledgeLocationAccess), preventing accidental consent to unintended data access or capture.
Enables debugging of Cypress test failures by capturing raw DOM mutations, network events, and browser state during test execution.
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., "@RawTrace MCPstart monitoring example.com with raw capture"
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.
RawTrace MCP
RawTrace MCP is a local MCP server that wraps Playwright and Chrome DevTools Protocol to record raw DOM mutation and network event streams while an AI coding agent interacts with a web page.
It is designed for building and debugging complex Playwright automations where post-click snapshots are not enough.
Warning
RawTrace MCP records raw browser data by design. It may capture cookies, authorization headers, request bodies, response bodies, tokens, personal information, WebSocket messages, hidden form values, and DOM text. Treat every trace as sensitive. Do not commit traces to GitHub. Use only on systems and accounts you are authorized to inspect.
RawTrace does not silently mask, redact, or omit sensitive fields by default. Every monitor_start call must include:
{
"acknowledgeRawCapture": true
}In an explicitly authorized development or test task, the bundled Skill passes this acknowledgement directly instead of asking again. If the target system, account, or data scope is unclear, confirm authorization before capture. Client approval settings still apply.
Related MCP server: UnderPixel
Requirements
Node.js 22 or newer.
Chromium available to Playwright or an authorized Chromium CDP endpoint.
A client restart, new session, or plugin reload after installation or MCP configuration changes.
Install as a Codex Plugin
The Codex marketplace entry installs the rawtrace-mcp@0.3.0 npm package, including its MCP server and shared browser-debugging Skill:
codex plugin marketplace add ss26367098/rawtrace-mcp
codex plugin add rawtrace-mcp@rawtraceStart a new Codex session after installation. The plugin launches the bundled dist/cli.js with the 35-tool agent profile; it does not depend on npx latest at runtime.
Install as a Claude Code Plugin
From inside Claude Code:
/plugin marketplace add ss26367098/rawtrace-mcp
/plugin install rawtrace-mcp@rawtrace
/reload-pluginsThe equivalent shell commands are:
claude plugin marketplace add ss26367098/rawtrace-mcp
claude plugin install rawtrace-mcp@rawtraceClaude Code uses the same npm package, MCP configuration, Skill, and version as Codex. Run claude plugin validate . --strict when validating a local checkout.
Direct MCP Install
Install globally if desired:
npm install -g rawtrace-mcpThe default direct installation remains the complete 59-tool full profile. Use agent when you want the smaller agent-oriented surface.
Codex with the agent profile:
[mcp_servers.rawtrace]
type = "stdio"
command = "npx"
args = ["-y", "rawtrace-mcp@0.3.0", "--tool-profile", "agent"]
startup_timeout_sec = 120Codex with all 59 tools:
[mcp_servers.rawtrace]
type = "stdio"
command = "npx"
args = ["-y", "rawtrace-mcp@0.3.0", "--tool-profile", "full"]
startup_timeout_sec = 120Claude Code direct MCP examples:
claude mcp add rawtrace -- npx -y rawtrace-mcp@0.3.0 --tool-profile agent
claude mcp add rawtrace-full -- npx -y rawtrace-mcp@0.3.0 --tool-profile fullFor local development, build and point the client at the generated CLI:
npm install
npm run build
node dist/cli.js --tool-profile agent[mcp_servers.rawtrace]
type = "stdio"
command = "node"
args = ["C:\\path\\to\\rawtrace-mcp\\dist\\cli.js", "--tool-profile", "agent"]
startup_timeout_sec = 120Streamable HTTP:
rawtrace-mcp --transport http --host 127.0.0.1 --port 3757 --tool-profile agentHTTP binds to 127.0.0.1 by default. Binding to a non-loopback host requires --unsafe-remote and --auth-token.
After changing MCP client configuration, restart the client or start a new session. Claude Code can use /reload-plugins. Tool names include the client-assigned namespace, for example rawtrace.browser_get_elements or mcp__plugin_rawtrace-mcp_rawtrace__monitor_start; match the final RawTrace tool name when following the workflow.
Tool Profiles and Agent Selection
Profile | Tools | Intended use |
| 59 | Default for direct CLI/MCP installs; preserves the complete existing interface. |
| 35 | Plugin default; removes multi-tab/history, low-frequency observation, arbitrary eval, cookie/storage, raw bulk event reads, upload, viewport, permission, and geolocation tools. |
An unknown --tool-profile value fails immediately with a clear CLI error. The agent profile reduces selection noise and risky low-frequency capabilities, but it is not a security boundary: RawTrace outputs remain sensitive and existing per-tool acknowledgement checks remain enforced.
RawTrace advertises server instructions and detailed tool metadata so agents can choose it without the user naming it explicitly. The bundled rawtrace-debug-browser Skill applies this decision flow:
Use RawTrace proactively for intermittent Playwright/Cypress failures, transient DOM changes, unclear click results, network or WebSocket timing, redirects, downloads, authentication callbacks, or API-body questions that snapshots cannot explain.
For one uncertain interaction, prefer
browser_observe_action_result.For a multi-step issue, call
monitor_start, reproduce the complete flow with RawTrace actions, callmonitor_stop, then inspectmonitor_get_summarybefore targetedmonitor_search_events,monitor_search_bodies, ormonitor_read_artifact.Do not invoke RawTrace for static CSS edits, ordinary source summaries, deterministic non-browser work, or simple webpage fact lookup.
The MCP server's original capture defaults remain compatible: a bare authorized monitor_start still enables cookie and body capture. The bundled Skill explicitly starts ordinary traces with captureCookies: false and captureBodies: false, enabling either only when authentication, cookies, or request/response content is actually relevant.
Tools
RawTrace MCP currently exposes 59 MCP tools:
Browser lifecycle and tabs:
browser_launch,browser_attach_cdp,browser_close,browser_list_tabs,browser_new_tab,browser_switch_tab,browser_close_tab.Navigation:
browser_navigate,browser_reload,browser_go_back,browser_go_forward.Page observation:
browser_get_state,browser_snapshot,browser_get_dom,browser_get_elements,browser_optimize_selector,browser_get_accessibility,browser_get_forms,browser_screenshot,browser_screenshot_annotated,browser_get_network.Browser actions:
browser_click,browser_type,browser_press,browser_hover,browser_scroll,browser_select_option,browser_check,browser_fill_form,browser_wait,browser_poll_until,browser_observe_action_result,browser_wait_for_response,browser_wait_for_response_body,browser_handle_dialog.Files, downloads, and environment:
browser_upload_file,browser_wait_for_download,browser_get_downloads,browser_set_viewport,browser_grant_permissions,browser_set_geolocation.Raw trace tools:
monitor_start,monitor_stop,monitor_list_sessions,monitor_get_manifest,monitor_get_summary,monitor_read_events,monitor_search_events,monitor_search_bodies,monitor_read_artifact,monitor_export.Dangerous page execution:
browser_eval.Credential and browser state tools:
browser_get_cookies,browser_set_cookies,browser_clear_cookies,browser_get_storage,browser_set_storage,browser_export_storage_state,browser_import_storage_state.
Inspection tools that read raw page content, forms, response bodies, downloads, screenshots, or trace artifacts require acknowledgeRawCapture: true, the same safety acknowledgment used by monitor_start. browser_snapshot, browser_poll_until, browser_observe_action_result, and browser_screenshot_annotated can return or save raw page text, input values, element metadata, screenshots, and before/after diffs. browser_eval also requires acknowledgeDangerousEval: true; browser_observe_action_result requires the same dangerous acknowledgment when its action is eval. If eval times out, RawTrace closes the timed-out page and switches to another or new page, because browser-side JavaScript evaluation cannot be safely canceled in place.
Credential/state tools require both acknowledgeRawCapture: true and acknowledgeCredentialAccess: true; browser_launch requires the same acknowledgments when using storageStatePath. Applying Playwright storageState clears existing cookies, localStorage, and IndexedDB before importing the new state. For CDP-connected browsers or explicit userDataDir profiles, browser_launch({ storageStatePath }) and browser_import_storage_state also require acknowledgeStorageStateOverwrite: true.
browser_upload_file requires acknowledgeFileAccess: true. browser_grant_permissions requires acknowledgePermissionChange: true. browser_set_geolocation requires acknowledgeLocationAccess: true. These acknowledgments are separate so a caller cannot accidentally treat raw capture consent as file, permission, or location consent.
When no monitor is running, large DOM/text, snapshots, screenshots, eval results, response bodies, and storageState artifacts are written under rawtrace-traces/inspections/. When a monitor is active, large raw values are written under the trace bodies/ directory and returned by reference. monitor_read_artifact can read only files inside a trace session directory and rejects path traversal such as ../.
Trace Output
Trace bundles are written under rawtrace-traces/ by default:
trace_2026-06-14T064500Z_ab12cd34/
manifest.json
actions.ndjson
dom.ndjson
network.ndjson
cookies.ndjson
websocket.ndjson
console.ndjson
frames.ndjson
bodies/
snapshots/The stable v1 trace schema is documented in docs/trace-schema-v1.md.
monitor_read_events returns at most 1000 events per call. Use offset/limit pagination for browsing or monitor_search_events when looking for a specific endpoint, DOM text, or event type. Search includes inline event fields and DOM htmlRef/textRef artifacts; it does not expand network request or response body files by default. Use monitor_search_bodies when you want to search raw request or response body files, and monitor_read_artifact when you need to read a specific bodyRef, htmlRef, textRef, or snapshot from the trace directory.
Development
npm install
npm run typecheck
npm run lint
npm testIntegration tests launch Chromium. If your environment does not already have Playwright browsers installed, run:
npx playwright install chromiumThe repeatable proactive-invocation prompts and acceptance thresholds are in evals/README.md.
Scope
RawTrace MCP is a raw event recorder for automation development. It is not an AI decision-making agent, selector-healing system, CAPTCHA solver, anti-bot bypass tool, cloud browser service, or cross-browser recorder.
The public open-source surface for v1 is the rawtrace-mcp CLI, MCP tools, and documented trace schema. Internal TypeScript modules are not a stable library API and are not covered by SemVer compatibility promises yet.
Available Tools
59 toolsbrowser_attach_cdpAttach to ChromiumA
Use when an already-running Chromium instance contains the page that must be diagnosed and a tab needs to be selected by page ID, URL, title, or index. Preconditions: the CDP endpoint and target browser must be explicitly authorized and reachable. Next: confirm the selected page with browser_get_state, then observe one action or start a multi-step trace. Sensitivity: attaching exposes the live browser context and any data visible in the selected tab.
| Name | Required | Description | Default |
|---|---|---|---|
| cdpUrl | Yes | ||
| pageId | No | ||
| activate | No | ||
| targetIndex | No | ||
| urlContains | No | ||
| titleContains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate no destructive or read-only behavior, but the description adds crucial context: 'attaching exposes the live browser context and any data visible in the selected tab.' This goes beyond annotations and informs the agent of side effects and 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?
The description is three sentences with clear structure: use case, prerequisites/next steps, and sensitivity warning. No redundant information, though the sensitivity sentence could be integrated but remains 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 6 parameters and 0% schema coverage, the description covers the core purpose, selection criteria, and important behavioral notes. It references an output schema so return values are handled. Missing minor details like the format of cdpUrl, but overall sufficient for agent decision-making.
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 0%, so the description must compensate. It mentions several selection parameters (pageId, urlContains, titleContains, targetIndex) and the required cdpUrl, but does not explain the 'activate' parameter. Partial coverage, not fully compensating for the schema gap.
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 'attach' and the resource 'Chromium page'. It specifies that it connects to an already-running instance and selects a tab by various criteria, distinguishing it from sibling tools like browser_launch and browser_switch_tab.
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 (already-running Chromium with a page to diagnose) and provides preconditions (authorized CDP endpoint) and next steps (confirm with browser_get_state). It does not explicitly list alternatives or when not to use, 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.
browser_checkCheck Form ControlADestructive
Use when a checkbox or radio control must be checked or unchecked during a reproduction. Preconditions: an active page and precise selector are required. Next: continue the flow or inspect validation, DOM, and request changes. Sensitivity: changing a control can submit data, mutate remote state, or expose values in traces.
| Name | Required | Description | Default |
|---|---|---|---|
| checked | No | ||
| selector | Yes | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark as destructive and not read-only. The description adds value by detailing sensitivity: can submit data, mutate remote state, expose traces. This provides context beyond the annotation flags.
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?
Four sentences, each serves a purpose: purpose, preconditions, next steps, side effects. No wasted words, front-loaded with critical usage context.
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, destructive hint, and output schema present, the description covers usage and side effects but omits parameter details and default behavior (e.g., what happens when 'checked' is omitted). 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 description coverage is 0%, so the description must explain parameters. It does not mention selector, checked, or timeoutMs. The purpose hint (checkbox/radio) is weak compensation. Agents would need additional inference.
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 is for checking or unchecking checkbox/radio controls, using specific verbs and resource. It distinguishes from sibling tools like browser_click or browser_type by focusing on the specific control type.
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 when to use (checkbox/radio) and preconditions (active page, precise selector). It doesn't explicitly exclude other input types but the purpose is narrow enough. Sibling tools cover other interactions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clear_cookiesClear Browser CookiesADestructive
Use when a full-profile test needs a deliberate logged-out or clean-cookie state. Preconditions: acknowledgeRawCapture: true and acknowledgeCredentialAccess: true are required; filters should be as narrow as possible. Next: reproduce the intended authentication or redirect behavior after clearing. Sensitivity: clearing cookies can sign out accounts and irreversibly remove session state from the active context.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| path | No | ||
| domain | No | ||
| acknowledgeRawCapture | No | ||
| acknowledgeCredentialAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
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 valuable context: 'clearing cookies can sign out accounts and irreversibly remove session state from the active context.' This goes beyond annotations and helps the agent understand the impact.
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 distinct purpose: use case, preconditions/next step, and sensitivity. It is front-loaded and concise, though it could be more structured by explicitly listing parameters.
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, destructive, no schema descriptions), the description is incomplete. It does not explain parameter roles or how filter combinations affect behavior. The output schema exists, so return values don't need explanation, but the lack of parameter guidance leaves 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?
With 0% schema description coverage, the description must explain parameters. It mentions 'filters should be as narrow as possible' but does not explain the name, path, or domain parameters. It states acknowledgeRawCapture and acknowledgeCredentialAccess are required but omits what they mean or why they're needed. This is insufficient.
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 use case: 'Use when a full-profile test needs a deliberate logged-out or clean-cookie state.' It specifies the verb (clear) and resource (browser cookies), and distinguishes from siblings like browser_get_cookies by focusing on the destructive action.
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 when-to-use guidance ('Use when...'), preconditions ('acknowledgeRawCapture: true and acknowledgeCredentialAccess: true are required'), and a next step ('reproduce the intended authentication or redirect behavior after clearing'). It also advises narrowing filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickClick ElementADestructive
Use when a known element must be clicked during a traced multi-step reproduction and before/after aggregation is not needed. Preconditions: an active page and a precise selector are required; prefer browser_observe_action_result when the outcome is uncertain. Next: continue the reproduction or inspect the resulting state and network events. Sensitivity: clicking can submit forms, mutate remote data, navigate, download files, or trigger other external effects.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
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 enumerating specific side effects (submit forms, mutate data, navigate, download files, trigger external 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 concise at 4 sentences, front-loaded with the primary use case. Every sentence adds necessary context 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 (potential destructive side effects), the presence of an output schema reduces the need to describe return values. However, the complete lack of parameter documentation makes the description less useful 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?
Schema description coverage is 0%, yet the description provides no details about parameters. It mentions 'precise selector' in preconditions but does not explain the selector parameter format, validity, or the timeoutMs parameter. This is a critical gap.
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's purpose: clicking a known element during a traced multi-step reproduction. It uses specific verbs and resource ('click element') and differentiates from sibling tools like browser_observe_action_result.
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 when-to-use conditions (known element, multi-step reproduction) and when-not-to-use (when outcome uncertain, prefer browser_observe_action_result). It also lists preconditions (active page, precise selector).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_closeClose BrowserADestructive
Use when the RawTrace browser context is no longer needed or must be reset before a clean reproduction. Preconditions: stop an active monitor first when its trace must be flushed and retained. Next: launch or attach again only if more browser work is required. Sensitivity: closing destroys the in-memory browser context and can discard unsaved page state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, description adds crucial context: closing destroys the in-memory browser context and can discard unsaved page state, plus interaction with monitor flushing.
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, each serving a distinct purpose: purpose, preconditions, and sensitivity. No redundancy or 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 no parameters, destructive annotation, and existence of output schema, description provides complete context: purpose, preconditions, and side effects.
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 schema coverage is 100%. Description does not need to add parameter info; baseline for 0 parameters is 4.
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 closes the RawTrace browser context when no longer needed or for resetting. Distinguishes from siblings like browser_close_tab and browser_launch by specifying scope and preconditions.
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 (context no longer needed or reset needed) and provides preconditions (stop active monitor first if trace must be retained). Implies alternatives but does not name them explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_close_tabClose Browser TabADestructive
Use when a full-profile workflow must remove an unneeded page or recover from a page-specific failure. Preconditions: identify the intended page and stop any trace that must retain its final events. Next: list tabs or inspect state to confirm which page remains active. Sensitivity: closing a tab discards its unsaved in-memory state.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description warns that closing a tab discards unsaved in-memory state, which adds value beyond the destructiveHint annotation. It also specifies preconditions to mitigate risks. However, it does not detail the exact consequences (e.g., whether the tab is immediately removed or requires confirmation), so slightly incomplete.
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 (three sentences) and front-loaded with the primary use case. Every sentence adds information. However, the term 'full-profile workflow' could be clarified. Overall 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?
For a simple destructive tool, the description covers purpose, preconditions, consequences, and next steps. The presence of an output schema reduces the need to describe return values. Missing: handling of invalid pageId or when no such tab exists. But overall 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 schema provides no description for pageId. The description implies it is the identifier for the tab to close, but does not explicitly define it or specify how to obtain it (e.g., from list_tabs). This leaves ambiguity.
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 role: 'remove an unneeded page or recover from a page-specific failure.' This distinguishes it from sibling tools like browser_close (which closes the entire browser) and navigation tools. The title reinforces purpose.
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 when-to-use guidance ('Use when a full-profile workflow must remove an unneeded page...') and preconditions about identifying the page and stopping traces. It also gives next steps. This helps the agent decide when to invoke this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evalEvaluate Page JavaScriptADestructive
Use when a full-profile diagnosis cannot be completed with safe DOM, action, wait, or trace tools and exact page-side JavaScript is essential. Preconditions: an active authorized page plus acknowledgeRawCapture: true and acknowledgeDangerousEval: true are required. Next: prefer a targeted inspection tool afterward and document why arbitrary evaluation was necessary. Sensitivity: arbitrary JavaScript can read or modify DOM, storage, page-visible credentials, and remote application state.
| Name | Required | Description | Default |
|---|---|---|---|
| arg | No | ||
| maxBytes | No | ||
| frameName | No | ||
| timeoutMs | No | ||
| expression | Yes | ||
| frameUrlContains | No | ||
| acknowledgeRawCapture | No | ||
| acknowledgeDangerousEval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds specifics beyond annotations: 'arbitrary JavaScript can read or modify DOM, storage, page-visible credentials, and remote application state.' Aligns with destructiveHint=true and openWorldHint=true. 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?
Four sentences, each adding value: use case, preconditions, next steps, sensitivity. No redundant information. Well-structured 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?
Covers when, preconditions, and risks. Does not explicitly describe output format, but output schema exists. Complete enough for an agent to understand the tool's role and safety considerations.
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 0%, so description must compensate. It clarifies the need for acknowledgeRawCapture and acknowledgeDangerousEval, but does not detail other parameters like maxBytes, frameName, timeoutMs. Partial but inadequate compensation.
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 when to use: when safe DOM, action, wait, or trace tools are insufficient and exact JavaScript execution is essential. Clearly distinguishes from sibling tools by focusing on arbitrary evaluation.
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 detailed guidance: preconditions (active page, acknowledgeRawCapture and acknowledgeDangerousEval), next steps (prefer targeted tool afterward, document necessity), and sensitivity warning. Excellent context for when and how to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_export_storage_stateExport Storage StateA
Use when a full-profile authorized workflow explicitly needs a Playwright storageState file for reproduction or transfer. Preconditions: acknowledgeRawCapture: true and acknowledgeCredentialAccess: true are required and the output path must be protected. Next: use the file only for the intended test and remove it when no longer needed. Sensitivity: the exported file may contain reusable cookies, tokens, origins, and IndexedDB data.
| Name | Required | Description | Default |
|---|---|---|---|
| maxBytes | No | ||
| indexedDB | No | ||
| outputPath | No | ||
| acknowledgeRawCapture | No | ||
| acknowledgeCredentialAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds sensitivity details about the exported file containing cookies, tokens, etc., which goes beyond the annotations. Annotations indicate readOnlyHint=false (so writing) and non-destructive, consistent with description. 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, each essential: purpose, preconditions/usage, sensitivity. Front-loads the main action. No redundancy or unnecessary detail.
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 an output schema and 5 parameters, the description adequately covers when to use, preconditions, and data sensitivity. It does not describe the output structure but that is covered by the output schema. Missing details like the file format (Playwright storageState) but assumed known.
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 0%, and the description only mentions acknowledgeRawCapture and acknowledgeCredentialAccess in context but does not explain their role or any other parameter (maxBytes, indexedDB, outputPath). The description fails to compensate for the lack of 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 exports a Playwright storageState file for reproduction/transfer, specifying the exact resource and purpose. It implicitly differentiates from sibling import_storage_state by focusing on 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 when-to-use context ('full-profile authorized workflow needing storageState file'), preconditions (acknowledge flags, protected output path), and post-usage instructions. It lacks explicit when-not-to-use or comparison to related tools like browser_get_state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_fill_formFill FormADestructive
Use when multiple form controls must be populated consistently and optionally submitted during a reproduction. Preconditions: an active page and unambiguous field selectors, names, labels, or placeholders are required; provide only intended test data. Next: observe validation, submission requests, redirects, and final state. Sensitivity: filled values may be captured in the DOM, requests, screenshots, traces, or remote application state.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| timeoutMs | No | ||
| submitSelector | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. Description adds 'Sensitivity: filled values may be captured in the DOM, requests, screenshots, traces, or remote application state,' warning about data persistence 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?
Three sentences with clear flow: usage indication, preconditions, next steps, sensitivity. 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?
Covers purpose, preconditions, next steps, and sensitivity. Output schema exists, so return values are not needed. Could mention minItems constraint for fields array or default timeoutMs, but overall complete for a form-filling 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 description coverage is 0%. Description mentions 'unambiguous field selectors, names, labels, or placeholders' which hints at fields array properties but does not detail timeoutMs or submitSelector. Without schema descriptions, more parameter guidance would be beneficial.
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 'Use when multiple form controls must be populated consistently and optionally submitted during a reproduction.' It specifies verb 'fill' and resource 'form', and distinguishes from sibling tools like browser_type (single field).
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?
Preconditions are explicit: 'active page and unambiguous field selectors, names, labels, or placeholders are required; provide only intended test data.' It advises next steps. However, it does not explicitly mention when not to use or name alternatives, though siblings imply differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_accessibilityInspect AccessibilityARead-onlyIdempotent
Use when a full-profile diagnosis specifically needs DOM-derived roles, names, states, or accessibility-oriented element summaries. Preconditions: an active page and acknowledgeRawCapture: true are required. Next: use the returned selector and role context in a targeted action or source fix. Sensitivity: accessible names and values are derived from raw DOM and may contain sensitive content.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| selector | No | ||
| textContains | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. Description adds that acknowledgeRawCapture must be true and results may contain sensitive content. 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?
Three sentences: purpose, preconditions+next steps, sensitivity. Efficient but first sentence uses jargon ('full-profile diagnosis') which may be unclear. No wasteful 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?
Given many sibling tools and output schema exists, description provides good overall context. But fails to explain all parameters (0% schema coverage), so agent may miss how to filter or limit results.
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 0% coverage; description only mentions acknowledgeRawCapture, and incorrectly as required. No explanation for limit, selector, or textContains. Agent cannot infer their purpose from 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?
Description clearly states the tool retrieves DOM-derived accessibility info (roles, names, states, summaries). Differentiates from siblings like browser_get_dom and browser_get_elements by specifying accessibility focus.
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 use condition ('when full-profile diagnosis needs accessibility') and preconditions (active page, acknowledgeRawCapture). But incorrectly states acknowledgeRawCapture as required (schema says optional), misleading the agent. Lacks when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_cookiesRead Browser CookiesARead-onlyIdempotent
Use when a full-profile authentication or cookie-specific diagnosis explicitly requires raw cookie values. Preconditions: acknowledgeRawCapture: true and acknowledgeCredentialAccess: true are required on an authorized account. Next: inspect only the relevant cookie fields and avoid copying values into reports or code. Sensitivity: cookies are credentials and must be treated as secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | No | ||
| acknowledgeRawCapture | No | ||
| acknowledgeCredentialAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds important behavioral context: that cookies are credentials and must be treated as secrets, and that specific acknowledgments are required. This adds value beyond annotations 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?
The description is very concise with three sentences that are front-loaded: use case, preconditions, and post-use guidance. Every sentence adds essential information 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?
Given the presence of an output schema, the description does not need to explain return values. It covers the main use case, sensitivity, and preconditions. However, it misses explaining the 'urls' parameter, which is a minor gap. Overall, it is complete enough for an experienced 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 description coverage is 0%, so the description must explain parameters. While it mentions the acknowledgment booleans in the preconditions, it provides no explanation for the 'urls' parameter (array of URIs). This leaves a significant gap in understanding how to use the tool effectively.
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: reading raw cookie values for authentication or diagnosis. It uses a specific verb ('read') and resource ('cookies'), and distinguishes from sibling tools by emphasizing 'raw cookie values' and the special preconditions.
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 (full-profile auth or cookie-specific diagnosis), required preconditions (acknowledgments), and post-use guidance (inspect only relevant fields, avoid copying). It effectively guides the agent on appropriate use cases and constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_domInspect DOMARead-onlyIdempotent
Use when current HTML or text for a page region is needed to understand transient DOM state, hidden content, or selector behavior. Preconditions: an active page and acknowledgeRawCapture: true are required; narrow with a selector when possible. Next: use browser_get_elements for actionable targets or compare DOM mutations in a trace. Sensitivity: raw DOM and text may contain secrets, personal data, hidden form values, or externalized artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| maxBytes | No | ||
| selector | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a sensitivity warning about raw DOM containing secrets, personal data, etc., which goes beyond the annotations (readOnlyHint, idempotentHint, destructiveHint). 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?
The description is concise: three sentences covering purpose, preconditions/next steps, and sensitivity warning. Information is front-loaded and 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?
The tool has 4 parameters, an output schema, and annotations. The description covers purpose, usage guidelines, preconditions, and sensitivity, but lacks full parameter explanations. Output schema exists, so return values are documented. Overall fairly 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 0%, so the description must compensate. It mentions acknowledgeRawCapture as required and selector as optional, but does not explain mode or maxBytes parameters. Partial guidance but insufficient for complete 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's purpose: to retrieve DOM HTML/text for a page region to understand transient state, hidden content, or selector behavior. It also distinguishes from sibling tool 'browser_get_elements' by specifying the different use case.
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 lists preconditions (active page, acknowledgeRawCapture: true), recommends narrowing with a selector, and suggests next steps (use browser_get_elements for actionable targets or compare DOM mutations). It covers when to use and when not, including alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_downloadsList DownloadsARead-onlyIdempotent
Use when saved downloads from the current runtime must be located or verified after a download flow. Preconditions: at least one download should have completed in this runtime. Next: use the relevant local file with an appropriate parser or test assertion. Sensitivity: download paths, filenames, URLs, and files can contain sensitive information.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint. The description adds useful context about sensitive information (paths, filenames, URLs). No contradiction with annotations. Could mention that it returns a list of download objects.
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 conveying purpose, preconditions, next steps, and sensitivity. Front-loaded with key 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?
Given the tool's simplicity and presence of an output schema, the description covers preconditions, next actions, and sensitivity. It is complete for agent decision-making.
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 0% (limit parameter has no description). The description does not mention the 'limit' parameter or its semantics, despite the parameter being optional but meaningful. This is a significant gap.
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: to locate or verify saved downloads after a download flow. It specifies the resource (downloads) and context (current runtime), differentiating it from other browser tools which focus on navigation, DOM, 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?
Provides explicit when-to-use ('after a download flow'), preconditions ('at least one download should have completed'), and next steps ('use the relevant local file with an appropriate parser or test assertion'). This offers comprehensive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_elementsList Interactive ElementsARead-onlyIdempotent
Use when stable selectors and concise metadata for clickable, editable, or otherwise interactive elements are needed before an action. Preconditions: an active page and acknowledgeRawCapture: true are required; filter by selector or text on large pages. Next: call browser_observe_action_result with the chosen selector for a single uncertain interaction. Sensitivity: element summaries can include visible text, attributes, values, and other raw page metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| selector | No | ||
| textContains | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, openWorldHint. The description adds context about sensitivity of returned metadata (visible text, attributes, values) and the need for acknowledgeRawCapture. 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?
Four sentences with no redundancy. Purpose, preconditions, filtering, and next step are front-loaded. Every sentence adds value; efficient and 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 4 un-documented parameters and an existing output schema, the description covers purpose, filtering, preconditions, and next steps adequately. It could note that 'limit' caps results, but overall sufficient for an interactive element listing 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 0%, so description carries burden. It explains 'acknowledgeRawCapture' and 'selector'/'textContains' for filtering but does not elaborate on 'limit'. Partial compensation for missing schema docs, 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?
The description clearly states the tool's purpose: 'list interactive elements' and specifies the use case for obtaining stable selectors and metadata before actions. It distinguishes from sibling tools like browser_snapshot and browser_get_dom by focusing on interactive elements rather than state or raw DOM.
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 preconditions (active page, acknowledgeRawCapture), suggests filtering by selector/text on large pages, and recommends the next step (browser_observe_action_result). It does not explicitly state when not to use, but the guidance is adequate for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_formsInspect FormsARead-onlyIdempotent
Use when form structure, labels, controls, values, validation state, or submit targets are needed before reproducing a form issue. Preconditions: an active page and acknowledgeRawCapture: true are required; filter to the relevant form when possible. Next: use browser_fill_form for a multi-field reproduction or browser_observe_action_result for one uncertain control action. Sensitivity: form metadata can contain visible or hidden values, personal data, and credential fields.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| maxBytes | No | ||
| selector | No | ||
| textContains | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, non-destructive. The description adds context about capturing raw form data and warns about sensitivity (hidden values, personal data). 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?
Four concise sentences, each serving a distinct purpose: purpose, preconditions, next steps, sensitivity. 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?
Despite having output schema, the description fails to cover parameter semantics for 5 parameters. Given low schema coverage (0%), this is a significant gap that reduces completeness for effective tool 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?
Schema coverage is 0%, yet the description only mentions acknowledgeRawCapture in preconditions. It does not explain the purpose of limit, maxBytes, selector, or textContains, leaving agents to guess filtering and other options.
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 retrieves form structure, labels, controls, values, validation state, and submit targets. It specifies the use case 'before reproducing a form issue', differentiating it from other browser inspection 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?
Provides explicit preconditions (active page, acknowledgeRawCapture: true), guidance to filter forms, and next steps referencing sibling tools (browser_fill_form, browser_observe_action_result). Also notes sensitivity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_networkGet Recent Network EventsARead-onlyIdempotent
Use when recent request and response summaries are needed to explain a click with no request, wrong endpoint, status failure, redirect, or timing issue. Preconditions: a trace session must exist; filter by URL, method, status, or sequence when possible. Next: use monitor_search_events for cross-stream correlation or monitor_search_bodies only when body content is relevant. Sensitivity: network summaries can expose URLs, headers, status details, and references to sensitive bodies.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| method | No | ||
| status | No | ||
| sinceSeq | No | ||
| sessionId | No | ||
| urlContains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable context about sensitivity: 'network summaries can expose URLs, headers, status details, and references to sensitive bodies.' This goes beyond annotations 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?
The description is concise with 4 sentences, each serving a clear purpose: when to use, preconditions, next steps, and sensitivity. It is front-loaded with the most critical 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 6 parameters, 0% schema coverage, and presence of output schema, the description covers usage, preconditions, next steps, and data sensitivity. It is fairly complete, though more detail on parameter meanings would elevate it further.
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 0%, so the description must compensate. It mentions filtering by URL, method, status, or sequence, which corresponds to urlContains, method, status, and sinceSeq parameters. However, it does not describe all 6 parameters (e.g., limit, sessionId) in detail, leaving some 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 explicitly states when to use this tool: to explain a click with no request, wrong endpoint, etc. It clearly identifies the tool's purpose to get recent network event summaries and distinguishes it from sibling tools like monitor_search_events and monitor_search_bodies.
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 when-to-use guidance, preconditions (a trace session must exist), and next steps (use monitor_search_events or monitor_search_bodies). It also recommends filtering by URL, method, status, or sequence when possible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_stateGet Page StateARead-onlyIdempotent
Use when the current URL, title, frames, viewport, or focused element is needed to orient a browser diagnosis. Preconditions: an active page and acknowledgeRawCapture: true are required in an authorized environment. Next: use browser_snapshot for richer page context or choose the next targeted action. Sensitivity: state can expose URLs, frame metadata, and focused values from the live page.
| Name | Required | Description | Default |
|---|---|---|---|
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable context beyond that: preconditions for authorized environment, sensitivity about exposing URLs/frame metadata, and a next step. 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?
Three efficient sentences: purpose, preconditions/next step, sensitivity. No redundancy, all sentences earn their 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?
Covers all essential aspects: purpose, preconditions, usage context, alternative (browser_snapshot), sensitivity. Output schema exists so return values need not be detailed. Complete for 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 0% for the single parameter 'acknowledgeRawCapture'. The description mentions it is required in authorized environment but does not explain its meaning or behavior. Minimal 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 uses specific verbs ('get') and resources ('page state'), listing exact elements (URL, title, frames, viewport, focused element). It distinguishes from sibling 'browser_snapshot' by noting that tool provides richer 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?
Explicitly states when to use ('when the current URL, title, frames...is needed'), preconditions (active page, acknowledgeRawCapture required), and provides a clear next step ('use browser_snapshot...'). No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_storageRead Web StorageARead-onlyIdempotent
Use when a full-profile authentication or application-state diagnosis explicitly requires localStorage or sessionStorage. Preconditions: acknowledgeRawCapture: true and acknowledgeCredentialAccess: true are required for an authorized origin. Next: inspect only relevant keys and avoid returning raw secrets in summaries. Sensitivity: web storage frequently contains tokens, identifiers, preferences, and personal data.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | ||
| maxBytes | No | ||
| acknowledgeRawCapture | No | ||
| includeSessionStorage | No | ||
| acknowledgeCredentialAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, non-destructive. The description adds critical context: storage sensitivity (tokens, identifiers, personal data) and required acknowledgments. 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?
Three focused sentences, front-loaded with usage condition, 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?
Use case and behavioral context are well covered, and output schema exists. However, with zero parameter description coverage and 5 parameters, the description is incomplete for effective tool 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?
Schema coverage is 0%; the description does not mention any of the 5 parameters. Agents receive no guidance on origin, maxBytes, includeSessionStorage, or the acknowledgment booleans beyond schema field names.
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 tool reads localStorage or sessionStorage for authentication or application-state diagnosis, distinguishing it from sibling tools like browser_get_cookies or browser_get_state.
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 preconditions (acknowledgeRawCapture, acknowledgeCredentialAccess) and next-step guidance (inspect relevant keys, avoid raw secrets). Implicitly restricts usage to contexts requiring full-profile auth or state diagnosis. Could be strengthened by directly stating 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.
browser_go_backGo BackADestructive
Use when history navigation is specifically needed to reproduce a redirect, back-button state bug, or single-page application history issue. Preconditions: an active page with a previous history entry is required. Next: inspect state and relevant network events after navigation. Sensitivity: history navigation can reissue requests and expose credential-bearing page state.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | ||
| waitUntil | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint: true), description adds context: 'history navigation can reissue requests and expose credential-bearing page state.' This warns about side effects not obvious from annotations alone. Good addition.
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 plus two labeled points (preconditions, next, sensitivity). Every sentence adds distinct value. Purpose is immediately clear in the first 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 purpose, usage, and behavioral effects well, but completely omits parameter documentation. Output schema exists but not shown. Given the tool's simplicity and available annotations, the description is adequate but not fully self-contained due to missing param info.
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 0% (no parameter descriptions in schema). The description does not mention or explain timeoutMs or waitUntil. As the tool has two parameters, this is a critical gap; the agent has no guidance on using them effectively.
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 specific use case: 'reproduce a redirect, back-button state bug, or single-page application history issue.' It provides a specific verb-resource combination and distinguishes from forward navigation implicitly.
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 ('when history navigation is specifically needed'), preconditions ('active page with a previous history entry required'), and post-use guidance ('inspect state and relevant network events'). Could be improved by explicitly naming alternatives like browser_go_forward or browser_navigate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_go_forwardGo ForwardADestructive
Use when forward history navigation is specifically required to reproduce a cached state, redirect, or single-page application history issue. Preconditions: an active page with a forward history entry is required. Next: inspect state and relevant network events after navigation. Sensitivity: history navigation can reissue requests and expose credential-bearing page state.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | ||
| waitUntil | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations by noting that navigation can reissue requests and expose credential-bearing page state. Annotations already indicate destructiveHint=true; description reinforces sensitivity.
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 focused sentences with no repetition or fluff. Each sentence adds value: usage scenario, preconditions, and behavioral sensitivity.
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 key aspects for a navigation tool: purpose, preconditions, sensitivity. Output schema exists to handle return values, so explanation is sufficient. Minor omission: no mention of waiting for navigation to complete, but waitUntil parameter implies 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 0%, and the description does not explain the two parameters (timeoutMs, waitUntil). The agent must infer meaning from names and enums alone, making parameter usage less clear.
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 is for forward history navigation, specifying exact use cases like reproducing cached states, redirects, or SPA history issues. Distinguishes from siblings by being the only forward navigation 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?
Provides preconditions (active page with forward history) and post-navigation suggestions. However, does not explicitly state when not to use or compare to alternatives like browser_go_back or browser_navigate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_grant_permissionsGrant Browser PermissionsADestructive
Use when a full-profile authorized test explicitly requires browser permissions such as geolocation, notifications, camera, or microphone. Preconditions: acknowledgePermissionChange: true and the minimal intended permission list are required. Next: run the permission-dependent flow and avoid granting unrelated capabilities. Sensitivity: permissions expose device-like capabilities and can change what the target page may access.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | ||
| permissions | Yes | ||
| acknowledgePermissionChange | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description adds moderate value by explaining sensitivity: 'permissions expose device-like capabilities and can change what the target page may access.' This provides context beyond the annotations, but does not detail side effects or revocation.
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, each earning its place: purpose, preconditions, and sensitivity/next steps. It is front-loaded with the key verb and resource, with no redundant or vague language.
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 (permission grant with preconditions and sensitivity), the description covers when to use it, prerequisites, and behavioral implications. With an output schema present, return values are handled elsewhere, making this fairly complete. Minor gap: no mention of error cases or handling denied permissions.
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 0%, so the description must compensate. It provides examples for the 'permissions' parameter (geolocation, notifications, etc.) and implies that 'acknowledgePermissionChange' should be true via preconditions. However, the 'origin' parameter is not explained, leaving it unclear.
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: granting browser permissions like geolocation, notifications, camera, or microphone. It uses a specific verb ('grant') and resource ('browser permissions'), and distinguishes itself from sibling tools by focusing on permission management, not navigation or DOM interaction.
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 usage guidance: 'Use when a full-profile authorized test explicitly requires browser permissions' and lists preconditions (acknowledgePermissionChange: true, minimal permission list). It also suggests next steps ('run the permission-dependent flow') and warns against granting unrelated capabilities. However, it does not mention alternatives because no other sibling tool performs this function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_handle_dialogHandle JavaScript DialogADestructive
Use when an alert, confirm, prompt, or beforeunload dialog blocks or changes the browser reproduction. Preconditions: configure the intended accept or dismiss behavior before the dialog appears. Next: trigger the dialog and inspect the resulting action, navigation, or state. Sensitivity: accepting prompts or confirmations can submit text, authorize actions, or mutate application state.
| Name | Required | Description | Default |
|---|---|---|---|
| once | No | ||
| action | Yes | ||
| promptText | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations (destructiveHint=true) by noting that accepting prompts can submit text, authorize actions, or mutate state. 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?
Three sentences with front-loaded purpose and clear structure. Slightly verbose but 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?
Adequate for a simple 3-param tool with output schema, but missing parameter explanations in description 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?
No parameter descriptions in schema (0% coverage) and description does not explain 'once', 'action', or 'promptText' meaning, leaving agents to infer from enum values and type 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?
Description specifies the tool handles JavaScript dialogs (alert, confirm, prompt, beforeunload) that block or change browser reproduction, clearly distinguishing it from navigation and interaction 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?
Provides preconditions (configure behavior before dialog appears) and next steps (trigger dialog and inspect result), 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.
browser_hoverHover ElementA
Use when hover-driven menus, tooltips, lazy content, or transient UI state must be reproduced. Preconditions: an active page and precise selector are required. Next: inspect the transient DOM promptly or continue the monitored sequence. Sensitivity: hover handlers can trigger network requests, analytics, or application state changes.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by warning that 'hover handlers can trigger network requests, analytics, or application state changes', which is consistent with readOnlyHint=false and destructiveHint=false.
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, front-loaded with the primary use case, and no redundant 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?
Given the tool's simplicity and the presence of an output schema, the description covers preconditions, side effects, and next steps. However, the lack of parameter descriptions slightly 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?
With 0% schema description coverage, the description fails to explain the meaning or constraints of the two parameters (selector and timeoutMs), leaving the agent to rely solely on the JSON schema, which lacks 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 explicitly states the tool is for 'hover-driven menus, tooltips, lazy content, or transient UI state', using a specific verb and resource, distinguishing it from sibling tools like click or type.
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 clear preconditions ('active page and precise selector required') and a recommended next step ('inspect the transient DOM or continue'), but does not explicitly list alternatives 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.
browser_import_storage_stateImport Storage StateADestructive
Use when a full-profile authorized reproduction explicitly needs to replace active browser credential and origin state from a Playwright storageState file. Preconditions: raw-capture and credential acknowledgements are required; CDP or userDataDir contexts also require acknowledgeStorageStateOverwrite: true. Next: navigate or reload to verify the intended authenticated state. Sensitivity: import clears and replaces cookies, localStorage, and IndexedDB and can overwrite a real logged-in profile.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| acknowledgeRawCapture | No | ||
| acknowledgeCredentialAccess | No | ||
| acknowledgeStorageStateOverwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the action clears and replaces cookies, localStorage, and IndexedDB, and can overwrite a real logged-in profile. This goes beyond the annotations (destructiveHint=true) by detailing exactly what is destroyed.
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: first states purpose and when to use, second lists preconditions, third gives next step and sensitivity. No irrelevant 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 tool's destructive nature and the presence of an output schema (so return values need not be explained), the description covers preconditions, behavioral effects, and next steps 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?
With 0% schema description coverage, the description compensates by explaining the purpose of the acknowledgment parameters (raw-capture, credential, overwrite). The 'path' parameter is implied but not explicitly described; still, it adds significant 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?
Description clearly states the tool replaces active browser credentials and origin state from a Playwright storageState file, with a specific verb ('import') and resource ('storage state'). It distinguishes this from siblings like browser_export_storage_state.
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?
Description provides explicit preconditions (acknowledgments required) and a next step (navigate/reload). It does not explicitly list alternatives or when not to use, but the specific context ('full-profile authorized reproduction') implies narrow usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_launchLaunch BrowserA
Use when a RawTrace-controlled Chromium session is not running yet, or a known CDP endpoint or storage state must be opened before reproducing a browser issue. Preconditions: provide only profiles and systems you are authorized to inspect; storageState use also requires the raw-capture and credential acknowledgements. Next: navigate or inspect the selected page, then use browser_observe_action_result for one action or monitor_start for a multi-step reproduction. Sensitivity: launch options can expose an existing browser profile, CDP session, or credential-bearing storage state.
| Name | Required | Description | Default |
|---|---|---|---|
| cdpUrl | No | ||
| headless | No | ||
| userDataDir | No | ||
| storageStatePath | No | ||
| acknowledgeRawCapture | No | ||
| acknowledgeCredentialAccess | No | ||
| acknowledgeStorageStateOverwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate openWorldHint=true and destructiveHint=false. The description adds that launch options can expose existing browser profiles, CDP sessions, or credential-bearing storage states, supplementing the annotations with useful 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 multiple sentences but front-loaded with the core purpose. Every sentence adds value, though it could be slightly more concise without losing clarity.
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 launch tool with 7 parameters (none required) and an output schema, the description covers when, preconditions, next steps, and sensitivity. It adequately prepares the agent, though it does not detail the output structure (handled externally).
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 0%, but the description mentions key parameters like profiles, storage state, and CDP endpoint. It also references the acknowledge booleans in preconditions. However, it does not explain each parameter in detail, limiting the added value for an agent.
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 launches a RawTrace-controlled Chromium session or opens a CDP endpoint/storage state. It distinguishes from siblings like browser_attach_cdp by specifying when a session is not running yet.
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 context, preconditions (authorization, acknowledgements), and next-step suggestions (navigate/inspect, then use browser_observe_action_result or monitor_start). Also implies when-not-to-use by mentioning 'not running yet'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_tabsList Browser TabsARead-onlyIdempotent
Use when a full-profile workflow must discover the open pages before switching, closing, or selecting a CDP target. Preconditions: an active browser context is required. Next: use browser_switch_tab with the chosen page ID. Sensitivity: tab URLs and titles may reveal private application or account information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. Description adds sensitivity warning about tab URLs and titles, which is valuable 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?
Three sentences: purpose, preconditions+next step, sensitivity. Front-loaded and 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 zero-parameter tool with an output schema, description covers usage, preconditions, follow-up tool, and data sensitivity. 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?
Schema has 0 parameters with 100% coverage, so no param info needed. Baseline 4 applies; description correctly adds no redundant param details.
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 'discover the open pages before switching, closing, or selecting a CDP target' with specific verb 'list' and resource 'browser tabs'. It distinguishes from siblings by mentioning typical workflow sequence.
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 'Use when...' and provides preconditions ('active browser context required') and next steps ('use browser_switch_tab'). Does not list exclusions, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_new_tabOpen New TabA
Use when a full-profile reproduction genuinely requires a separate page rather than the existing active tab. Preconditions: an active browser context is required and any supplied URL must be authorized. Next: inspect or trace the new active tab, then close it when finished. Sensitivity: opening a URL contacts an external origin and may send context credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| waitUntil | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it notes the external origin contact and credential sensitivity, and mentions the need to close the tab after use. This aligns with openWorldHint true and readOnlyHint false 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, using four short sentences with clear sections (use case, preconditions, next steps, sensitivity). 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?
The description covers the tool's role, preconditions, and sensitivity, but omits explanation of the 'waitUntil' parameter behavior. Since an output schema exists, return values need not be described. The gap on parameter semantics prevents a perfect score.
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 0% schema description coverage, the description must compensate. It adds context for the 'url' parameter (must be authorized), but provides no explanation for the 'waitUntil' enum. This partial coverage earns a middle 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: opening a new tab when a separate page is needed, distinguishing it from browser_navigate which uses the existing tab. The verb 'open' and resource 'new tab' are explicit.
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 when-to-use guidance ('when a full-profile reproduction genuinely requires a separate page'), preconditions (active browser context, authorized URL), and next steps (inspect/trace then close). It also contrasts with the sibling tool browser_navigate by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_observe_action_resultObserve Action ResultADestructive
Use when one click, type, press, check, select, hover, scroll, reload, navigate, or authorized eval has an unclear outcome and a compact before/after diff is needed. Preconditions: an active page and acknowledgeRawCapture: true are required; eval actions also require acknowledgeDangerousEval: true. Next: use the returned DOM, state, network, and optional screenshot diff to decide whether a longer monitor_start reproduction is necessary. Sensitivity: before/after snapshots, values, screenshots, URLs, and network changes can contain sensitive raw page data.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| waitAfterMs | No | ||
| afterSnapshot | No | ||
| beforeSnapshot | No | ||
| includeScreenshot | No | ||
| acknowledgeRawCapture | No | ||
| acknowledgeDangerousEval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, so the destructive nature is known. The description adds a sensitivity warning about sensitive raw page data in the diff. It does not contradict annotations, but beyond that, it does not disclose additional behavioral traits such as side effects on page state or 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?
The description is four sentences with clear front-loading of purpose and usage. Every sentence adds value: when to use, preconditions, next steps, and sensitivity. 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?
The description covers purpose, usage, and output context (diff with DOM, state, network, screenshot). However, given the high parameter count (7 with nested objects) and lack of parameter explanations, it is not fully complete. Output schema existence reduces the need to describe return values, but parameter semantics remain 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?
Schema description coverage is 0% for the 7 parameters (many nested). The description does not explain any parameter individually, such as the 'action' variant details or the snapshot options. This leaves the agent to infer from the schema alone, which is insufficient given the complexity.
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 'Use when one click, type, press, check, select, hover, scroll, reload, navigate, or authorized eval has an unclear outcome and a compact before/after diff is needed.' This clearly states the tool's purpose (observing action results) and distinguishes it from siblings that perform actions or take snapshots without the diff 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 specifies when to use (unclear outcome, need compact diff), preconditions (active page, acknowledgeRawCapture, acknowledgeDangerousEval for eval), and next steps (use returned diff to decide if longer monitoring is needed). It does not explicitly list when not to use or name alternative tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_optimize_selectorOptimize SelectorARead-onlyIdempotent
Use when a full-profile workflow needs a shorter unique selector for a target that is already known. Preconditions: an active page, acknowledgeRawCapture: true, and a selector matching the intended element are required. Next: verify the returned selector with browser_get_elements before relying on it in automation. Sensitivity: candidate analysis reads DOM attributes and text that may be sensitive.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| role | No | ||
| selector | Yes | ||
| targetIndex | No | ||
| textContains | No | ||
| candidateLimit | No | ||
| includeRejected | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds a useful sensitivity warning: 'candidate analysis reads DOM attributes and text that may be sensitive.' This provides behavioral context beyond the annotations, earning a score above baseline.
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: three sentences covering purpose, preconditions, next step, and sensitivity. Every sentence adds value with no redundancy or 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?
While the description provides high-level context and a sensitivity warning, it omits details about the output (which is partially covered by an output schema) and the many parameters. For a tool with 8 parameters and no parameter descriptions, more guidance on how to construct a good request 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 description coverage is 0%, yet the description only mentions two parameters (selector and acknowledgeRawCapture) without explaining their semantics or usage. Six other parameters remain entirely undocumented. The description fails to compensate for the 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 the tool's purpose: to optimize a selector to be shorter and unique for a known target. The verb 'optimize' and resource 'selector' are specific, and no sibling tool performs this function, so it is well-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?
The description provides clear usage context: 'Use when a full-profile workflow needs a shorter unique selector.' It lists preconditions (active page, acknowledgeRawCapture true, valid selector) and a next step (verify with browser_get_elements). However, it does not explicitly state when not to use or mention alternatives, which would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_poll_untilPoll Until Page Conditions MatchARead-onlyIdempotent
Use when asynchronous DOM, URL, element value, or authentication signals must be sampled until one or all conditions match. Preconditions: an active page and acknowledgeRawCapture: true are required; use bounded timeout and interval values. Next: use the matched snapshot to continue the flow or explain the timing boundary. Sensitivity: poll snapshots can repeatedly capture raw text, values, URLs, authentication signals, and element metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | ||
| snapshot | No | ||
| timeoutMs | No | ||
| conditions | Yes | ||
| intervalMs | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, non-destructive), the description adds sensitivity about repeated raw capture of text, values, etc. 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 three sentences, front-loaded with purpose, preconditions, next step, and sensitivity. No wasted words, each 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 the tool's complexity (6 parameters, nested objects, condition variants) and 0% schema coverage, the description lacks details on match modes, snapshot fields, and condition syntax. An output schema exists but is not shown; description needs to compensate more.
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 0%, so the description must compensate. It mentions timeout, interval, and acknowledgeRawCapture but does not explain match, snapshot sub-properties, or condition details. The high-level hints are insufficient for a complex input 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 purpose: polling until conditions match for asynchronous DOM, URL, element value, or auth signals. It uses specific verbs and resources, distinguishing it from sibling tools like browser_snapshot (single snapshot) or browser_wait (fixed wait).
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 when to use it ('use when asynchronous...'), lists preconditions (active page, acknowledgeRawCapture: true, bounded timeout/interval), and suggests next steps. It lacks explicit when-not-to-use but provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pressPress Keyboard KeyADestructive
Use when a keyboard action such as Enter, Escape, Tab, or a shortcut is part of the browser reproduction. Preconditions: an active page is required and the optional selector must identify the intended focus target. Next: continue the sequence or inspect any resulting navigation, dialog, DOM, or network activity. Sensitivity: key presses can submit data, trigger shortcuts, navigate, or mutate remote state.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| delayMs | No | ||
| selector | No | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds crucial context beyond annotations by stating 'key presses can submit data, trigger shortcuts, navigate, or mutate remote state,' aligning with destructiveHint: true and readOnlyHint: false. It does not contradict any 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?
Three sentences, each serving a distinct purpose: when to use, preconditions and next steps, and sensitivity. No redundant or irrelevant 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 description covers purpose, preconditions, side effects, and follow-up actions. An output schema exists (not shown), so return value explanation is not required. However, it lacks detail on all four parameters, particularly delayMs and timeoutMs, leaving some gaps 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 description coverage is 0%, so the description must compensate. It mentions 'key' implicitly via examples (Enter, Escape, Tab) and 'selector' as optional, but does not explain delayMs or timeoutMs, leaving their purpose ambiguous. More parameter detail is needed.
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 'Use when a keyboard action such as Enter, Escape, Tab, or a shortcut is part of the browser reproduction,' specifying both the verb and resource. It distinguishes from siblings like browser_click (mouse clicks) and browser_type (text input).
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 provides explicit preconditions ('an active page is required and the optional selector must identify the intended focus target') and suggests subsequent actions ('continue the sequence or inspect any resulting navigation, dialog, DOM, or network activity'). While it doesn't explicitly list exclusions or alternatives, the context implies when to use this tool vs. browser_type for typing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_reloadReload PageADestructive
Use when a reload is necessary to reproduce initialization races, cached-versus-fresh behavior, redirects, or intermittent requests. Preconditions: an active page is required; start monitor_start first when the whole reload sequence matters. Next: inspect the resulting state or stop the trace and read its summary. Sensitivity: reload can repeat writes or requests performed by the page and may transmit active credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | ||
| waitUntil | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, readOnlyHint=false), the description adds critical context: reload can repeat writes/requests and may transmit active credentials. This explains the destructive nature and security implications, going well 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?
Three sentences, each serving a clear purpose: usage scenarios, preconditions/next steps, and sensitivity. Front-loaded with the most critical information. No redundant 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?
The description covers usage context, preconditions, next steps, and behavior. However, it omits parameter semantics entirely, which is a significant completeness gap given the tool's moderate complexity and the presence of an 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 description coverage is 0%, meaning the schema provides no parameter descriptions. The tool description does not mention or explain the two parameters (timeoutMs, waitUntil), leaving the agent without crucial semantic information for correct invocation.
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 specific use cases for reload: reproducing initialization races, cached-versus-fresh behavior, redirects, or intermittent requests. This distinguishes it from sibling navigation tools like browser_navigate, browser_go_back, etc., which serve general navigation.
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 explicit preconditions (active page required, start monitor_start first) and hints at next steps (inspect state or read trace summary). It lacks explicit directions on when NOT to use the tool, but the listed scenarios provide clear context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotCapture ScreenshotA
Use when visual evidence is necessary to understand layout, overlays, rendering, or the result of a browser interaction. Preconditions: an active page and acknowledgeRawCapture: true are required; select a region when the full page is unnecessary. Next: use the saved PNG as supporting evidence and continue with targeted DOM or trace inspection. Sensitivity: screenshots may capture personal data, secrets, account state, or other sensitive pixels and are written locally.
| Name | Required | Description | Default |
|---|---|---|---|
| fullPage | No | ||
| selector | No | ||
| outputPath | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide minimal behavioral info (readOnlyHint=false, openWorldHint=true). The description adds critical context: screenshots may capture sensitive data and are written locally. It also hints at region selection behavior. This is good but could mention if it waits for network idle or page load.
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-loading the use case and preconditions. Every sentence adds value. However, it could be structured into bullet points for clarity, but conciseness is not sacrificed.
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 moderate complexity (4 parameters, no required ones, output schema exists), the description covers usage and sensitivity but misses parameter details. The output schema relieves some burden for return values, but the parameter ambiguity lowers 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 0%, so the description must explain parameters. It mentions acknowledgeRawCapture as a precondition and region selection, but does not define parameters like 'selector' (CSS selector? Coordinates?), 'outputPath' (path format?), or 'fullPage' (true/false behavior). This lack of detail impedes correct invocation.
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 purpose: capturing visual evidence for layout, overlays, rendering, or interaction results. It distinguishes from siblings like browser_snapshot and browser_screenshot_annotated by emphasizing visual evidence for layout analysis.
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 preconditions (active page, acknowledgeRawCapture: true), guidance on when to select a region vs full page, and suggests next steps (targeted DOM or trace inspection). It also notes sensitivity, giving an exclusionary condition for alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshot_annotatedCapture Annotated ScreenshotA
Use when a full-profile visual diagnosis needs temporary selector or coordinate annotations over the page. Preconditions: an active page and acknowledgeRawCapture: true are required; annotations must identify authorized content. Next: inspect the saved PNG and use normal DOM tools for machine-readable details. Sensitivity: the image and labels may expose sensitive page content and are written locally.
| Name | Required | Description | Default |
|---|---|---|---|
| boxes | No | ||
| fullPage | No | ||
| selector | No | ||
| selectors | No | ||
| outputPath | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show `readOnlyHint=false`, consistent with writing locally. The description adds sensitivity warnings and local writing behavior, 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 moderately concise but uses verbose phrases like 'full-profile visual diagnosis'. It front-loads the use case but could be tighter.
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 output schema existing, the description lacks parameter details, leaving the agent uncertain how to construct valid inputs. Preconditions are stated but 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?
With 0% schema coverage, the description does not explain the purpose or usage of most parameters (e.g., `boxes`, `selector`, `fullPage`). It only mentions `acknowledgeRawCapture` as required, contradicting the optional 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 captures annotated screenshots for visual diagnosis, distinguishing it from the unannotated sibling `browser_screenshot`. The verb 'capture' and resource 'annotated screenshot' 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 provides explicit preconditions (active page, `acknowledgeRawCapture: true`) and next steps. It implies the use case (full-profile visual diagnosis) but does not explicitly state when to avoid this tool in favor of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollScroll Page or ElementA
Use when lazy loading, infinite scroll, sticky layout, viewport-dependent behavior, or an off-screen target must be reproduced. Preconditions: an active page is required; provide a selector only when a specific scroll region matters. Next: wait for resulting activity or inspect DOM and network changes. Sensitivity: scroll listeners can trigger external requests, analytics, and dynamic content loading.
| Name | Required | Description | Default |
|---|---|---|---|
| deltaX | No | ||
| deltaY | No | ||
| selector | No | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by stating scroll listeners can trigger external requests, analytics, and dynamic content loading. This adds valuable context about side effects, which is not covered by the annotations (readOnlyHint=false, destructiveHint=false).
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 concise sentences, each earning its place: purpose and use cases, preconditions and next steps, and sensitivity. Front-loaded with key 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?
The description covers purpose, use cases, and behavioral traits adequately but lacks parameter details. Given the tool has 4 parameters and no schema descriptions, the description is incomplete for proper parameter 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?
With 0% schema description coverage, the description should explain parameters but only mentions selector in passing. It does not define deltaX, deltaY, or timeoutMs, leaving meaning ambiguous. Some compensation for selector, but insufficient overall.
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 scrolls a page or element, and lists specific use cases like lazy loading, infinite scroll, sticky layout, viewport-dependent behavior, and off-screen targets. It distinguishes from sibling tools like clicks and hovers.
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 (e.g., lazy loading, infinite scroll) and provides preconditions (active page required, selector only for specific regions) and next steps (wait for activity or inspect changes). However, it does not explicitly mention when not to use or directly contrast with alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_select_optionSelect OptionADestructive
Use when one or more values must be selected in a native select control during a reproduction. Preconditions: an active page, precise selector, and intended value, label, or index are required. Next: continue the flow or inspect dependent DOM and network activity. Sensitivity: selection can submit forms, alter application state, or expose chosen values in traces.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | ||
| selector | Yes | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, and the description reinforces this by warning that selection can submit forms or alter state. It goes beyond annotations by mentioning potential side effects (form submission, exposing values in traces) and suggesting next steps (inspect DOM/network). 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 concise (three sentences) and front-loaded with purpose and preconditions. The sensitivity note is useful but slightly dense. Could be improved by breaking preconditions into a list for readability.
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 0% schema coverage, the description should provide more detail about parameters and expected outputs. While it notes next steps, it omits return format, error cases, and detailed parameter behavior. For a tool with 3 parameters and potential side effects, this is insufficient.
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 0%, so the description should compensate, but it only hints at parameters ('intended value, label, or index') without explaining the complex schema for the 'values' parameter or describing 'selector' and 'timeoutMs'. The agent lacks guidance on how to structure input for multi-select or specifying options by index/label/value.
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: selecting one or more values in a native select control. It uses a specific verb ('select') and resource ('native select control'), and distinguishes itself from sibling tools like browser_click or browser_type.
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 preconditions (active page, precise selector, value/label/index), which implies when it should be used. However, it does not explicitly contrast with alternatives or state when not to use this tool. The 'Sensitivity' warning adds context but does not guide choice between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_cookiesSet Browser CookiesADestructive
Use when a full-profile authorized test explicitly requires establishing or changing cookie state. Preconditions: acknowledgeRawCapture: true and acknowledgeCredentialAccess: true are required; use only intended test credentials. Next: verify the resulting flow without exposing cookie values and clear temporary state when appropriate. Sensitivity: this modifies credential state and raw cookie values are secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | Yes | ||
| acknowledgeRawCapture | No | ||
| acknowledgeCredentialAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly false, destructive true, and open world. The description adds context about credential handling and secrecy, enhancing transparency 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 is concise with no unnecessary words, front-loaded with purpose. It could be slightly more structured but is effective.
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 moderate complexity and an output schema, the description covers preconditions and sensitivity but lacks details on behavior like overriding cookies or return values, leaving 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 description coverage is 0%, but the description does not detail the cookies array or its properties. It mentions the acknowledge flags as preconditions, which adds some meaning, but fails to fully compensate for the lack of 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 establishes or changes cookie state, aligning with its name and title. However, it does not explicitly distinguish from sibling tools like browser_import_storage_state that may also set cookies.
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 when to use this tool ('full-profile authorized test requiring establishing or changing cookie state') and lists required preconditions. It does not mention alternatives, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_geolocationSet Browser GeolocationADestructive
Use when a full-profile authorized test explicitly depends on a controlled latitude, longitude, and accuracy. Preconditions: acknowledgeLocationAccess: true is required and only intended coordinates may be supplied. Next: reload or exercise the location-dependent behavior. Sensitivity: the coordinates are exposed to authorized pages that have geolocation permission.
| Name | Required | Description | Default |
|---|---|---|---|
| accuracy | No | ||
| latitude | Yes | ||
| longitude | Yes | ||
| acknowledgeLocationAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it warns that coordinates are exposed to authorized pages (sensitivity), specifies that only intended coordinates should be supplied, and outlines preconditions and next steps. This complements the destructiveHint and openWorldHint annotations 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?
The description is extremely concise: four sentences, each serving a distinct purpose (purpose, precondition, next step, sensitivity). It is front-loaded with the primary purpose and requires no editing.
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 (4 parameters, output schema exists), the description covers the essential aspects: when to use, preconditions, post-conditions, and a security warning. It does not explain error handling or alternative approaches, but the provided information is sufficient 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?
With 0% schema description coverage, the description compensates by explaining the role of latitude, longitude, and accuracy as 'controlled' values, and specifically notes that acknowledgeLocationAccess must be true. It does not detail each parameter's format (schema handles that), but adds meaning by connecting parameters to the use case and precondition.
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: setting browser geolocation for authorized tests. It uses specific verbs ('set'), resource ('geolocation'), and context ('full-profile authorized test'), distinguishing it from sibling tools that handle navigation, permissions, or other browser actions.
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 (when a test depends on controlled geolocation) and provides preconditions (acknowledgeLocationAccess: true) and next steps (reload or exercise behavior). It does not explicitly mention when not to use or alternative tools, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_storageSet Web StorageADestructive
Use when a full-profile authorized test explicitly needs controlled localStorage or sessionStorage values. Preconditions: acknowledgeRawCapture: true and acknowledgeCredentialAccess: true are required; target the intended origin and keys. Next: reload or navigate as needed to observe the application's reaction. Sensitivity: this changes potentially credential-bearing application state.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | ||
| localStorage | No | ||
| sessionStorage | No | ||
| acknowledgeRawCapture | No | ||
| acknowledgeCredentialAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false. The description confirms this by stating 'this changes potentially credential-bearing application state' and requiring acknowledge flags. No contradiction, and it adds context about credential sensitivity 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 four sentences, somewhat concise, but the first sentence is long and could be broken for readability. It avoids waste but lacks structured presentation of preconditions and steps.
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 destructive behavior and output schema present (not shown), the description covers preconditions and sensitivity but fails to detail parameter usage. It is complete for high-level context but lacks parameter guidance given 0% schema coverage.
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 0%, so description must compensate. It only mentions acknowledgeRawCapture and acknowledgeCredentialAccess as prerequisites, but does not explain origin, localStorage, or sessionStorage parameter semantics. This is insufficient for correct usage.
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 title 'Set Web Storage' and description explicitly state the tool sets localStorage/sessionStorage values. It clearly distinguishes from siblings like browser_set_cookies and browser_get_storage by specifying controlled web storage manipulation.
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: 'full-profile authorized test explicitly needs controlled localStorage or sessionStorage values'. It provides preconditions (acknowledge flags) and next steps (reload/navigate). While it doesn't explicitly exclude other scenarios, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_viewportSet Browser ViewportA
Use when a full-profile reproduction explicitly depends on responsive breakpoints or viewport dimensions. Preconditions: an active page and intended positive width and height are required. Next: reload or inspect the affected layout and events. Sensitivity: viewport changes can trigger application reflow, lazy loading, analytics, and network requests.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, description warns of side effects like reflow, lazy loading, analytics, and network requests. This adds valuable transparency 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?
Three sentences cover use case, preconditions, and side effects efficiently. Could be more direct but no wasted 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?
Given presence of output schema and annotations, description provides sufficient context for its two-parameter tool: when to use, preconditions, and behavioral impact.
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 0% schema description coverage, description only says 'positive width and height', not explaining units or semantics (e.g., pixels). Minimal added value beyond the schema's constraints.
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 the tool is for setting viewport dimensions when responsive breakpoints matter, which is clear and distinguishes from navigation or screenshot tools. However, it could be more direct like 'Sets browser viewport width and height.'
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 context for when to use ('full-profile reproduction depending on responsive breakpoints') and preconditions, but lacks explicit when-not-to-use or alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotSnapshot PageARead-onlyIdempotent
Use when a compact combined view of page state, text, inputs, links, and interactive elements is more useful than separate inspection calls. Preconditions: an active page and acknowledgeRawCapture: true are required. Next: select a target for browser_observe_action_result or compare with a later snapshot. Sensitivity: snapshots may include DOM text, visible input values, links, and externalized raw artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | ||
| includeLinks | No | ||
| maxTextBytes | No | ||
| elementsLimit | No | ||
| includeInputs | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations, such as mentioning that snapshots include DOM text, input values, links, and raw artifacts. This informs the agent of data sensitivity and 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?
The description is concise (4 sentences), front-loaded with 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?
Despite having an output schema, the description fails to cover parameter semantics, which is critical for a tool with 6 undocumented parameters. The description is incomplete for effective tool 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?
Schema coverage is 0%, and the description does not explain any of the 6 parameters (selector, includeLinks, maxTextBytes, etc.). The description only broadly mentions what is captured, leaving agents without detailed guidance on parameter usage.
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: providing a compact combined view of page state, text, inputs, links, and interactive elements. It distinguishes itself from separate inspection calls, which are 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 gives specific preconditions (active page, acknowledgeRawCapture: true) and suggests next steps (select target for observe_action_result or compare with later snapshot). It does not explicitly state when not to use, 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.
browser_switch_tabSwitch Browser TabA
Use when a full-profile workflow must make a previously discovered page the active target. Preconditions: obtain a valid page ID from browser_list_tabs or browser_attach_cdp. Next: confirm selection with browser_get_state before acting. Sensitivity: the selected tab may contain private content or an authenticated session.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutability (readOnlyHint=false) but no destructive effects. The description adds value by warning about private/authenticated sessions, which annotations do not cover. However, it does not explicitly state that the tool changes the active tab and preserves previous tab state, which would further 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?
Three concise, front-loaded sentences. First sentence states purpose, second gives preconditions/next steps, third handles sensitivity. No wasted words; 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?
Given the tool's simplicity (one parameter, no nested objects), the description covers purpose, preconditions, post-actions, and sensitivity. Output schema exists (not shown) but description does not need to explain it. Complete for an AI agent to correctly invoke.
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 0%, so the description must compensate. It explains that pageId must be obtained from browser_list_tabs or browser_attach_cdp, providing essential context. While it does not detail format, the source guidance sufficiently compensates for the lack of 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 verb ('make a previously discovered page the active target'), specifies the resource (browser tab), and distinguishes from siblings like browser_new_tab and browser_close_tab by requiring a pre-obtained page ID and recommending a follow-up confirmation with browser_get_state.
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 'Use when a full-profile workflow must make a previously discovered page the active target', provides preconditions (obtain page ID from specific tools), and advises confirming selection afterward. Also includes a sensitivity warning about private/authenticated content, giving clear when-to-use and precautions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeType Into ElementBDestructive
Use when text must be entered into a known input during a reproduction. Preconditions: an active page and precise selector are required; use only data intended for the authorized target. Next: continue with the next action or observe the resulting request and DOM changes. Sensitivity: typed values may be captured in DOM, console, network, screenshots, or trace artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| delayMs | No | ||
| selector | Yes | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
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 value by noting that typed values may be captured in DOM, console, network, screenshots, or trace artifacts, which is beyond what annotations provide. 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?
The description is three sentences with good front-loading of purpose. It is concise but could be slightly tighter, e.g., combining the sensitivity note with behavioral transparency. Overall, 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 0% schema coverage and moderate complexity, the description provides preconditions, next steps, and side effects. However, it omits details like whether the input is cleared before typing or parameter constraints (e.g., delayMs range is useful but not explained). Output schema exists but is not referenced.
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 0%, so the description must compensate. It mentions the requirement for a 'precise selector' and using 'data intended for the authorized target,' but does not explain delayMs or timeoutMs. The meaning of parameters is mostly inferred from names, with little added value.
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 types text into an input element during a reproduction. It includes preconditions like 'active page and precise selector' which help clarify the resource. However, it does not explicitly distinguish from siblings like browser_press or browser_fill_form, which might also involve text input.
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 ('when text must be entered... during a reproduction') and mentions preconditions. However, it lacks explicit guidance on when not to use it or alternatives, such as using browser_press for keystrokes or browser_fill_form for form filling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_upload_fileUpload Local FileADestructive
Use when a full-profile authorized test explicitly requires providing local files to a page file input. Preconditions: acknowledgeFileAccess: true, an exact selector, and intended local paths are required. Next: continue the upload flow and verify the resulting request or UI state. Sensitivity: this sends local file contents to the target site and can expose private data.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| selector | Yes | ||
| timeoutMs | No | ||
| acknowledgeFileAccess | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint=true, meaning the tool can modify state. The description adds critical behavioral context by warning that it 'sends local file contents to the target site and can expose private data.' This goes beyond the annotations by highlighting security implications. 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 three sentences long, with the most critical information (usage condition) in the first sentence. It efficiently communicates preconditions, next steps, and a security warning without redundancy. 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 the tool's destructive nature and 4 parameters, the description covers purpose, preconditions, next steps, and sensitivity. It omits details about the return value (though an output schema exists) and the timeout parameter. Still, it provides sufficient context for an agent to use the tool correctly in most 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?
The input schema has 0% description coverage, so the description must compensate. It mentions the key parameters: 'acknowledgeFileAccess: true, an exact selector, and intended local paths' – which covers the required ones and the boolean flag. However, it does not explain the 'timeoutMs' parameter or provide details on the selector format. This is adequate but not exhaustive.
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: uploading local files to a page file input. It uses a specific verb ('upload') and resource ('local files'), and it distinguishes itself from sibling browser tools (e.g., browser_type, browser_click) by being the only one dedicated to file uploads. The context 'full-profile authorized test' adds precision.
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 ('when a full-profile authorized test explicitly requires providing local files to a page file input') and provides preconditions (acknowledgeFileAccess: true, exact selector, intended local paths). It also suggests next steps ('continue the upload flow and verify'). However, it does not explicitly exclude cases where other tools might be better suited, but given its unique function, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_waitWait for Browser ConditionARead-onlyIdempotent
Use when the reproduction needs an explicit selector, URL, quiet-period, or bounded timeout wait instead of an arbitrary sleep. Preconditions: an active page is required and mode-specific selector or pattern inputs should be narrow. Next: perform the next action immediately after the expected condition is reached. Sensitivity: waiting observes live page and network state but does not itself redact any subsequently captured data.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| delayMs | No | ||
| pattern | No | ||
| quietMs | No | ||
| selector | No | ||
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. Description adds that waiting observes live page/network but does not redact captured data, providing extra 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?
Extremely concise: two sentences plus preconditions and next steps. Every sentence adds value, no filler. Information is front-loaded and well-organized.
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 complexity (6 params, 1 enum) and existing annotations + output schema, description covers when, preconditions, next steps, and behavioral note. Lacks only some edge-case or error details, but overall 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 description coverage is 0%. Description only mentions modes (selector, URL, quiet-period, timeout) and hints at narrow inputs. Does not explain parameters like delayMs, pattern, quietMs, timeoutMs, or their significance.
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 tool is for waiting for explicit browser conditions (selector, URL, quiet-period, timeout) instead of arbitrary sleep. Verb+resource is specific and distinguishes from other 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?
Provides clear preconditions (active page required, narrow inputs) and next steps (perform action after condition). Implicitly contrasts with arbitrary sleep, but does not explicitly list alternative tools or conditions to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_downloadWait for DownloadADestructive
Use when a browser action should create a download and the saved file, filename, or timing must be verified. Preconditions: an active page is required; when triggerSelector is used it must identify the authorized download action, and raw capture requires acknowledgement. Next: inspect browser_get_downloads or the saved file through an appropriate local-file workflow. Sensitivity: downloaded files may contain sensitive application data and the optional trigger can cause external effects.
| Name | Required | Description | Default |
|---|---|---|---|
| outputDir | No | ||
| timeoutMs | No | ||
| triggerSelector | No | ||
| suggestedFilename | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and openWorldHint=true. Description adds context: downloaded files may contain sensitive data, and trigger can cause external effects. 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?
Three sentences, each meaningful, front-loaded with purpose. 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?
Covers preconditions, next steps, sensitivity, and external effects. Output schema likely documents return values. Adequate for a download-waiting tool given the available structured data.
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 0%. Description only vaguely references triggerSelector and acknowledgeRawCapture, leaving 5 parameters largely unexplained. Insufficient for parameter 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?
Explicitly states purpose: waiting for a download triggered by a browser action to verify file, filename, or timing. Clearly distinguishes from sibling tools like browser_wait_for_response.
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 clear when-use guidance, preconditions (active page, authorized triggerSelector, acknowledgement for raw capture), and next steps (inspect browser_get_downloads or local-file workflow). Implicitly tells 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.
browser_wait_for_responseWait for Network ResponseARead-onlyIdempotent
Use when an action is expected to produce a response and timing or endpoint matching is the central question. Preconditions: start this wait before triggering the relevant action and provide narrow URL, method, or status filters. Next: correlate the matched response with the action or use the body variant only when content matters. Sensitivity: response metadata can expose private URLs, headers, status details, and timing information.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ||
| status | No | ||
| urlRegex | No | ||
| timeoutMs | No | ||
| urlContains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds valuable context about sensitivity (exposure of private URLs, headers, timing), which alerts to potential data exposure beyond what annotations convey. 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?
Four sentences with clear sections: purpose, preconditions, next step, sensitivity. No redundancy. Could be slightly more concise by merging sentences, but overall well-structured 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 5 params with no schema descriptions, the description should cover parameter specifics but doesn't. It covers usage context, preconditions, and sensitivity. With an output schema present, the return structure is likely explained elsewhere. Adequate but missing parameter details 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?
Schema has 5 params with 0% description coverage. The description only generically mentions 'narrow URL, method, or status filters' without detailing any parameter's meaning or usage. It fails to clarify urlRegex vs urlContains, timeoutMs, or method options. The description does not compensate for the missing 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 waits for a network response matching criteria. It distinguishes from sibling 'browser_wait_for_response_body' by mentioning 'use the body variant only when content matters', indicating this one focuses on metadata. However, it lacks a succinct verb+resource phrasing like 'wait for network response matching filters'.
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 preconditions are given (start wait before triggering action, provide narrow filters) and a next step (correlate response). It hints at sibling alternative ('use the body variant'). Could be more explicit about when not to use this tool, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_response_bodyWait for Response BodyARead-onlyIdempotent
Use when an action is expected to produce one response whose raw or parsed body is directly required for an API, authentication, redirect, or payload diagnosis. Preconditions: start the wait before the action, use narrow filters, and pass acknowledgeRawCapture: true on an authorized system. Next: extract only the needed fields and prefer trace search for multi-request investigations. Sensitivity: response bodies may contain credentials, personal data, application secrets, or large binary content.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ||
| status | No | ||
| maxBytes | No | ||
| urlRegex | No | ||
| parseJson | No | ||
| timeoutMs | No | ||
| urlContains | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosures sensitivity of response bodies (credentials, personal data, secrets, binary content) beyond annotations, which already mark it as read-only, open-world, idempotent, and non-destructive. 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?
Description is concise and front-loaded with purpose, but slightly dense with multiple pieces of advice. Every sentence adds value, though a more structured format could improve readability.
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 and sensitivity well but lacks parameter documentation for 8 parameters with 0% schema coverage. Output schema exists but not described, leaving some gaps for full contextual 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?
Schema coverage is 0%, and the description only mentions 'narrow filters' and 'acknowledgeRawCapture' without explaining other parameters (method, status, urlRegex, etc.). This leaves agents with insufficient guidance for correct parameter usage.
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 a single response body for API, authentication, redirect, or payload diagnosis. It distinguishes from sibling tools by specifying 'one response' and referencing trace search for multi-request investigations.
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 preconditions (start wait before action, use narrow filters, pass acknowledgeRawCapture on authorized system) and guidance to prefer trace search for multi-request investigations, offering clear when-to-use and when-not-to-use directions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_exportExport Trace BundleA
Use when an authorized handoff or offline analysis explicitly requires a portable ZIP of a completed trace. Preconditions: a trace session must exist and the destination must be a protected local path. Next: share the bundle only through an approved sensitive-data channel and remove it when no longer needed. Sensitivity: the ZIP can contain every captured secret, body, cookie, DOM value, screenshot, and WebSocket frame.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| sessionId | No | ||
| outputPath | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) indicate it's a write operation but not destructive. The description adds critical context: the ZIP can contain all captured secrets, bodies, cookies, DOM, screenshots, and WebSocket frames, plus requires a protected destination. This goes well beyond annotations and warns of high sensitivity.
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 four sentences and front-loads purpose. It is concise but could be better structured (e.g., bullet points for preconditions). Still, 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 the presence of an output schema (return values not needed), the description adequately covers purpose, preconditions, sensitivity, and post-export actions. However, with 0% schema parameter coverage, the omission of sessionId leaves a completeness gap for a tool with 3 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?
Schema coverage is 0% (no descriptions in schema). The description mentions 'ZIP' (matching format) and 'protected local path' (related to outputPath) but does not explain sessionId or parameter details. With 3 undocumented parameters, the description should provide more guidance.
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 ZIP of a completed trace for authorized handoff or offline analysis. It uses specific verb ('export'), resource ('trace bundle'), and format ('ZIP'), distinguishing it from sibling monitor tools that start/stop recording or list sessions.
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 ('authorized handoff or offline analysis'), preconditions (trace session must exist, protected local path), and next steps (share via approved channel, remove after use). It lacks explicit alternatives but the context is clear enough 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.
monitor_get_manifestGet Trace ManifestARead-onlyIdempotent
Use when a full-profile workflow needs exact capture configuration, file inventory, schema, timing, or session metadata. Preconditions: a completed or active trace session must exist. Next: prefer monitor_get_summary for diagnosis and use manifest paths only to target later reads. Sensitivity: the manifest can expose local paths, target URLs, capture options, and trace metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context about data sensitivity ('can expose local paths, target URLs, capture options, and trace metadata'), which goes beyond annotations. No contradictions; could mention that the tool returns a manifest file.
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 purpose, followed by preconditions, usage guidance, and sensitivity note. No wasted words; every sentence adds value. Structure is logical and scannable.
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, preconditions, post-invocation workflow, and data sensitivity. Output schema exists (not shown here) so return details are not needed. The main gap is parameter description, but overall it provides sufficient context for a low-complexity tool with good 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 description coverage is 0%, so the description must compensate. While it implies the sessionId parameter must correspond to an existing trace session ('Preconditions: a completed or active trace session must exist'), it does not explicitly name or describe the parameter, its format, or how to obtain a valid session ID. This is insufficient for a single-parameter tool.
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 retrieves a trace manifest containing exact capture configuration, file inventory, schema, timing, and session metadata. It uses a specific verb ('get') and resource ('manifest'), and distinguishes from sibling tools like monitor_get_summary and monitor_read_artifact.
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 when-to-use guidance ('Use when a full-profile workflow needs exact capture configuration...'), preconditions ('a completed or active trace session must exist'), and next-step recommendations ('prefer monitor_get_summary for diagnosis and use manifest paths only to target later reads'). This fully covers usage context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_get_summarySummarize TraceARead-onlyIdempotent
Use when a stopped multi-step trace needs the first compact AI-readable explanation of actions, DOM changes, requests, responses, WebSockets, console, and frames. Preconditions: complete the reproduction and call monitor_stop first whenever possible. Next: use monitor_search_events or monitor_search_bodies only for questions the summary does not answer. Sensitivity: summaries minimize volume but may still include sensitive URLs, text, values, and event details.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context that summaries minimize volume but may include sensitive details, and that this is the first explanation step. This augments the behavioral profile 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 is three sentences, each earning its place: use case, preconditions/next steps, and sensitivity note. It is front-loaded and concise 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?
The tool has one parameter and many siblings. The description covers preconditions, next steps, and sensitivity. It does not explain the output format, but an output schema exists. Given the complexity, it is reasonably 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 description coverage is 0% and the description does not explain the single parameter (sessionId), though it is self-explanatory. Given the low coverage, the description should have provided at least a brief explanation of the parameter's role.
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: to provide a compact AI-readable summary of a stopped multi-step trace. It identifies the resource (trace) and action (summarize), and distinguishes from sibling tools like monitor_search_events and monitor_search_bodies.
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 (after a stopped trace), preconditions (complete reproduction and call monitor_stop first), and alternatives for further detail (monitor_search_events or monitor_search_bodies). This provides comprehensive guidance for proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_list_sessionsList Trace SessionsARead-onlyIdempotent
Use when a full-profile workflow must enumerate trace sessions created by the current MCP process. Preconditions: at least one trace session should exist. Next: select a session ID for manifest, summary, search, read, or export operations. Sensitivity: session paths and metadata may reveal local directories and sensitive investigation context.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context about session scope (current MCP process) and potential sensitivity of paths/metadata, which goes beyond annotation info.
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 efficient with two sentences, front-loading the purpose, followed by preconditions and next steps, and ending with sensitivity context. 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 parameters, presence of annotations, and existence of an output schema, the description covers all necessary contextual aspects: use case, preconditions, next steps, and sensitivity. The output schema likely covers return value 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?
With zero parameters and 100% schema coverage, the description does not need to add parameter information. The baseline for 0 parameters is 4, and no additional parameter details are required.
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 enumerates trace sessions created by the current MCP process, distinguishing it from sibling tools by specifying the full-profile workflow context and preconditions.
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 ('Use when a full-profile workflow must enumerate trace sessions') and preconditions. It does not explicitly mention alternatives, but the sibling tools are mostly unrelated browser operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_read_artifactRead Trace ArtifactARead-onlyIdempotent
Use when summary and targeted search have identified one exact body, DOM, screenshot, eval, storage-state, or snapshot artifact needed to finish the diagnosis. Preconditions: acknowledgeRawCapture: true and a trace-contained path or reference are required; keep maxBytes bounded. Next: extract only the necessary finding and do not dump the artifact into source control or broad logs. Sensitivity: artifacts are raw and can contain reusable credentials, personal data, secrets, screenshots, or full application content.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | ||
| path | No | ||
| asText | No | ||
| maxBytes | No | ||
| parseJson | No | ||
| sessionId | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's addition of sensitivity (raw artifacts may contain credentials, personal data, secrets) and preconditions adds beyond annotations. 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?
Three sentences, front-loaded with usage condition, every sentence adds value: precondition, instruction, sensitivity. 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 read tool with 7 params and output schema, the description covers purpose, usage, preconditions, sensitivity. Missing detailed explanation of all parameters, but output schema likely covers return structure.
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 0%, so description must compensate. It mentions acknowledgeRawCapture (precondition), maxBytes (bounded), and path/ref (trace-contained path or reference), but does not explain asText, parseJson, sessionId, or the nested ref structure. Partial 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 a specific artifact (body, DOM, screenshot, etc.) identified by summary/search, distinguishing it from siblings like monitor_read_events or monitor_search_bodies.
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 ('Use when summary and targeted search have identified one exact artifact...'), provides preconditions (acknowledgeRawCapture: true, bounded maxBytes), and gives instructions (extract only necessary finding, no dumping). Does not explicitly list alternatives, but context implies summary/search tools should be used first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_read_eventsRead Raw Trace EventsARead-onlyIdempotent
Use when a full-profile investigation needs paginated raw events after summary and search have identified the exact stream and range. Preconditions: a trace session and explicit stream are required; keep offset and limit narrow. Next: correlate the returned sequence with a targeted artifact only if necessary. Sensitivity: raw events may contain DOM text, headers, form values, cookie metadata, console output, and WebSocket payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| stream | Yes | ||
| sessionId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safe, idempotent, non-destructive behavior. Description adds critical sensitivity context about raw event content (DOM text, headers, etc.), enhancing 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?
Four sentences, each delivering value: purpose, preconditions, next steps, sensitivity. Front-loaded and 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 output schema exists, description covers all needed aspects: purpose, guidelines, preconditions, and sensitivity. Complete for the tool's role.
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 0% and description does not explain parameters like stream, limit, offset, or sessionId. Missed opportunity to add 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 tool is for reading paginated raw events after summary and search identification. It distinguishes from siblings by specifying the exact use case.
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 (after summary and search), preconditions (trace session and stream required), narrow offset/limit, and next steps. Provides comprehensive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_search_bodiesSearch Request and Response BodiesARead-onlyIdempotent
Use when authentication, API, GraphQL, request, or response content is directly relevant and body capture was enabled for the trace. Preconditions: acknowledgeRawCapture: true and a precise text query are required on an authorized session. Next: use monitor_read_artifact only for the specific matching body reference that answers the question. Sensitivity: request and response bodies can contain credentials, personal data, application secrets, and large raw payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| limit | No | ||
| method | No | ||
| status | No | ||
| sinceSeq | No | ||
| sessionId | No | ||
| urlContains | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds valuable behavioral context beyond this: preconditions (acknowledgeRawCapture, precise text query, authorized session), a sensitivity warning about credentials and personal data, and the workflow hint to use monitor_read_artifact next. 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 paragraph, front-loading purpose and usage. While it lists multiple content types (authentication, API, GraphQL, etc.), it remains fairly concise without redundant phrases. It could be slightly more structured, but it effectively communicates core information 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 the tool has 8 parameters and an output schema, the description covers the purpose, usage conditions, and sensitivity, but lacks detail on parameter behavior (e.g., limit, filtering). The output schema is not detailed in the input, but the description doesn't clarify return values or pagination. It leaves gaps for an agent to fully understand 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?
Schema description coverage is 0%, so the description carries the full burden. However, it only mentions two parameters (text and acknowledgeRawCapture) implicitly through preconditions, leaving six other parameters (limit, method, status, sinceSeq, sessionId, urlContains) undocumented. This fails to compensate for the schema's lack of 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 searches request/response bodies, specifies when to use (when body content is relevant and capture enabled), and differentiates by providing preconditions and a follow-up tool (monitor_read_artifact). It pinpoints a specific resource and action, distinguishing it from sibling tools 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 provides explicit usage context: when body content is directly relevant and capture enabled, requiring acknowledgeRawCapture: true, a precise text query, and an authorized session. It also suggests the next step (monitor_read_artifact). While it doesn't explicitly state when not to use, the conditions imply exclusions, and it offers clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_search_eventsSearch Trace EventsARead-onlyIdempotent
Use when a trace summary leaves a targeted question about an endpoint, DOM text, event type, sequence boundary, redirect, or WebSocket message. Preconditions: a trace session must exist; provide the narrowest useful stream and filters. Next: read only the matching artifact or small event range if more detail is needed. Sensitivity: matches may expose raw event fields, inline DOM content, URLs, headers, values, or payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| type | No | ||
| limit | No | ||
| stream | No | ||
| sinceSeq | No | ||
| sessionId | No | ||
| urlContains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds critical behavioral context: 'matches may expose raw event fields, inline DOM content, URLs, headers, values, or payloads.' This warns about data exposure beyond what annotations convey, and also mentions preconditions.
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, well-structured paragraph of about 100 words, logically covering when to use, preconditions, next steps, and sensitivity. No redundant information, though the 'Next:' part is slightly instructional and could be trimmed.
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 an output schema, the description covers when to use and sensitivity but lacks guidance on filtering capabilities like urlContains, type, or limit. It mentions 'stream and filters' but does not elaborate on available filter parameters, leaving some gaps in understanding the tool's full 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?
Schema description coverage is 0% for 7 parameters. The description only vaguely hints at using 'stream and filters' but does not explain individual parameters like limit, sinceSeq, urlContains, type, or sessionId. With low coverage, the description should compensate more but fails to provide sufficient detail for most 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 identifies the tool as a search over trace events, stating exactly when to use it: 'when a trace summary leaves a targeted question about an endpoint, DOM text, event type, sequence boundary, redirect, or WebSocket message.' This distinguishes it from sibling tools like monitor_read_events (general reading) and monitor_search_bodies (searching bodies).
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 usage guidance is provided: 'Use when a trace summary leaves a targeted question...' along with preconditions ('a trace session must exist; provide the narrowest useful stream and filters') and next steps ('read only the matching artifact or small event range'). This helps the agent decide when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_startStart Raw TraceA
Use when a multi-step browser failure, transient DOM change, network race, WebSocket sequence, redirect, download, or authentication flow must be reproduced end to end. Preconditions: an authorized browser must be active and acknowledgeRawCapture: true is required; normally set captureCookies: false and captureBodies: false unless directly relevant. Next: perform the complete reproduction with RawTrace browser actions, then call monitor_stop before reading monitor_get_summary. Sensitivity: trace streams can capture raw DOM, headers, values, frames, console data, cookies, bodies, and WebSocket messages depending on options.
| Name | Required | Description | Default |
|---|---|---|---|
| outputDir | No | ||
| captureDom | No | ||
| maxBodyBytes | No | ||
| captureBodies | No | ||
| captureFrames | No | ||
| captureConsole | No | ||
| captureCookies | No | ||
| captureNetwork | No | ||
| captureWebSockets | No | ||
| acknowledgeRawCapture | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false. Description adds that trace streams can capture raw DOM, headers, values, frames, etc., which goes beyond annotations and warns about sensitivity.
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 informative and structured with preconditions, next steps, and a sensitivity note. It is slightly longer than necessary but 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 the tool's complexity (10 parameters, no schema descriptions) and the presence of an output schema, the description covers usage context and behavioral aspects well, though parameter details are 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?
With 0% schema description coverage, the description partially compensates by mentioning captureCookies, captureBodies, and acknowledgeRawCapture, but does not explain other parameters like outputDir, maxBodyBytes, captureDom, etc.
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 that this tool is for reproducing multi-step browser failures, transient DOM changes, network races, etc., distinguishing it from sibling tools like monitor_stop and monitor_get_summary.
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 when-to-use scenarios and preconditions (authorized browser, acknowledgeRawCapture: true), and outlines next steps. It lacks explicit when-not-to-use, but the context is specific enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_stopStop Raw TraceA
Use when the complete reproduction has finished and buffered trace events must be flushed before analysis. Preconditions: a monitor should be active; avoid extra unrelated browser actions before stopping. Next: call monitor_get_summary first, then targeted search tools, and read a raw artifact only when necessary. Sensitivity: the resulting trace directory is sensitive and must not be committed or broadly shared.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint=false, which aligns with the non-destructive flushing behavior. The description adds context about sensitivity (trace directory must not be committed) and preconditions, enhancing transparency beyond annotations. However, it doesn't detail the flushing mechanics or side effects beyond sensitivity.
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 yet comprehensive: it front-loads the purpose, then lists preconditions, next steps, and sensitivity. Every sentence serves a clear function, with no redundancy or 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?
For a simple stop tool with no parameters and an output schema present, the description covers all necessary aspects: when to use, prerequisites, follow-up actions, and data sensitivity. It is fully complete given 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?
The tool has no parameters, so the description cannot add param-level detail. Schema coverage is 100% vacuously. The description adds meaning by explaining the tool's purpose and usage context, which is sufficient for a parameterless tool.
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: to flush buffered trace events after reproduction finishes. It uses a specific verb ('use when') and resource ('buffered trace events'), distinguishing it from siblings like monitor_start and monitor_get_summary.
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 usage conditions are provided: use after reproduction finishes, preconditions (monitor active, avoid extra actions), and next steps (call monitor_get_summary first, then targeted searches, read artifact only when necessary). This clearly tells when to use and what to do next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
59 tool updates
v0.3.0- Changed
browser_attach_cdp1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_clear_cookies1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_click1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_close1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_close_tab1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_eval1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_export_storage_state1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_fill_form1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_accessibility1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_cookies1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_dom1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_downloads1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_elements1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_forms1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_network1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_state1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_get_storage1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_go_back1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_go_forward1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_grant_permissions1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_handle_dialog1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_hover1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_import_storage_state1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_launch1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_list_tabs1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_navigate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_new_tab1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_observe_action_result1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_optimize_selector1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_poll_until1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_press1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_reload1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_screenshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_screenshot_annotated1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_scroll1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_select_option1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_set_cookies1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_set_geolocation1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_set_storage1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_set_viewport1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_switch_tab1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_type1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_upload_file1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_wait1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_wait_for_download1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_wait_for_response1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
browser_wait_for_response_body1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_export1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_get_manifest1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_get_summary1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_list_sessions1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_read_artifact1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_read_events1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_search_bodies1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_search_events1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_start1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
monitor_stop1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "details": {}, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "result": {} + }, + "required": [ + "ok" + ], + "type": "object" +}
59 tool updates
v0.2.1- First observed
browser_attach_cdp - First observed
browser_check - First observed
browser_clear_cookies - First observed
browser_click - First observed
browser_close - First observed
browser_close_tab - First observed
browser_eval - First observed
browser_export_storage_state - First observed
browser_fill_form - First observed
browser_get_accessibility - First observed
browser_get_cookies - First observed
browser_get_dom - First observed
browser_get_downloads - First observed
browser_get_elements - First observed
browser_get_forms - First observed
browser_get_network - First observed
browser_get_state - First observed
browser_get_storage - First observed
browser_go_back - First observed
browser_go_forward - First observed
browser_grant_permissions - First observed
browser_handle_dialog - First observed
browser_hover - First observed
browser_import_storage_state - First observed
browser_launch - First observed
browser_list_tabs - First observed
browser_navigate - First observed
browser_new_tab - First observed
browser_observe_action_result - First observed
browser_optimize_selector - First observed
browser_poll_until - First observed
browser_press - First observed
browser_reload - First observed
browser_screenshot - First observed
browser_screenshot_annotated - First observed
browser_scroll - First observed
browser_select_option - First observed
browser_set_cookies - First observed
browser_set_geolocation - First observed
browser_set_storage - First observed
browser_set_viewport - First observed
browser_snapshot - First observed
browser_switch_tab - First observed
browser_type - First observed
browser_upload_file - First observed
browser_wait - First observed
browser_wait_for_download - First observed
browser_wait_for_response - First observed
browser_wait_for_response_body - First observed
monitor_export - First observed
monitor_get_manifest - First observed
monitor_get_summary - First observed
monitor_list_sessions - First observed
monitor_read_artifact - First observed
monitor_read_events - First observed
monitor_search_bodies - First observed
monitor_search_events - First observed
monitor_start - First observed
monitor_stop
TDQS
Scored across 59 tools
Each of the 59 tools has a distinct, well-defined purpose with clear descriptions that prevent overlap. For example, browser_get_state, browser_snapshot, browser_get_dom, and browser_get_elements each target different aspects of page information, and actions like browser_observe_action_result serve a unique before/after diff role.
All tools follow a consistent verb_noun pattern with underscores, using logical prefixes ('browser_' for browser actions, 'monitor_' for trace management). This predictability makes it easy for an agent to infer tool purpose from the name.
At 59 tools, the count is high but appropriate for the comprehensive browser automation and tracing coverage. Each tool addresses a specific need, and the complexity of the domain justifies the number, though it exceeds the typical 3-15 range.
The tool set covers the full lifecycle of browser interactions: launching, navigating, inspecting, acting, waiting, and tracing. It includes advanced features like storage state management, permissions, geolocation, and detailed trace analysis, leaving no obvious gaps for its stated purpose.
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
Live browser debugging for AI assistants — DOM, console, network via MCP.
AI agent run monitoring with incident replay and SLA receipts.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Debug webhooks from your AI agent: inspect and replay captured webhooks on localhost.
Related MCP Servers
- AlicenseAqualityBmaintenanceRecords masked browser sessions (rrweb DOM + console + network) to a local SQLite store and exposes them to AI coding agents via stdio MCP. Fully local, no SaaS, no telemetry.107Apache 2.0
- AlicenseNot gradedqualityDmaintenanceRecords, replays, and correlates visual and API events in the browser, enabling AI assistants to understand which API calls feed which UI elements.MIT
- AlicenseNot gradedqualityAmaintenanceGives AI coding agents eyes into running applications by recording browser activity and providing session investigation tools for debugging.93MIT
- AlicenseNot gradedqualityCmaintenanceEnables recording and analyzing AI agent execution traces, including event logging, metric computation, loop detection, and JSON export for debugging agent behavior.MIT