Mithwire MCP
Click on "Deploy 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., "@Mithwire MCPopen example.com, click the login link, and check console errors"
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.
π‘ What is Mithwire MCP?
mithwire is a driverless CDP browser automation engine for Python. Mithwire MCP is the Model Context Protocol server that exposes Mithwire's browser control, DOM inspection, and environment-emulation capabilities directly to AI clients such as Claude, Cursor, and autonomous coding agents.
Instead of manually writing fragile browser-automation glue code, you can connect the MCP server to an AI agent to build, execute, test, and debug web workflows interactively.
Your AI agent can invoke structured MCP tools (session_start, browser_navigate, browser_click, browser_snapshot, browser_network_requests) to explore pages, verify UI flows, capture console and network logs, and inspect DOM state in real time.
Related MCP server: Browser-MCP Navigator
π οΈ Built for Developing & Debugging Automations
Mithwire MCP was designed as an interactive development and QA harness for AI agents and developers:
π€ Autonomous Workflow Authoring: Give your AI agent a high-level goal ("Verify the checkout flow and capture any network errors"). The agent uses MCP tools to navigate, inspect selectors, verify state, and iterate until the test passes.
π Live Inspection & Diagnostics: Agents can capture interactive DOM snapshots, monitor JavaScript console errors, record full CDP network traces, and inspect storage/cookies at any point during execution.
π₯οΈ Visual VNC Debugging: Pre-packaged with an embedded noVNC web viewer (
http://localhost:6080/vnc.html). Watch your AI agent interact with the browser live in your desktop browser.π§ͺ E2E & Localization Testing: Prototype and debug end-to-end browser tests across timezones, locales, and proxy egress locations.
π₯ Why Driverless CDP Matters for AI Agents
When AI agents run browser workflows using legacy WebDriver stacks or stateless fetchers, several common failure modes arise:
β WebDriver Artifacts & Drift: Standard WebDriver binaries inject
navigator.webdriver = trueand driver globals, and document-level JS shims fail to propagate to Web Workers and HTTP Client Hints.β Proxy & Locale Mismatches: Testing through regional proxies without aligning timezone, locale, and WebRTC settings causes inconsistent localization state.
β State Loss Across Turns: AI agents frequently lose cookies, session state, or local storage between execution turns or subagent invocations.
π‘οΈ The Mithwire MCP Architecture
Mithwire MCP addresses these challenges natively for AI agent workflows:
β‘ Driverless CDP Engine: Built on Mithwireβspeaks raw Chrome DevTools Protocol with no WebDriver or Selenium dependency.
π§ Dual Engine Modes: Support for both standard
cdpmode (stock Chrome/Chromium) and source-patchedstealthmode (CloakBrowser) for cross-OS environment emulation.π Automatic Proxy & Egress Alignment: Validates proxy connectivity before launching Chromium and optionally aligns timezone, locale, languages, and geolocation to match the proxy region.
π€ Persistent Profiles & State Store: Reusable browser profiles (
profiles/) store cookies, localStorage, proxy bindings, and environment configurations across agent runs.π WebRTC Leak Protection: Configurable STUN/UDP candidate filtering to prevent host interface leaks during proxied testing.
β‘ Engine Modes & Capabilities
Configure execution engines on a per-session or per-profile basis:
Engine Mode | Binary | Capabilities | Best Suited For |
| Stock Chrome / Chromium | Fast, reliable CDP | Local workstations, remote Linux servers, E2E testing, fast script prototyping. |
| C++ source-level configuration for Canvas, WebGL GPU strings, AudioContext, native fonts, and viewport geometry. | Cross-OS environment emulation on Linux servers and browser-fingerprint consistency research. |
β¨ Key Features & Capabilities
π€ Complete Agent Toolset: Full toolsuite covering navigation, DOM querying, clicking, typing, scrolling, screenshots, network capture, and JS evaluation.
ποΈ Centralized State Store: Default
~/.mithwire-mcpdirectory manages persistent profiles, proxy registries, and cookie import/export files.π°οΈ Proxy Registry & Alignment: Store proxy configurations once and reference them by name, with optional pre-flight connectivity and locale alignment.
π³ Docker-Ready with Visual Debugging: Pre-configured Docker container with Xvfb, Chromium, and noVNC web viewer (
http://localhost:6080/vnc.html).
π Installation
# Standard install (CDP mode)
pip install mithwire-mcp
# With source-patched Chromium support (CloakBrowser)
pip install "mithwire-mcp[stealth]"π» MCP Client Configuration
Add Mithwire MCP to your MCP client config (e.g. Cursor, Claude Desktop):
{
"mcpServers": {
"mithwire-mcp": {
"command": "mithwire-mcp",
"args": ["--transport", "stdio"]
}
}
}π³ Running in Docker (With Visual VNC Debugging)
For isolated execution or local visual observation:
# Pull public Docker image
docker pull ghcr.io/elendil-tech/mithwire-mcp:latest
# Run local dev container with noVNC enabled
docker compose -f docker-compose.dev.yml up -d --buildEndpoints:
π MCP Server (Streamable HTTP):
http://localhost:7867π₯οΈ noVNC Visual Viewer:
http://localhost:6080/vnc.html
π§° Available MCP Tools Reference
session_start- Launch a new browser session (ephemeral or persistent profile)session_list- List active browser sessionssession_get- Get session status and identity metadatasession_set_fingerprint- Override the active session environment fingerprintsession_rotate_proxy- Rotate the proxy exit IP and optionally re-align locale/timezonesession_state_paths- Show state directory layout (profiles, proxies, cookies)session_set_policy/session_get_policy- Set or read per-session security policysession_set_download_dir- Change the session download directorysession_warmup- Visit initial pages to initialize session statesession_stop- Close a specific sessionsession_stop_all- Terminate all running sessions
session_profile_list/session_profile_get/session_profile_set/session_profile_delete- CRUD for persistent profilessession_profile_regenerate_fingerprint- Regenerate a profile's fingerprint via BrowserForgesession_proxy_list/session_proxy_get/session_proxy_set/session_proxy_delete- Proxy registry CRUD
browser_url- Get the current page URLbrowser_navigate/browser_back/browser_forward/browser_reload- Navigationbrowser_snapshot- Take interactive DOM snapshot with element referencesbrowser_query- Find elements by CSS selector or textbrowser_click/browser_mouse_click/browser_mouse_move/browser_press_hold/browser_type- User interactionsbrowser_scroll- Scroll the page or an elementbrowser_handle_dialog- Accept or dismiss browser dialogsbrowser_set_file_input- Set files on a file input elementbrowser_take_screenshot- Capture page screenshot
browser_tab_list/browser_tab_current- List open tabs or get the active tabbrowser_tab_new/browser_tab_switch/browser_tab_close- Create, switch, or close tabs
browser_wait- Wait for a fixed durationbrowser_wait_for_selector- Wait until a CSS selector appearsbrowser_wait_for_text- Wait until text appears on the pagebrowser_wait_for_url- Wait until the URL matches a patternbrowser_wait_for_function- Wait until a JS expression returns truthybrowser_wait_for_network_idle- Wait until network activity settles
browser_cookies_get/browser_cookies_set/browser_cookies_save/browser_cookies_clearbrowser_storage_get/browser_storage_set/browser_storage_clearbrowser_console_messages- Read captured console log messagesbrowser_network_requests- List captured network requestsbrowser_network_capture_start/browser_network_capture_get/browser_network_capture_stop/browser_network_capture_statusbrowser_downloads- List downloaded files
browser_html- Get the raw HTML of the current page or an elementbrowser_evaluate- Execute arbitrary JavaScript in the page contextsession_trace_start/session_trace_stop/session_trace_get- Record and inspect CDP tracessession_trace_export/session_trace_replay- Export or replay recorded traces
π§Ή Deterministic Process Lifecycle (No Orphaned Chrome)
Every session owns the Chrome process it launched, and the server guarantees none outlives it:
A
session_startthat fails, times out, or is cancelled by the client tears down its half-started browser.session_stop,session_stop_all, and server shutdown close browsers concurrently and delete their temporary profiles.On
SIGTERM/SIGHUP/SIGINTthe server stops every browser immediately and exits cleanly.If the server itself is killed outright (
SIGKILL, OOM, a crash), a lightweight watchdog process from the engine terminates its launched browsers and removes their temporary profiles. SetMITHWIRE_NO_EXIT_GUARD=1to disable it.
scripts/smoke_process_lifecycle.py verifies all of these guarantees against a real stdio server and a local Chrome instance in CI.
βοΈ Dual-Use & Responsible Use Notice
Mithwire MCP is a dual-use browser automation and debugging bridge intended for interactive software testing, QA validation, browser-fingerprint research, and authorized AI agent workflows.
Authorized Use Only: Users are responsible for complying with applicable laws and the Terms of Service of any websites or systems accessed through this MCP server.
No Unlawful Circumvention or Abuse: This software must not be used for unauthorized access, credential stuffing, spam, coordinated inauthentic activity, or disrupting third-party services.
Security & Abuse Contact: To report a security vulnerability or a third-party abuse inquiry, please see SECURITY.md.
π License
Distributed under the MIT License. Powered by mithwire (AGPL-3.0).
Available Tools
70 toolsbrowser_backC
Navigate one step back in browser history.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only restates the navigation action. It says nothing about what happens at the start of history (no-op vs error), whether navigation blocks or waits for load, or how wait_seconds affects timing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. Efficiency is good, though the brevity is partly under-specification rather than disciplined pruning.
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?
An output schema exists, so return values need not be described, but with no annotations and no parameter documentation the definition leaves key behavior (history exhaustion, waiting semantics) undefined for an agent to call it confidently.
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, and it does not: session_id and wait_seconds (including its default) are unexplained. The only implicit signal is that the tool is session-scoped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Navigate one step back in browser history'), which clearly separates it from browser_navigate and browser_forward. It does not explicitly name the sibling alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus browser_navigate, browser_forward, or browser_reload, and no mention of prerequisites such as an active session or existing history. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickC
Click the first matching selector.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | ||
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the name. It does not disclose what happens when zero or many elements match, whether the page navigates after the click, whether the element is scrolled into view, or how errors surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is economically written, though its brevity reflects under-specification rather than disciplined concision.
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 browser-automation click with 3 params, no annotations, and 0% schema coverage, one sentence is far too thin. The presence of an output schema means return values need not be explained, but the missing match-failure, waiting, and post-click behavior leave the agent under-informed.
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 3 parameters. The description alludes to 'selector' and 'first matching' but says nothing about the selector syntax, the required session_id, or the wait_seconds default of 1.2, so it fails to compensate for the documented-coverage 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 states a specific verb and target ('Click the first matching selector'), so the core action is clear. However it is extremely terse and does not distinguish browser_click from close siblings such as browser_mouse_click (coordinate-based) or browser_type, leaving the agent to infer the selector-based distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives like browser_mouse_click or browser_press_hold. The agent gets no signal about which clicking tool to pick or what preconditions (e.g. element present, session active) apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_console_messagesC
Read captured in-page console messages.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| limit | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether messages accumulate across navigation, what the default limit of 120 means for truncation, that the session must already be capturing, or that reading can have a side effect when clear is set β a meaningful omission for a tool adjacent to a destructive clear flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler β the purpose is stated immediately. It is efficiently written, though the brevity is partly under-specification rather than disciplined concision.
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?
An output schema exists, so return-value explanation is legitimately out of scope, but for a tool with an undocumented clear flag, a truncated-limit parameter, and no annotations, the description is too thin. An agent lacks what it needs to use the tool safely or predict its behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must compensate and does not. The non-obvious semantics of clear (does it wipe the buffer after returning?) and limit (default 120 suggests truncation) are left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Read") and resource ("captured in-page console messages"), so an agent knows exactly what it retrieves. It does not, however, distinguish itself from adjacent read tools like browser_network_requests or browser_snapshot, leaving sibling routing to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g. whether capture must already be running in the session), and no mention of alternatives for inspecting page errors versus network or DOM data. The agent gets a resource description but no selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookies_clearC
Clear cookies (all or by domain).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses the scope ('all or by domain') but omits that this is a destructive, irreversible action, whether it affects active sessions, or what permissions/session context are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately terse for a simple operation, though the extreme brevity leaves other dimensions underspecified.
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?
An output schema exists, so return values need not be explained. However, for a destructive cookie-clearing tool with no annotations and 0% schema coverage, the description fails to cover the required session_id, irreversible effects, or when to choose it over sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies the optional domain parameter and that omitting it clears all cookies, but it never explains the required session_id parameter or adds format/constraint 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?
The description states a specific verb and resource ('Clear cookies') and clarifies scope with '(all or by domain)'. It is distinguishable from sibling tools like browser_cookies_get or browser_cookies_set, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as browser_cookies_save or browser_storage_clear. The parenthetical only describes the parameter choice, not contextual usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookies_getC
Get all cookies visible to current browser context.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| session_id | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a safe read, but says nothing about whether the domain parameter narrows results, required permissions, or how the operation interacts with the session. An output schema exists, so return format need not be described, but the behavioral profile is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words and the scope stated up front. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined 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?
Output structure is covered by the output schema, but with three parameters at 0% schema description coverage and no annotations, the description leaves too much unstated: no domain filtering meaning, no session semantics, no behavioral notes. For a tool whose structured fields say almost nothing, this is inadequate.
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 schema documents no meaning for session_id, domain, or timeout_seconds. The description mentions no parameters at all, and its phrase 'all cookies' actively obscures the fact that domain can filter the result set, leaving an agent unable to infer parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (cookies), and scope (visible to current browser context), so an agent can tell it reads rather than writes cookies. It does not explicitly differentiate itself from siblings like browser_cookies_save or browser_cookies_clear, but the read-vs-mutate distinction is inferable from the name and wording.
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 no when-to-use context, no prerequisites, and no mention of alternatives such as browser_cookies_save for persistence or browser_storage_get for other storage. The scope phrase 'current browser context' is informative but is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookies_saveC
Save current cookies to a JSON file.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| session_id | Yes | ||
| output_path | Yes | ||
| wrap_object | No | ||
| timeout_seconds | No | ||
| allow_document_cookie_fallback | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and discloses nothing beyond the one-line purpose. It doesn't say whether the write overwrites an existing file, what permissions/auth the session needs, whether the cookie set is scoped to the current page or the whole browser context, or how timeouts and fallback behave. For a disk-writing tool with zero annotation coverage this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is efficient and easy to scan. It is arguably under-specified rather than wasteful, but as a structural matter there is nothing to trim.
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 presence of an output schema means return values needn't be described, but a six-parameter mutation tool with no annotations and 0% schema coverage needs more than one sentence. Key behavioral context (file overwrite semantics, cookie scoping, fallback behavior) is absent.
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% across six parameters, and the description only loosely gestures at output_path ('to a JSON file'). Nothing explains domain scoping, wrap_object, timeout_seconds, or allow_document_cookie_fallback, so the agent is left guessing at the meaning and defaults of most inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Save current cookies') plus an output format ('to a JSON file'), which is enough to distinguish it from browser_cookies_get (retrieve) and browser_cookies_set (inject). It stops short of naming a sibling explicitly, so it stays at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no routing to alternatives such as browser_cookies_get or browser_cookies_clear. The agent must infer that this is the persistence counterpart to cookies_get purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookies_setC
Set cookies into current browser context.
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | Yes | ||
| session_id | Yes | ||
| fallback_domain | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only says cookies go into the current context. It omits whether existing cookies are overwritten or merged, whether the write is ephemeral or persisted, what permissions or an active session are required, and any error behavior for invalid domains.
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?
It is a single front-loaded sentence with no filler, which is structurally clean, but the brevity stems from under-specification rather than disciplined editing. Space freed by the short sentence is not used to clarify any parameter or behavior.
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?
An output schema exists so return values need not be explained, but this is a mutation tool with no annotations and zero parameter documentation. For a tool whose correctness depends on cookie object shape and session scoping, the description leaves too much unstated.
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% across three parameters. The description names "cookies" only implicitly, and the shape of each cookie object (name/value/domain/path/expiry) and the purpose of fallback_domain are entirely undocumented in both schema and description, so callers cannot construct a correct call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ("Set cookies") plus the target scope ("current browser context"), so an agent knows this writes cookies into the live session. It does not, however, distinguish itself from siblings like browser_cookies_save or browser_storage_set, which a reader must infer from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no comparison to browser_cookies_get, browser_cookies_save, or browser_cookies_clear. The agent must guess whether this is the right tool versus sibling cookies tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_downloadsC
Read captured download metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| limit | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but says almost nothing. It never discloses that the 'clear' parameter mutates/destroys captured data, whether results are paginated, how they are ordered, or what 'captured' requires. A mutation-capable flag is hidden entirely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is structurally clean. It is arguably too terse for a 3-parameter tool, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no parameter descriptions, and a destructive-capable 'clear' flag, the definition is far too thin. The output schema covers return values, but the input semantics and safety profile are entirely absent.
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 adds nothing about the three parameters. The critical 'clear' (destructive) and 'limit' (pagination) semantics are undocumented anywhere, leaving the agent to guess their behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read captured download metadata'. An agent knows it retrieves download records rather than performing an action. However, it offers no differentiation from the many other browser_* read tools (console_messages, network_requests, cookies_get) that follow the same pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. that a session must be active), and no reference to alternatives. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluateC
Evaluate JavaScript in current page.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not state whether the script runs in page context, whether it is sandboxed or blocked by CSP, whether async/promises are awaited, or how errors surface. For an arbitrary-code-execution tool this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words and the core purpose front-loaded. It is efficient, though bordering on under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but with zero annotations and zero schema coverage the definition is incomplete for a tool that executes arbitrary code: execution context, sandboxing, async handling, and error behavior are all unstated.
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 two required parameters, and the description adds no meaning beyond the names. It does not explain the expected form of 'script' (expression vs function body, return semantics) or what 'session_id' refers to.
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 gives a specific verb ('Evaluate') and resource ('JavaScript in current page'), which is clear enough for an agent to distinguish it from siblings like browser_click or browser_html. However, it does not differentiate itself from the related browser_wait_for_function or browser_query tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as browser_query, browser_wait_for_function, or browser_console_messages. No prerequisites, exclusions, or context conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_forwardC
Navigate one step forward in browser history.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and delivers little: it does not say what happens when there is no forward history (a common failure mode), that it mutates the active page state, or that it waits before returning. The only behavioral hint is the undocumented wait_seconds default.
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?
One short, front-loaded sentence with zero padding and the key action stated first. It is efficient, though arguably terse enough to leave the gaps noted in other dimensions.
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?
An output schema exists so return values need no explanation, but the description leaves the two undocumented parameters, the failure case (no forward history), and the wait behavior unaddressed. For a state-mutating navigation tool with zero annotation and zero schema-description coverage, this is under-specified.
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 two parameters, so the description must compensate and does not. Neither session_id nor wait_seconds is mentioned, and the meaningful wait-after-navigation behavior implied by wait_seconds (default 1.2s) is left entirely unexplained.
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 gives a specific verb and resource β 'Navigate one step forward in browser history' β which clearly separates it from browser_navigate and browser_reload by name alone. It stops short of explicitly contrasting itself with the obvious sibling browser_back, so it is clear but not sibling-differentiating in the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the alternative (browser_back) or of the condition that makes forward navigation possible (having previously gone back). The agent must infer all of this from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_handle_dialogC
Set how the next JavaScript dialog should be handled.
| Name | Required | Description | Default |
|---|---|---|---|
| once | No | ||
| accept | No | ||
| session_id | Yes | ||
| prompt_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It hints at one-shot scoping via 'next' but says nothing about the default handling if this is never called, whether the call is blocking, or what happens to the dialog's return value. Substantial behavioral gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the scope constraint ('next') is front-loaded. It is not bloated, but it is under-specified rather than genuinely concise for a four-parameter configuration tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with no annotations, 0% parameter documentation, and an ambiguous 'handled', the agent lacks what it needs to invoke this correctly β notably how to choose between accepting and dismissing.
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 all four parameters (once, accept, session_id, prompt_text), and the description mentions none of them. The meaning of 'accept' vs 'once' vs 'prompt_text' β the entire point of the tool β is left completely undocumented.
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 names a specific resource (the next JavaScript dialog) and an action (set how it should be handled), so the agent knows this is a dialog-policy tool and it is unique among the siblings. However, 'handled' is vague β it never says accept/dismiss/prompt-text, which is the actual semantic content of the 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?
There is no when-to-use guidance: it does not say whether this must be called before a dialog appears, what happens if a dialog is already blocking, or how it relates to browser_click/browser_evaluate which trigger dialogs. The word 'next' implies one-shot scope but nothing more.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_htmlC
Return current page HTML (optionally truncated).
| Name | Required | Description | Default |
|---|---|---|---|
| max_chars | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It hints at truncation ("optionally truncated") but never says whether the default cap applies, how truncation is signaled, or that a live session is required. For a read tool with zero annotation coverage these are real gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is proportionate to the amount of information actually conveyed. It is terse rather than padded, though that terseness is what drives the gaps above.
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?
An output schema exists, so return values need not be explained, but the definition still omits the session prerequisite, the truncation contract, and any routing versus sibling content-retrieval tools. For a tool with 0% parameter documentation and no annotations, it is under-specified.
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 and largely doesn't. It vaguely alludes to truncation, mapping loosely to max_chars, but never names the parameter, explains its units/default, or describes what session_id selects.
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?
Specific verb (Return) plus resource (current page HTML), which is enough for an agent to know the operation. However, it does nothing to distinguish itself from close siblings like browser_snapshot, browser_query, or browser_evaluate, all of which also produce page content in different forms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. With 60+ siblings, several of which surface page content, the agent gets no help deciding between raw HTML, a snapshot, or an evaluate call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_clickA
Native CDP coordinate click at viewport pixel position (x, y). Unlike browser_click (which uses a CSS selector and JS el.click()), this dispatches Input.dispatchMouseEvent through the browser's input pipeline, producing isTrusted events. Use when you need to click by coordinates β e.g. inside iframes or at positions obtained from screenshots/evaluation.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| button | No | left | |
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers meaningful mechanism detail: it dispatches Input.dispatchMouseEvent through the browser's input pipeline and produces isTrusted events (material for anti-bot behavior), versus JS el.click(). It stops short of covering failure modes, whether the target must be in view, or timing behavior, which keeps it off a 5.
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 what the tool is, then the contrast with the sibling, then the usage trigger. No sentence is redundant and nothing is buried.
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?
An output schema exists, so return values need not be explained. Purpose, alternative, and usage are complete; the only gap is the undocumented button/wait_seconds parameters, which is minor for a click 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% across 5 parameters, so the description must compensate. It adds real meaning for x/y ('viewport pixel position'), but says nothing about button (default left) or wait_seconds (default 1.2), leaving two parameters undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('coordinate click at viewport pixel position (x, y)') and immediately distinguishes itself from the sibling browser_click by mechanism. An agent can tell the two apart without opening either schema.
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 names the alternative (browser_click) and the condition selecting this one: 'Use when you need to click by coordinates β e.g. inside iframes or at positions obtained from screenshots/evaluation.' Both when and the concrete scenarios are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_moveB
Move the mouse cursor to viewport pixel position (x, y) via intermediate mouseMoved CDP events. Useful for creating cursor movement trails before a click or for hover interactions.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| steps | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that movement is implemented via intermediate mouseMoved CDP events and is useful for trails or hover, but it omits session/auth requirements, side effects, and how the steps parameter affects behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loads the core action, and then adds intended use cases. There is no redundant or wasted 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?
An output schema exists, so return values do not need description. For a low-risk mouse-move tool, the purpose and mechanism are adequately covered, but without annotations and with 0% schema coverage, the missing steps semantics and session context leave notable 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% across four parameters. The description clarifies x and y as viewport pixel coordinates, which adds useful meaning, but it entirely omits the steps parameter and session_id, leaving important invocation details undocumented.
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 a specific verb and resource: moving the mouse cursor to viewport pixel coordinates via intermediate CDP mouseMoved events. It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools like browser_mouse_click or browser_click.
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 implied contexts, saying it is useful for creating cursor movement trails before a click or for hover interactions. However, it does not name alternatives, state when not to use it, or explain prerequisites in any explicit way.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_capture_getC
Read CDP-level network capture rows.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| limit | No | ||
| session_id | Yes | ||
| only_failures | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses almost nothing. Most notably, the 'clear' parameter likely destroys captured data, but the description never warns about destructive behavior, nor does it state whether the result is a snapshot or a paginated tail, or any lifecycle prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, which is fine, but its brevity comes from under-specification rather than discipline. Nothing is front-loaded because there is essentially nothing to front-load.
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?
An output schema exists, so return-shape explanation is not required. But for a four-parameter tool with zero annotation coverage, the definition omits parameter meanings, the destructive nature of 'clear', and the capture lifecycle relationship to the sibling start/stop/status tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds nothing: no explanation of 'limit' semantics, no warning that 'clear' purges the buffer, no clarification of what counts as a 'failure' for 'only_failures'. All four parameters are wholly undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('CDP-level network capture rows'), which is more than a tautology. However, it does not distinguish this from close siblings like browser_network_requests or browser_network_capture_status, leaving the agent to guess which reader to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. It never says that a capture must presumably be started first (browser_network_capture_start), nor how it differs from browser_network_requests or browser_network_capture_status. The agent must infer the whole workflow from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_capture_startC
Start CDP-level network capture.
| Name | Required | Description | Default |
|---|---|---|---|
| url_regex | No | ||
| session_id | Yes | ||
| max_entries | No | ||
| include_headers | No | ||
| include_post_data | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing. It does not mention that capture is bounded by max_entries (default 2000), whether starting a capture overwrites a prior one, whether capture continues until explicitly stopped, or any memory/performance implications of protocol-level recording.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single fragmentary sentence with no waste, but at this length it is under-specified rather than concise β the brevity comes at the cost of any usable detail for a five-parameter tool. Front-loading is fine; substance is missing.
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?
An output schema exists so return values need not be described, but for a capture-start tool with five undocumented parameters, no annotations, and a four-tool capture family, the description omits everything an agent needs: prerequisites, filtering behavior, and the stop/read lifecycle.
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 mentions none of the five parameters. The meaning of url_regex (what syntax, does null mean capture-all), max_entries, include_headers, and include_post_data is left entirely undocumented in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Start') and resource ('CDP-level network capture'), and the 'CDP-level' qualifier hints at a lower-level capture than sibling browser_network_requests. However, it never explicitly contrasts itself with the closely-named siblings browser_network_capture_stop, browser_network_capture_get, or browser_network_capture_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all: it does not say whether an active session is required, whether capture must be paired with browser_network_capture_stop, or how it differs from reading browser_network_requests. The agent must infer the whole lifecycle from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_capture_statusC
Get CDP-level network capture status.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read operation via 'Get' but does not state that it is non-destructive, whether it requires an active capture, what the status reflects, or whether it blocks. For a no-annotation tool this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short front-loaded sentence with no filler or repetition. It is efficient, though the brevity reflects under-specification rather than disciplined 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?
An output schema exists, so return values need not be explained. But with no annotations and no parameter documentation, the description should at least note the dependency on the capture lifecycle (start before status) to be complete for this multi-tool capture family.
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 single required session_id parameter has no description in either the schema or the tool description. The description adds no meaning about what session_id identifies or whether it must reference a live session.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (CDP-level network capture status), which is more informative than the bare name. However, it does not distinguish this tool from the closely related siblings browser_network_capture_start/get/stop, so an agent cannot tell from the description alone when status is the right call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g., that a capture must be running first), and no reference to the start/get/stop siblings. The agent is left to infer the whole usage context from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_capture_stopC
Stop CDP-level network capture.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says only that capture stops; it does not disclose whether buffered data is discarded, whether the call is idempotent if no capture is running, what permissions or session state are required, or how it interacts with the existing 'clear' parameter.
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 single sentence is front-loaded and free of waste, which is good, but at this level of brevity the terse text reads as under-specification rather than crispness for a tool with an undocumented parameter.
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?
An output schema exists, so return values need not be described. However, for a capture-lifecycle mutation tool with zero annotation coverage and an unexplained 'clear' flag, the description omits the behavioral and parameter context an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 2 parameters, yet the description explains neither. In particular, the 'clear' boolean's effect (whether capture is stopped and buffered entries are wiped) is left entirely ambiguous, and no format or constraints are given for session_id.
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 a specific verb and resource ('Stop CDP-level network capture'), and the name distinguishes it from sibling capture tools (start/get/status). The 'CDP-level' qualifier adds precision about the layer being captured, though it stops short of explicitly routing the agent to or from those 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?
There is no guidance on when to call this versus alternatives, nor any mention that it pairs with browser_network_capture_start. An agent gets no indication of prerequisites, expected ordering, or what state the session must be in.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_requestsC
Read captured fetch/xhr request metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| limit | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only tells the agent this is a read operation. It does not disclose that the required session_id selects a session, that limit bounds results, or that the clear parameter may clear captured dataβa potentially important side effect.
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 single sentence is front-loaded and free of filler, but it is under-specified for a tool with three parameters and no schema descriptions. Brevity here is not necessarily appropriate given the missing operational 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?
Although an output schema exists so return values need not be explained, the description omits all parameter context and any behavioral nuance around clearing or session selection. For a tool with a required session_id and a clear side-effect parameter, the definition is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across all three parameters (session_id, limit, clear), and the description adds no parameter meaning whatsoever. The agent gets no explanation of the required session_id, the default limit of 120, or what clear actually does.
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 a specific verb (Read) and resource (captured fetch/xhr request metadata), so the purpose is clear. However, it does not distinguish this tool from closely named siblings like browser_network_capture_get or browser_network_capture_status, which likely overlap in reading captured network data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many network-capture siblings, nor any conditions or prerequisites. The sentence only describes what it reads, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_press_holdA
Sustained mouse press at viewport pixel (x, y) for a given duration. Dispatches mousePressed, emits tiny mouseMoved jitter while holding, then mouseReleased. Use for press-and-hold verification challenges or long-press interactions.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| session_id | Yes | ||
| duration_ms | No | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers non-obvious behavioral detail: the exact event sequence (mousePressed, mouseMoved jitter, mouseReleased) that an agent could not infer. It omits what wait_seconds controls and whether the hold can be interrupted, so not a 5.
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 action, then the mechanism, then the use case. No filler; every clause contributes.
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?
Output schema exists so return values need not be explained, and the description adequately covers action, mechanism, and purpose for a browser interaction tool. The main gap is the unexplained wait_seconds parameter, which is a moderate rather than critical omission.
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 there are 5 parameters. The description implies x, y (viewport coordinates) and duration, but never names duration_ms, and wait_seconds is completely undocumented in both schema and description. Only a fraction of the parameters are compensated for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: 'Sustained mouse press at viewport pixel (x, y) for a given duration.' The word 'sustained' and 'press-and-hold' clearly distinguish it from the click/mouse_click siblings in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage contexts ('press-and-hold verification challenges or long-press interactions'), which tells the agent when this is the right tool versus a normal click. It stops short of naming browser_click/browser_mouse_click as alternatives or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_queryC
Query DOM elements by CSS selector.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| selector | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does not meet it. It doesn't say whether the query waits for elements, what happens when the selector matches nothing, whether returned handles are reusable by browser_click/browser_type, or whether it is a safe read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, so it is structurally fine. However it is minimal to the point of under-specification rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return format needn't be explained, but for a three-parameter, annotation-free browser tool the description leaves key gaps: pagination/limit behavior, session binding, and how results relate to other browser_* interaction tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only implies the selector parameter. Neither 'limit' (default 40) nor 'session_id' receives any explanation, and the return-handle semantics tied to the selector are unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Query DOM elements') plus the input mechanism ('by CSS selector'), which is clear enough to act on. It does not distinguish itself from near-neighbors like browser_snapshot, browser_html, or browser_wait_for_selector, so sibling differentiation is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions, and no mention of alternatives among the many overlapping DOM-inspection siblings. An agent must guess whether this replaces browser_snapshot/browser_html or complements them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_reloadC
Reload the current page.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| ignore_cache | No | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing: it does not say whether the call blocks until the page finishes loading, whether it affects other tabs, or how caching is handled. The phrase 'current page' is the only behavioral signal, telling the agent it acts on the active tab rather than an arbitrary URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficiently sized, though its brevity borders on under-specification rather than deliberate concision.
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?
An output schema exists, so return values need not be described, but for a three-parameter tool with no annotations and no schema documentation the description is too thin. An agent cannot tell from it whether reload waits for load completion or what wait_seconds and ignore_cache actually do.
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 adds nothing about any of the three parameters. The semantics of ignore_cache and wait_seconds (which presumably controls how long to wait after reloading) are left entirely unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Reload) and resource (the current page), which is unambiguous on its own. It does not distinguish itself from adjacent navigation siblings such as browser_navigate, browser_back, or browser_forward, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reload versus re-navigating, and no mention of prerequisites such as needing an active session or a page already loaded. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollC
Scroll page, to top, to bottom, or to selector.
| Name | Required | Description | Default |
|---|---|---|---|
| to_top | No | ||
| delta_y | No | ||
| selector | No | ||
| to_bottom | No | ||
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It says nothing about the wait_seconds settle behavior after scrolling, what happens if to_top and to_bottom are both set, whether scrolling is smooth or instant, or whether the call blocks until the page stabilizes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the primary verb front-loaded and the mode list immediately following. It is efficient, though the brevity tips into under-specification rather than pure economy.
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?
An output schema exists so return values need not be explained, but for a six-parameter tool with zero schema description coverage and no annotations, the description is far too thin. An agent cannot determine precedence among the four scroll modes or the role of delta_y versus to_bottom from this text.
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% across six parameters, and the description only obliquely accounts for three of them (to_top, to_bottom, selector). It adds no meaning for delta_y, wait_seconds, or the required session_id, and does not explain interaction or precedence between the mode flags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scroll) and resource (page) and enumerates the modes: to top, to bottom, or to selector. No sibling tool performs scrolling, so sibling differentiation is not really needed here, but the phrasing is terse and never names the session context it operates on.
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 no when-to-use guidance, no prerequisites, and no indication of how to choose between to_top, to_bottom, delta_y, and selector modes. The agent must infer all routing logic from the schema defaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_file_inputC
Attach local files to a file input selector.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | ||
| file_paths | Yes | ||
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions attaching local files but does not disclose side effects such as triggering change events, whether files are uploaded, required session context, selector constraints, or the role of wait_seconds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately concise and easy to scan.
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 four parameters, three of them required, and no annotation or schema descriptions, the definition is incomplete. The presence of an output schema covers return values, but critical invocation details such as the required session_id and wait_seconds behavior are absent.
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 but does so only vaguely. 'File input selector' hints at the selector parameter and 'local files' hints at file_paths, but session_id and wait_seconds are completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Attach local files to a file input selector.' This clearly distinguishes the action from siblings like browser_type or browser_click, though it does not explicitly name or contrast those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no when-to-use guidance, prerequisites, or alternatives. The only implied context is that the tool is for attaching local files to a file input, but there is no explicit guidance on when this should be used instead of related browser actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotC
Return a compact snapshot of interactive elements on the page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It doesn't disclose that the snapshot is truncated/capped (the 'limit' default of 40), whether it is a safe read with no page mutation, or what 'compact' means in terms of completeness or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though the brevity is partly a consequence of omitted detail rather than disciplined 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?
An output schema exists, so return values need not be explained, but the description still leaves critical gaps: undocumented parameters at 0% coverage, no behavioral disclosure in the absence of annotations, and no routing against sibling page-inspection tools. For a tool in a crowded family, 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 two parameters (session_id and limit) are undocumented in both schema and description. The word 'compact' hints that results are bounded, but the description never explains what 'limit' controls or that it defaults to 40, leaving the agent unable to tune the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and a specific resource ('compact snapshot of interactive elements on the page'), so an agent knows this yields a listing of actionable page elements rather than raw HTML. However, it gives no differentiation from close siblings like browser_html, browser_query, or browser_take_screenshot, which also describe the same page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives. With siblings such as browser_html and browser_query in the same family, an agent is left to guess which extraction tool is appropriate in a given situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_solve_cloudflareB
Detect and solve a Cloudflare Turnstile challenge by clicking the verification checkbox.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| max_retries | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the mechanism (clicking the verification checkbox) but says nothing about failure behavior, what happens after retries are exhausted, or how it interacts with the max_retries/timeout parameters β significant gaps for a tool with an output schema and retry logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though its brevity contributes to the other gaps rather than being purely a virtue.
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?
An output schema exists, so return values need not be explained, but the description omits parameter semantics and any behavioral detail on failure/retry handling. For a challenge-solving tool with retry and timeout knobs, this leaves the agent under-informed.
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 all three parameters (session_id, max_retries, timeout_seconds) are undocumented in the schema. The description adds no meaning for any of them, so it fails to compensate for the coverage 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?
States a specific verb+resource: 'Detect and solve a Cloudflare Turnstile challenge by clicking the verification checkbox.' This is unambiguous and clearly distinguishable from generic siblings like browser_click or browser_wait_for_selector, since it names a specific anti-bot challenge 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 trigger scenario (a Cloudflare Turnstile challenge being present) is implied by the description, but there is no explicit when-to-use/when-not guidance or pointer to alternatives such as browser_click or browser_wait_for_selector. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_storage_clearC
Clear local/session storage.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | both | |
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. Clearing storage is a destructive, irreversible data-loss operation, yet the description says nothing about which origins are affected, whether the page reloads, whether the session must be active, or whether a session_id mismatch is an error. Only the bare action is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded β efficient, but the terseness is under-specification rather than genuine conciseness for a destructive mutation with two 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?
An output schema exists, so return values need not be explained. For a destructive, unannotated, 0%-covered two-parameter tool, however, the definition omits scope, side effects, and parameter meaning β not enough for an agent to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It hints at the 'kind' concept ('local/session') but never explains the enum values, the default of 'both', or what the required session_id identifies. Both parameters are effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (clear) and resource (local/session storage), which distinguishes it from siblings like browser_storage_get, browser_storage_set, and browser_cookies_clear. It does not, however, clarify scope (current page origin vs. all origins), so the purpose is clear but not fully bounded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the adjacent alternatives (browser_cookies_clear for cookies, browser_storage_set for writes). The agent must infer that this is the correct tool purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_storage_getC
Get local/session storage values.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | both | |
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: it doesn't say whether it acts on the current tab, whether it requires an active session, how it behaves when storage is empty, or that it's a read-only operation. Only the verb "Get" weakly implies read semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the action front-loaded. It is efficient, though the brevity tips into under-specification rather than crispness.
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 output schema covers return shape and there are only two parameters, but with zero annotation coverage the description should explain the required session_id and the kind selector's semantics. For a session-scoped browser tool it leaves too much for the agent to infer.
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 and it largely doesn't. "local/session" hints at the `kind` enum but never explains the `both` default or the values `local`/`session`, and `session_id`, the only required parameter, is never mentioned at all.
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 names a specific verb ("Get") and resource ("local/session storage values"), which cleanly separates it from sibling writers like browser_storage_set and browser_storage_clear. It stops short of saying anything about the browser session it operates against, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this versus alternatives such as browser_evaluate, which could also read storage, or browser_cookies_get for a related but different store. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_storage_setC
Set local/session storage key/value entries.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| entries | Yes | ||
| session_id | Yes | ||
| clear_first | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden and largely fails it. It never says whether entries are merged with or overwrite existing keys, what clear_first does to existing storage, or whether this persists across navigation β all material for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though its brevity borders on under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a four-parameter mutation tool with zero annotation and zero schema-description coverage, the description omits the destructive/merge semantics and session requirements an agent needs to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only hints at 'key/value entries' and the local/session distinction, leaving clear_first β a potentially destructive flag β completely unexplained in prose, and giving no format or size guidance for the entries object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and resource ('local/session storage key/value entries'), which clearly separates it from siblings like browser_storage_get and browser_storage_clear. It does not explicitly name those siblings, so it lands at a clear-but-undifferentiated 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. an active session_id), and no routing to alternatives such as browser_storage_get for reads or browser_storage_clear for wipes. The agent must infer all of this from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tab_closeC
Close a tab by tab_id or index.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | ||
| tab_id | No | ||
| switch_to | No | last_active | |
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Close' implies an irreversible destructive mutation, but the description never says whether the close is permanent, what happens if both tab_id and index are supplied, how switch_to affects focus, or whether closing the final tab terminates the session. For a destructive tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the action front-loaded, which is structurally sound. However, the brevity reflects under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a destructive 4-parameter tool with no annotations and no parameter documentation, the description omits the selection semantics, the switch_to behavior, and the side effects an agent must know before invoking 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 description coverage is 0% across 4 parameters. The description names tab_id and index but does not explain that they are alternative selectors, nor does it mention switch_to (default 'last_active') or session_id at all, leaving half the parameters undocumented in both schema and 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?
States a specific verb+resource ('Close a tab') and names the two identifiers it accepts, which lets an agent distinguish it from browser_tab_switch, browser_tab_new, and browser_tab_list. It stops short of stating scope (does it close the active tab? is a session teardown implied?), but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no note on what happens when closing the active or last remaining tab, and no pointer to sibling tools. The agent must infer everything from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tab_currentC
Get the active tab summary.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' weakly implies a read-only, non-mutating call, but the description says nothing about whether a session must be attached to a live browser, what happens if no tab is active, or whether the read is side-effect free. An output schema exists, so return format need not be restated, but the remaining gap is large for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and no burying of the key concept. It is efficient, though the terseness is partly under-specification rather than disciplined 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?
The tool is simple and has an output schema covering return values, so the description need not explain results. But with no annotations, an undocumented required parameter, and no routing guidance among many tab-related siblings, an agent is left guessing about preconditions and scope.
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 single required parameter session_id, so the schema contributes nothing. The description does not mention session_id at all β it neither states that it identifies the browser session nor what form it takes β leaving the parameter undocumented in both structured and unstructured data.
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 names a verb ('Get') and a resource ('active tab summary'), so the basic action is inferable. However, 'summary' is undefined β it is unclear whether it returns a title/URL pair, DOM state, or something else β and nothing distinguishes it from the sibling browser_tab_list or browser_snapshot. Purpose is recognizable but vague on scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as browser_tab_list (all tabs) or browser_snapshot (page content), nor any precondition or context requirement. The only implied usage is 'you want the current tab', which the name already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tab_listB
List open tabs and the active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. "List" implicitly signals a read-only, non-destructive operation and the presence of the active tab among the results is disclosed, but there is no statement about ordering, pagination, or that this never mutates browser state. The implicit read-only semantics keep it at a minimum-viable 3 rather than lower.
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?
One short sentence, front-loaded with the verb and resource, no boilerplate or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained here, and the operation itself is simple. What is missing is any routing versus the closely related browser_tab_current, browser_tab_switch, and browser_tab_new siblings, plus any meaning for the undocumented session_id.
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 single session_id parameter has no description in either the schema or the tool description. The description does not compensate at all, leaving the agent to guess whether session_id refers to a browser session key or something else; only the sibling-tool context makes it inferable.
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 gives a specific verb and resource ("List open tabs") plus the scope of what is returned ("and the active tab"), so the agent knows exactly what this tool produces. However it never distinguishes itself from the very similar sibling browser_tab_current, which also surfaces the active tab, so there is no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative guidance. The agent must infer from the name alone that this is the enumeration counterpart to browser_tab_current / browser_tab_switch, and nothing tells it when listing all tabs is preferable to reading the current tab.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tab_newC
Open a new tab and optionally switch to it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | about:blank | |
| switch | No | ||
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but discloses almost nothing: it doesn't say whether existing tabs are preserved, whether the session must be active, what happens if url is omitted (schema default about:blank), or how wait_seconds affects the call. For a state-mutating tab-creation tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loaded with the main action. It is concise, but that brevity is partly the result of under-specification rather than tight 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?
An output schema exists, so return values need not be described, but everything else is missing: parameter meanings, interaction with sibling tab tools, and side effects. For a 4-parameter tool with zero schema coverage and no annotations, the definition is too thin.
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% across 4 parameters, so the description must compensate. It only gestures at 'switch' behavior; url, wait_seconds, and the required session_id are entirely unexplained, leaving the agent to infer semantics from bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open a new tab'), so the agent knows exactly what happens. However, it does not distinguish itself from the sibling browser_tab_switch, which overlaps with the 'switch to it' behavior mentioned here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to open a new tab versus reusing or switching tabs, and no mention of the browser_tab_switch/browser_tab_list siblings. The only hint is the word 'optionally', which is not actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tab_switchC
Switch active tab by tab_id or index.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | ||
| tab_id | No | ||
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the action. It omits side effects, error behavior when a tab doesn't exist, what wait_seconds does, and any permission or session requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; every word earns its place. It is arguably too terse given the tool's parameter surface, but that is a completeness issue rather than structural waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, 0% schema description coverage, and four parameters, the description is not complete enough. An output schema exists so return values needn't be explained, but session_id, wait_seconds, and the tab_id/index relationship are all left undocumented.
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 but only names two of four parameters (tab_id, index). It gives no format for tab_id, no index range, no mutual-exclusivity rule, and never mentions the required session_id or the wait_seconds parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Switch') and resource ('active tab') with the selection mechanism ('by tab_id or index'). Distinguishes itself from tab_new/tab_close, but does not explicitly differentiate from siblings like browser_tab_current or browser_tab_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are given. It doesn't say which of tab_id/index to prefer, whether both can be supplied, or how it relates to browser_tab_current. Usage is only implied by the phrase 'by tab_id or index'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_take_screenshotC
Capture a screenshot to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| full_page | No | ||
| session_id | Yes | ||
| output_path | Yes | ||
| image_format | No | png |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'To disk' usefully implies a filesystem write side effect, but it says nothing about full-page vs viewport capture, format implications, overwrite behavior of output_path, or whether the target session must be active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste, which is good, but at this length the brevity reads as under-specification rather than efficient concision for a four-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with no annotations, 0% schema coverage, and four parameters (two required), the description is far too thin for an agent to call this reliably without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are four parameters, so the description must compensate but does not. It only vaguely gestures at output_path via 'to disk' and never mentions session_id, full_page, or the png/jpeg image_format enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Capture a screenshot') plus the destination ('to disk'), so an agent immediately knows what it does. It does not distinguish itself from near-neighbors like browser_snapshot or browser_html, but the noun 'screenshot' is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. an active session), and no mention of alternatives such as browser_snapshot for DOM capture. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeC
Type text into an input selector.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| clear | No | ||
| submit | No | ||
| selector | Yes | ||
| session_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses only the basic action. It says nothing about what the clear/submit flags destroy or trigger, whether typing waits for the element, or how the wait_seconds default behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste, but its brevity comes from omission rather than efficiency. It is structurally fine yet under-specified for a tool with five optional/required 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?
An output schema exists so return values need not be explained, but for a browser mutation tool with no annotations and 0% parameter documentation the description is far too thin. An agent cannot know how clear/submit interact with the typed text.
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% across 6 parameters, so the description must compensate, but it only implicitly covers 'text' and 'selector'. The meaning and effects of clear, submit, wait_seconds, and session_id are left completely unexplained.
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 gives a specific verb (Type) and resource (text into an input selector), which is enough to distinguish it from browser_click or browser_press_hold. It is clear but does not explicitly name any sibling or scoping condition, so it falls short of the 5 bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. an existing session_id), and no mention of alternatives such as browser_click or browser_evaluate for filling fields. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_urlC
Get current URL and page title.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only, side-effect-free operation, nor what happens if the session has no active page or the session_id is invalid. For a zero-annotation tool this is a meaningful gap, though the operation is inherently simple.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero filler, front-loading the action and the returned data. Nothing is padded or redundant.
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?
An output schema exists, so the return values need not be explained, and the tool is conceptually simple. Still, the description omits the session_id contract and failure modes for a tool that cannot function without a valid session, leaving it only minimally viable.
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 single parameter session_id has 0% schema description coverage and the description adds no meaning about it β no format, no source, no statement that it must reference a live session. The one-sentence description provides no parameter context to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get current URL and page title.' An agent immediately knows the retrieval target. However, it does not differentiate from the sibling browser_tab_current, which plausibly returns overlapping information, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. With sibling tools like browser_tab_current and browser_tab_list in the same family, the description should say when this tool is the right pick, and it says nothing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_waitC
Wait for a number of seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It conveys only that a blocking delay occurs and says nothing about blocking semantics, session requirements, or whether the wait is an unconditional sleep rather than a condition poll.
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 single sentence is front-loaded and free of waste, which is structurally fine. However, it is under-specified rather than genuinely concise: one sentence is simply too little to disambiguate this tool from its wait-family siblings.
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?
An output schema exists, so return values need not be explained. Everything else is missing, though: no annotations, 0% schema description coverage, an undocumented required session_id, and no routing against the conditional wait tools, making the definition inadequate for correct tool selection.
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 only gestures at the 'seconds' parameter via 'a number of seconds' and omits the default (1.2), the unit/rounding behavior, and any mention of the required session_id, leaving both parameters effectively undocumented.
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 verb 'Wait' plus the notion of a duration gives a minimally clear purpose, and the name implies a browser-context pause. But the description never distinguishes this fixed-duration sleep from the large sibling family of conditional waits (browser_wait_for_selector, browser_wait_for_url, browser_wait_for_text, browser_wait_for_function, browser_wait_for_network_idle), leaving the agent to guess which wait tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many browser_wait_for_* siblings, nor any stated prerequisite such as an active session. The agent must infer everything about selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_functionC
Wait for a JavaScript expression to become truthy.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ||
| session_id | Yes | ||
| timeout_seconds | No | ||
| poll_interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It conveys only the core blocking-wait semantics and says nothing about what happens on timeout (error vs. false return), that polling occurs, or that it is a safe read operation β all of which are relevant for an agent deciding whether to block on this call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, but it is under-specified rather than efficient β there is no second sentence of useful context, which this four-parameter wait tool clearly needs.
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 four parameters, zero schema coverage, no annotations, and multiple sibling wait tools, the definition is too thin. The output schema means return-value detail is not needed, but timeout behavior, polling, and selection versus alternatives are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, and the description compensates only by loosely implying the 'script' argument. Required session_id and the optional timeout_seconds and poll_interval_seconds (with their defaults) get no explanation of format, units, or effect on behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: waiting until a JavaScript expression is truthy. The 'JavaScript expression' scope implicitly separates it from the sibling wait tools (browser_wait_for_selector, browser_wait_for_url, browser_wait_for_text), though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this over browser_wait_for_selector, browser_wait_for_text, browser_wait_for_network_idle, or plain browser_wait, despite five near-neighbor wait tools in the sibling list. The agent must infer the distinction purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_network_idleC
Wait until in-page network activity is idle.
| Name | Required | Description | Default |
|---|---|---|---|
| idle_ms | No | ||
| session_id | Yes | ||
| max_inflight | No | ||
| timeout_seconds | No | ||
| poll_interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden, and it delivers almost nothing: it does not say whether the call blocks, what happens when timeout_seconds elapses (error vs. silent return), or whether idle means zero in-flight requests plus a quiet period. For a timing-sensitive wait tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally clean, but for a tool with five parameters and no other documentation it is under-specified rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, but the definition still leaves timeout semantics, idle definition, and four of five parameters undocumented with no annotations to fall back on. Only the required session_id and the defaults make a minimal call safe.
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?
Five parameters with 0% schema description coverage, and the description explains none of them. Cryptic fields like idle_ms and max_inflight (default 0) are left entirely undefined, so an agent cannot reason about how to tune the wait window versus the timeout.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Wait') plus a precise resource ('in-page network activity is idle'), which is genuinely distinct from the other wait siblings (selector/url/text/function). It does not, however, explicitly contrast itself with browser_wait or the polling variants, so an agent must infer the difference from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to prefer this over browser_wait, browser_wait_for_function, or browser_network_capture_*. No prerequisite or sequencing advice (e.g. call after clicking a navigation trigger) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_selectorC
Wait until selector appears or timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | ||
| session_id | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only that the wait ends on appearance or timeout, but says nothing about what happens on timeout (error vs. falsy return), whether it polls or blocks, whether it is safe/non-destructive, or any session requirement. An output schema exists, so return-shape detail is not required, but the timeout semantics remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler. It is efficient rather than padded, though the extreme brevity is under-specification rather than a model of concision.
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 three-parameter browser tool with zero schema descriptions, no annotations, and five closely related wait siblings, this description is not complete enough. The output schema covers return values, but timeout behavior, selector format, and sibling differentiation are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are three parameters (selector, session_id, timeout_seconds) with no per-field descriptions. The description only alludes to the timeout concept and adds no meaning for selector syntax (CSS vs. XPath) or the required session_id, so it fails to compensate 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?
States a verb (wait) and a resource (selector), so an agent knows the operation, but the phrasing largely restates the tool name. It does not distinguish this from the many sibling wait tools (browser_wait, browser_wait_for_text, browser_wait_for_url, browser_wait_for_function, browser_wait_for_network_idle), so the reader must infer the difference from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over browser_wait, browser_wait_for_text, or browser_wait_for_function, nor any prerequisite or sequencing note (e.g., run after navigation). Usage must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_textC
Wait until text appears in a selector.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| selector | No | body | |
| session_id | Yes | ||
| case_sensitive | No | ||
| timeout_seconds | No | ||
| poll_interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: it doesn't say whether the call blocks, what happens on timeout (error vs. false return), that it polls, or that the default timeout is 10s. 'Wait until' implies blocking, which is the only behavioral hint provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though the brevity edges into under-specification for a six-parameter tool with no annotations.
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?
An output schema exists, so return values need not be explained, but for a 6-parameter polling/wait tool with 0% schema coverage and no annotations the description omits critical context: timeout semantics, failure behavior, and matching/case rules. An agent cannot call this correctly without guessing.
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% across 6 parameters, so the description must compensate and it does not. It alludes to only two parameters (text, selector) with no format or matching details, and never mentions case_sensitive, timeout_seconds, poll_interval_seconds, or session_id.
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 gives a specific verb (wait) and resource (text) plus a location qualifier (in a selector), so the core behavior is unambiguous. It does not, however, distinguish itself from the crowded wait family (browser_wait_for_selector, browser_wait_for_url, browser_wait_for_function, browser_wait_for_network_idle), so an agent must rely on the name alone to pick correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the four sibling wait tools, and no statement of preconditions (e.g. an active session, page loaded). The only usage signal is the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_urlC
Wait for URL substring or regex match.
| Name | Required | Description | Default |
|---|---|---|---|
| url_regex | No | ||
| session_id | Yes | ||
| url_contains | No | ||
| timeout_seconds | No | ||
| poll_interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing beyond the one-liner: it doesn't state that the call blocks/polls, what happens on timeout (return vs. throw), or that url_contains and url_regex are alternative match modes. For a long-running wait primitive this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler, but it is under-specified rather than truly concise given the tool's complexity. The brevity is not excessive wording but excessive omission.
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?
An output schema exists, so return values needn't be explained. However, with no annotations, 0% parameter coverage, and five parameters, the description leaves critical blocking/timeout/match-mode semantics undefinedβnot complete enough for an agent to call this reliably.
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% across 5 parameters. The phrase 'substring or regex match' loosely maps to url_contains and url_regex, but session_id, timeout_seconds, and poll_interval_seconds are given no meaning beyond their names, and the mutual-exclusivity/alternative behavior of the two matchers is unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Wait for URL') with the acceptance criteria ('substring or regex match'), which distinguishes it from browser_wait_for_selector, browser_wait_for_text, and browser_wait_for_function among its siblings. It's clear but does not name or route against those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing tells the agent when this is preferable to browser_wait_for_selector or browser_wait_for_network_idle, nor when to choose url_contains vs url_regex. Usage is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_getC
Get one session summary.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read, but does not state whether the session must exist or be active, what happens on an unknown or expired session_id, or what the summary contains β and it does not flag any error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, which is structurally clean and front-loaded. But the brevity here is under-specification rather than true conciseness β the sentence is too thin to earn its place as the tool's only guidance.
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?
An output schema exists, so return values need not be described. Still, with zero annotation coverage and a completely undocumented parameter, the description should at minimum clarify the session_id source and when this read is appropriate; those gaps make it incomplete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter, and the description does not compensate: it never explains what a session_id is, where it comes from (e.g., session_start), or its expected format. With one undocumented required parameter, the description adds no meaning beyond the schema's field name.
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 gives a verb ("Get") and a resource ("one session summary"), and "one" weakly distinguishes it from the sibling session_list. However, "summary" is left ambiguous β it is unclear whether this returns full session state, metadata, or a condensed view β so the agent cannot tell precisely what it retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus session_list, session_state_paths, or session_get_policy, nor any prerequisite such as needing an active session. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_get_policyC
Get runtime policy for one session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. 'Get' implies a safe read, but there is no mention of auth requirements, error behavior for unknown sessions, or what 'runtime policy' encompasses. Only the barest hint of the operation type is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity reflects under-specification rather than tight writing.
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?
An output schema exists, so return values needn't be explained, and this is a simple single-parameter read tool. However, the absence of annotations, parameter documentation, and usage guidance leaves the definition barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema documents nothing about session_id. The description does not compensate by explaining the identifier's format or source, though the parameter name is largely self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (runtime policy) with a clear scope (one session). It implicitly contrasts with the sibling session_set_policy, though it never names or explains the distinction explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this tool versus session_set_policy, session_get, or session_state_paths is provided. The description offers no context or prerequisites, leaving the agent to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_listB
List active browser sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. 'Active' usefully narrows the result set, but it doesn't say whether terminated/stale sessions are excluded, whether sessions are scoped per-account, or how the list relates to session_state_paths or browser_tab_list. For a zero-parameter read tool this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the scope qualifier front-loaded and zero waste. It is only docked because the extreme brevity leaves obvious clarifying information unstated.
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?
Output schema exists, so return values need not be described, and there are no parameters to document. For a simple listing tool the definition is nearly sufficient; the remaining gap is the implicit relationship to session_get and the session-stop tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the schema is trivially complete. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('list ... sessions') with a scope qualifier ('active browser'). It distinguishes this from session_get/session_profile_list/session_proxy_list by the word 'active', though it never explicitly names an alternative, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives. The agent must infer that this is the discovery step before session_get or session_stop; nothing in the text says so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_profile_deleteC
Delete profile metadata or entire profile directory.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes | ||
| delete_user_data_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a destructive operation. It hints at two modes (metadata vs. entire directory) but says nothing about irreversibility, permissions, side effects, or whether running sessions are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no filler, front-loading the verb and resource. The trailing 'or entire profile directory' clause is terse to the point of ambiguity about the triggering condition.
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?
An output schema exists so return values need not be described. However, for a destructive tool with zero annotations and 0% parameter coverage, the definition omits critical context: irreversibility, what exactly gets removed, and the effect of delete_user_data_dir.
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 both parameters. It alludes to the metadata-vs-directory distinction that maps to delete_user_data_dir, but never names the parameter, states the default, or clarifies what toggling it actually does. The required 'profile' parameter is entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (profile metadata / profile directory), and distinguishes two deletion scopes. It does not explicitly name or differentiate itself against siblings like session_profile_list or session_proxy_delete, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no warning about when deletion is appropriate or dangerous. The agent must infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_profile_getB
Get one saved profile by name or account alias.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read but never states read-only semantics, error behavior for an unknown profile name, or any auth/permission requirements for a session-scoped lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key information front-loaded and no filler. It is efficient, though arguably terse given the absence of annotations.
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?
An output schema exists, so return values need not be described, and there is only one parameter. However, with zero annotations and no error or identity resolution guidance, the definition is only minimally complete for an agent to call it reliably.
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 schema only says 'Profile' is a string. The description adds genuine value by clarifying the accepted forms ('by name or account alias'), partially compensating for the coverage gap, but it gives no format or validation 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?
States a specific verb (get) and resource (saved profile) with scope ('one'), which cleanly distinguishes it from the sibling session_profile_list. It does not explicitly name siblings, but the singular/plural split is self-evident.
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?
Usage is implied by 'saved profile' but there is no explicit when-to-use, no note on what happens if the profile is missing, and no pointer to session_get or session_profile_list as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_profile_listB
List saved browser profiles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a safe read, but nothing states whether results are paginated, sorted, filtered by session, or require an active session β all plausible concerns given the session-scoped sibling set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding, which is appropriate for a trivial no-argument list operation. It is terse rather than wasteful, though it leaves room for one routing clause.
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?
An output schema exists, so return values need not be explained, and a 0-param tool is simple. However, with no annotations and no hint about how this differs from session_list or session_profile_get, the definition is only minimally complete for an agent navigating a large sibling set.
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 takes zero parameters, so the baseline of 4 applies; there is no parameter semantics to document and the description does not mislead about inputs.
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 a specific verb and resource ('List saved browser profiles'), which is unambiguous and distinguishable from mutation siblings like session_profile_set or session_profile_delete. It does not explicitly differentiate itself from the similarly named session_list or session_profile_get, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus session_list, session_profile_get, or the other session_profile_* siblings. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_profile_regenerate_fingerprintB
Regenerate and persist a new fingerprint for a profile using BrowserForge's Bayesian network. The new fingerprint replaces the profile's stored identity; subsequent launches will use it. Optional os ('windows', 'macos', 'linux') and browser (default 'chrome') control the generated identity's platform family.
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | ||
| browser | No | ||
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses that the new fingerprint replaces the stored identity and that subsequent launches use it, but omits permissions, reversibility, failure modes, or whether the profile must already exist.
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 front-loaded with the action and effect, then parameter details, and all sentences carry useful information. The BrowserForge implementation detail is slightly non-essential but not harmful.
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?
Because an output schema exists, the description need not explain return values. It covers purpose, persistence, and the platform-family parameters well enough to invoke the tool, though it lacks usage routing and safety warnings that would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It supplies the allowed os values ('windows', 'macos', 'linux') and a browser default ('chrome'), and its 'for a profile' phrasing implies the required profile argument. It still does not document the profile identifier format, and the stated browser default conflicts mildly with the schema's null default.
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 gives a specific verb (regenerate) and resource (fingerprint for a profile) and states the effect on the stored identity. It does not explicitly distinguish this from the sibling session_set_fingerprint, so it falls short of the top score.
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 what the tool does and its persistence effect, but gives no guidance on when to use it instead of session_set_fingerprint, session_profile_set, or other profile-related siblings. No when-to-use or when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_profile_setB
Create or update a saved profile. launch_options (optional) is a dict of per-profile launch settings keyed by the same fields session_start accepts (headless, start_url, browser_args, sandbox, fingerprint, proxy, proxy_ref, cookie_file, cookie_fallback_domain, webrtc_leak_protection, browser_executable_path, user_data_dir, engine). fingerprint (optional dict) is the profile's persisted browser identity β generated automatically on first launch if not set, but can be set/overridden here. It takes precedence over launch_options fingerprint fields in the merge chain. proxy_ref (optional string) binds a proxy registry entry to the profile as its default proxy. Overrides any proxy_ref in launch_options. warming_status (optional) is 'none', 'partial', or 'warm'.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes | ||
| proxy_ref | No | ||
| description | No | ||
| fingerprint | No | ||
| launch_options | No | ||
| warming_status | No | ||
| account_aliases | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add real behavior: fingerprint is auto-generated on first launch if unset, fingerprint takes precedence over launch_options in the merge chain, and proxy_ref overrides launch_options proxy_ref. It still omits side-effect traits such as whether an unknown profile name silently creates one, persistence durability, and permission/auth requirements, so it is only partially transparent.
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 purpose is front-loaded in the first clause and the remaining sentences are dense with usable semantics rather than filler. It is long, but nearly every sentence carries new information about a parameter, so length is justified.
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 output schema exists, so return values need no explanation, and the highest-risk parameters (fingerprint, launch_options, proxy_ref, warming_status) are explained. However, for an upsert mutation with zero annotation coverage, missing coverage of the required profile param and account_aliases leaves the definition incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 params, so the description must compensate. It documents launch_options (with a full key list), fingerprint, proxy_ref and warming_status semantics well, but leaves profile (the only required param), description and account_aliases entirely undocumented β a meaningful gap for the single required input.
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?
Opens with a specific verb+resource: 'Create or update a saved profile', which is an upsert clearly distinct from sibling session_profile_get, session_profile_list and session_profile_delete. It stops short of naming a sibling to route against, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to prefer this tool over alternatives such as session_profile_regenerate_fingerprint or session_set_fingerprint, and no prerequisites (e.g. whether an active session or existing profile is required). The precedence notes about fingerprint vs launch_options fingerprint fields are about field merging, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_proxy_deleteC
Delete a proxy registry entry by name.
| Name | Required | Description | Default |
|---|---|---|---|
| proxy_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it says nothing about permanence, whether deletion fails or is a no-op for unknown names, or what happens to live sessions using that proxy. 'Delete' implies destruction but no consequences are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, though its brevity is partly under-specification rather than disciplined 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?
This is a destructive mutation with no annotations and no output guidance needed (output schema exists), but the description omits the behavioral context an agent needs to call it safely: what is removed, what breaks, and how an unknown name is handled.
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 only parameter, proxy_name, is documented solely by its title. 'By name' merely restates the parameter name; it adds no format, case-sensitivity, or lookup-failure semantics to compensate for the coverage 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?
States a specific verb (delete) and resource (a proxy registry entry) plus the selector (by name), which cleanly separates it from session_proxy_set/get/list siblings. It only lacks an explicit contrast naming the siblings it replaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete versus when to use session_proxy_set or session_rotate_proxy, and no note about preconditions or effect on sessions currently bound to the proxy. The agent must infer usage entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_proxy_getC
Get one proxy registry entry by name.
| Name | Required | Description | Default |
|---|---|---|---|
| proxy_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup but does not state whether it is safe, what permissions are needed, or how it behaves when the proxy name is not found.
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 single sentence is efficiently front-loaded and contains no filler. It is appropriately short for a simple getter, though the extreme brevity contributes to gaps documented in other dimensions.
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?
An output schema exists, so the return value does not need explanation in the description. The tool is simple with one required parameter, but the absence of annotations, parameter detail, and any usage or error context leaves it only minimally 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%, so the description must compensate for the undocumented proxy_name parameter. Saying 'by name' adds only minimal selector context, with no format, constraints, or examples for the expected proxy name 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 states a specific verb ('Get') and resource ('proxy registry entry') with a scoping condition ('by name'). This clearly distinguishes it from sibling write/delete/list tools like session_proxy_list, session_proxy_set, and session_proxy_delete, though it does not name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. It does not state prerequisites, when to prefer this over session_proxy_list, or what happens if the named entry is absent. Usage can only be inferred from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_proxy_listB
List saved proxy registry entries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'List' implies a read-only, non-destructive operation, but the description never confirms this, nor mentions ordering, scoping, or pagination behavior for the registry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the resource is front-loaded after the verb. It is efficient, though so terse that it omits any actionable guidance an agent might need.
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?
An output schema exists, so the description need not document return values, and with no parameters there is no argument surface to explain. For a trivial zero-arg list tool, this is essentially complete; only the sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. Schema coverage is nominally 100% because the empty object is fully described by its own shape.
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 gives a specific verb ('List') and resource ('saved proxy registry entries'), so the agent knows exactly what the tool returns. It does not, however, distinguish itself from sibling tools like session_proxy_get or session_rotate_proxy, leaving the boundary to be inferred from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as session_proxy_get for a single entry, nor any caveats about scope (all saved entries vs. session-active proxies). Usage must be guessed from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_proxy_setA
Create or update a proxy registry entry. values accepts either discrete fields ({scheme, host, port, username, password, rotation_url, tags}) or a single server URL ({server: 'http://user:pw@host:port', rotation_url, tags}). The persisted form is always discrete fields; server is decomposed at write. Profiles and session_start reference the entry by name via the proxy_ref field.
| Name | Required | Description | Default |
|---|---|---|---|
| merge | No | ||
| values | No | ||
| proxy_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose a real behavioral trait β that the persisted form is always discrete fields and that a 'server' URL is decomposed at write β which is valuable non-obvious context. But it is silent on permissions/auth needs, what happens to omitted fields, and the semantics of the 'merge' flag, leaving meaningful gaps for an upsert.
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 dense sentences, front-loaded with the action before the input-shape detail, and no filler. It is information-rich but the second sentence's inline field list makes it slightly heavy to parse; still efficient overall.
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?
An output schema exists, so return values need not be explained, and the description covers the dual input forms, the persisted representation, and the cross-tool referencing model well. The remaining gap is the merge/update-vs-overwrite behavior, which is central to an upsert tool and left unaddressed.
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, and it does well for the complex 'values' parameter by enumerating both accepted shapes and their fields. However, it adds nothing about 'merge' (default true, undocumented) and only gestures at 'proxy_name' by saying entries are referenced by name. Partial compensation, not full.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair and resource ('Create or update a proxy registry entry'), which cleanly separates it from session_proxy_list, session_proxy_get, and session_proxy_delete. It also names the two accepted input shapes, so the agent knows exactly what kind of write this is before opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining that profiles and session_start reference entries via proxy_ref, which gives context for why one would create an entry. However, it never states when to use this versus session_rotate_proxy or session_set_fingerprint, nor any exclusions or prerequisites. Usage is implied rather than declared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_rotate_proxyA
Rotate the upstream exit IP for a session whose proxy was launched with a rotation_url. Hits the provider's rotation endpoint, waits a short settle window for the new IP to take over, re-probes through the proxy to confirm the new egress, and (by default) re-aligns the browser identity β timezone, locale, languages, geolocation β to the new egress. Caller-pinned fingerprint fields from session_start or session_set_fingerprint continue to win over the proxy-derived defaults, just like at launch. Returns old + new egress summaries, the (redacted) rotation endpoint, the rotation response payload, and whether the exit IP actually changed. Fails if the session has no proxy or its proxy has no rotation_url.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| settle_seconds | No | ||
| realign_identity | No | ||
| probe_timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses the internal sequence (hit rotation endpoint, wait settle window, re-probe, realign identity), the default identity-realignment behavior, the precedence of caller-pinned fingerprint fields, what is returned, and the exact failure condition. This is substantial behavioral context beyond any structured field.
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?
Front-loaded with the core action and generalized well, with each sentence carrying information. It is dense and slightly long, but no sentence is filler given the behavior it must convey without annotations.
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 noiseless, high-complexity mutation tool with an output schema already present, the description still supplies the behavioral, precedence, and failure-mode detail an agent needs. Return values are covered by the output schema, so its coverage of the remaining surface is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It maps loosely to settle_seconds (the 'short settle window'), realign_identity ('by default re-aligns'), and probe (re-probing to confirm the new egress), but never names units, defaults, or the probe timeout parameter explicitly, leaving meaningful ambiguity for a 4-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?
States a specific verb (rotate) and resource (upstream exit IP for a session), and distinguishes itself from siblings like session_proxy_set/session_proxy_list by naming the exact precondition (proxy launched with rotation_url). An agent knows precisely what operation this performs.
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?
Gives a clear precondition for use (session whose proxy has a rotation_url) and an explicit failure case (no proxy or no rotation_url). It does not name the alternative tool to use when those preconditions fail, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_set_download_dirC
Set default download directory for one session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| download_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It signals a mutation and that the setting is per-session, but says nothing about permissions, persistence across restarts, whether the path must exist, or whether it overrides an existing value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence, front-loaded with the action and target. No wasted words, though it is arguably under-specified rather than optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a mutation tool with zero annotation coverage and 0% parameter documentation, the description omits key operational context an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is documented in the schema. The phrase 'for one session' loosely maps to session_id, but the description adds no format, path-type, or validation detail for download_dir, so it does not compensate for the 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?
States a specific verb ('Set') and resource ('default download directory'), scoped to one session. It is clear what the tool does, though it does not differentiate itself from sibling setters like session_set_fingerprint or session_set_policy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to invoke this versus alternatives, no prerequisites (e.g., an existing session), and no mention of what happens if a directory was already set. The intended usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_set_fingerprintA
Apply identity/anti-detect overrides to a live session via engine-level CDP where possible (propagates to workers and HTTP headers). Accepts any of: timezone_id, locale, languages (list or comma string), accept_language, latitude/longitude/geo_accuracy, user_agent, platform, hardware_concurrency, device_memory (GB), screen {width,height,device_scale_factor,mobile,max_touch_points}, webgl_vendor, webgl_renderer. Note: navigator.languages is best pinned at launch (--lang) since workers can't be rewritten at runtime; reload the page after this call so new-document JS overrides (deviceMemory, WebGL) take effect everywhere.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| fingerprint | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that changes propagate to workers and HTTP headers, that navigator.languages cannot be rewritten at runtime in workers, and that a reload is required for deviceMemory/WebGL overrides to take effect. It stops short of stating failure behavior or whether overrides persist across sessions, which keeps it out of the top band.
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?
Front-loaded with verb, resource, and mechanism before the field enumeration and the caveat note. The long field list is dense but necessary given the empty schema; the only mild cost is a run-on second sentence that mixes the accepted-keys list with the runtime caveat.
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?
An output schema exists, so return values need no explanation, and the description covers propagation scope, runtime limitations, and the required reload. Remaining gap is edge-case behavior β what happens if the session is absent or a field is unsupported β which an agent would still have to discover by calling.
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 fingerprint object has no declared properties), so the description is the only contract, and it enumerates accepted keys exhaustively with types and units: languages as list or comma string, device_memory in GB, and nested screen sub-fields (width, height, device_scale_factor, mobile, max_touch_points). This is exactly the compensation a 0%-coverage schema demands.
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?
Specific verb ('Apply identity/anti-detect overrides') plus a precisely scoped resource ('a live session'), with the mechanism (engine-level CDP) named. The word 'live' implicitly separates it from profile-level siblings such as session_profile_set and session_profile_regenerate_fingerprint, so an agent can route correctly without opening the schema.
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?
Usage is implied by the setter framing and the operational note, but the description never explicitly states when to prefer this over session_profile_set or session_profile_regenerate_fingerprint, nor any prerequisite (e.g. that the session must be running). The 'reload the page after this call' instruction is a useful follow-up condition, but the when-not/alternative guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_set_policyC
Set runtime policy for one session.
| Name | Required | Description | Default |
|---|---|---|---|
| read_only | No | ||
| session_id | Yes | ||
| allow_evaluate | No | ||
| allowed_domains | No | ||
| blocked_domains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden for a mutation tool. 'Runtime' weakly hints the policy is session-scoped and non-persistent, but nothing is said about required permissions, whether null values mean 'leave unchanged' (all four policy params default to null), or whether the policy survives the session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is not conciseness here β it is under-specification. The one clause it contains is front-loaded and wastes no words, but it omits essentially all of the information an agent needs.
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 5-parameter mutation tool with no annotations and 0% schema coverage, this is wholly inadequate. The presence of an output schema excuses only return-value documentation; nothing else the agent needs is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and it does not. None of read_only, allow_evaluate, allowed_domains, or blocked_domains is mentioned, and the nullable-with-null-default semantics that govern every optional param are unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a plausible verb+resource combination ('Set runtime policy for one session'), but 'runtime policy' is left undefined β the schema's actual policy surface (read_only, allow_evaluate, allowed_domains, blocked_domains) is never surfaced. It also fails to distinguish itself from the sibling session_get_policy, which is the obvious read counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling session_get_policy for inspecting current policy. The agent is left to infer that this is the write counterpart to session_get_policy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_startA
Launch a new, isolated browser. By default it is ephemeral (no saved state) and headful. Pass profile= to launch a persistent managed profile whose cookies/storage survive across runs. Optional: headless, proxy, proxy_ref, start_url, cookie_file (one-shot cookie injection). engine selects the browser engine: 'cdp' (default) uses the system Chrome with Mithwire CDP/JS patches; 'stealth' uses a CloakBrowser binary with C++ source-level fingerprint patches for zero-lie stealth (requires pip install mithwire-mcp[stealth]). On unsupported platforms, 'stealth' falls back to 'cdp' with a warning. proxy accepts 'http://host:port', 'http://user:pass@host:port', the provider 'scheme:host:port:user:pass' form, or socks5://host:port (authenticated SOCKS not wired yet; use the HTTP endpoint). It can ALSO be a dict {server, username?, password?, rotation_url?} where rotation_url is an optional provider endpoint that rotates the upstream exit IP when hit. proxy_ref is the alternate form: a name pointing at an entry in the proxy registry (see session_proxy_set). The two are mutually exclusive per session β a literal proxy spec wins over a registry reference. When a proxy is set, the session is REFUSED if the proxy fails a pre-launch reachability + credentials probe (no half-launched browser, no fallback to the host's direct connection). On success, the browser identity defaults to the proxy egress (timezone, locale/languages, Accept-Language, geolocation) so the two never disagree; any field set in fingerprint={...} or in the profile's launch_options wins over the proxy default. Pass fingerprint={...} to override any identity field explicitly (timezone_id, languages, latitude/longitude, user_agent, platform, hardware_concurrency, device_memory, screen, webgl_vendor/webgl_renderer); see session_set_fingerprint. webrtc_leak_protection controls the WebRTC IP-leak guard: 'auto' (default; filters public ICE candidates when proxied so the real IP can't leak via STUN), 'filter' (always filter), 'disable' (remove RTCPeerConnection), or 'off'. skip_probe (default false): skip the pre-launch proxy health check entirely. Useful when the proxy has already been verified externally or when the proxy does not support the HTTPS CONNECT tunnel used by the default probe. Identity defaults (timezone, locale) will be derived via an in-browser lookup after launch. probe_timeout (seconds): override the default 8-second proxy probe timeout. Raise for slow residential/mobile proxies; the probe includes an automatic plain-HTTP fallback for proxies that fail the primary HTTPS/CONNECT path.
| Name | Required | Description | Default |
|---|---|---|---|
| proxy | No | ||
| engine | No | ||
| profile | No | ||
| sandbox | No | ||
| headless | No | ||
| proxy_ref | No | ||
| start_url | No | ||
| session_id | No | ||
| skip_probe | No | ||
| cookie_file | No | ||
| fingerprint | No | ||
| browser_args | No | ||
| probe_timeout | No | ||
| cookie_fallback_domain | No | ||
| webrtc_leak_protection | No | ||
| browser_executable_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so exceptionally: it discloses that a proxy failure REFUSES the session with no half-launched browser and no fallback to the host's direct connection, that identity defaults derive from proxy egress, that fingerprint/profile launch_options win over those defaults, the stealth-to-cdp fallback on unsupported platforms, and the WebRTC guard's four modes. This is exactly the failure-mode and safety context an agent 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?
It is front-loaded with purpose and mode selection, and nearly every sentence carries parameter or behavioral information that is otherwise absent from the schema. It is a single dense block rather than segmented, which mildly hurts scanability, but the length is largely justified by 16 undocumented 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?
An output schema exists, so return values need no explanation, and the description covers the high-stakes behaviors (proxy probe/refusal, identity derivation, WebRTC guard). It is nearly complete for a launch tool, with the residual gap being the five unmentioned 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% and there are 16 parameters, so the description must compensate; it explains most core parameters in depth, including the four accepted proxy string formats, the proxy dict shape with rotation_url, the engine values and install requirement, and the enumerable fingerprint fields. However, sandbox, session_id, browser_args, cookie_fallback_domain, and browser_executable_path are never mentioned, leaving five parameters undocumented anywhere.
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 opening sentence gives a specific verb and resource ('Launch a new, isolated browser') and immediately states the two operating modes (ephemeral by default, persistent when profile is passed). It clearly distinguishes the tool from siblings like session_stop, session_get, and session_profile_set, which are referenced by name for their own concerns.
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 gives actionable usage conditions: pass profile=<name> for persistence, skip_probe when the proxy was verified externally or lacks CONNECT support, raise probe_timeout for slow residential/mobile proxies, and it routes fingerprint overrides to session_set_fingerprint and registry entries to session_proxy_set. It lacks an explicit 'use this vs. alternatives' framing for the tool as a whole, but no alternative launcher exists, so the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_state_pathsB
Get centralized directories used for profiles, proxies, and cookies.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies read-only, but the description does not disclose safety, side effects, auth requirements, or whether it creates the directories; it only lists the categories involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately sized for a zero-parameter getter and does not bury the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complexity is low and an output schema exists, so the description need not explain return values. It states the resource retrieved, though it omits usage context and safety disclosure, which are covered by other scoring dimensions.
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 zero parameters, so there is nothing to document in the description. Per the rubric, zero parameters establishes a baseline of 4, and the description adds no conflicting or missing parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and names the resource ('centralized directories used for profiles, proxies, and cookies'). However, it does not distinguish this tool from sibling getters like session_get or session_profile_list, and 'centralized directories' remains somewhat generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions for calling it, and no mention of alternatives. The agent must infer usage entirely from the tool name and a single generic purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_stopC
Stop one session by id.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Stop' implies termination, but nothing is disclosed about reversibility, auth requirements, idempotency, or what happens to an already-stopped or invalid session id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and contains no filler. It is terse but not redundant, and every word serves the stated operation.
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 operation is simple and an output schema exists, so return values need not be described. However, with no annotations and no parameter description, the description omits where session_id comes from and what stopping actually does, leaving avoidable gaps for a destructive action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented session_id parameter. 'By id' only restates the parameter name and adds no format, source, or constraint details (e.g., that the id comes from session_start/session_list).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stop one session') and the 'one' implicitly contrasts with the sibling session_stop_all. It does not name an alternative explicitly, but an agent can distinguish the single-session versus all-sessions tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative is named. The contrast with session_stop_all must be inferred from the word 'one', which is the only routing hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_stop_allB
Stop all active sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden, and it discloses nothing beyond the operation itself. For a bulk-destructive call it does not say whether the action is reversible, whether it terminates the caller's own session, what happens when no sessions are active, or whether in-flight browser work is torn down.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the scope qualifier loaded early. It is efficient, though terseness here shades into under-specification rather than serving tight prose.
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?
An output schema exists, so return values need not be described, and there are no parameters to cover. However, as an unannotated bulk-termination operation, the description leaves material behavioral questions unanswered, making it only minimally 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (stop) and resource (sessions) with an explicit scope qualifier (all), which distinguishes it from the sibling session_stop that presumably targets one session. It does not name the sibling or spell out the distinction explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this bulk operation versus session_stop, no prerequisites, and no note about side effects on other callers. The agent must infer the entire selection context from the word 'all'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_trace_exportC
Export recorded trace to a JSON file.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| output_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet only says it exports to a file. It omits whether the trace must be stopped, whether output_path is overwritten, path constraints, and permission/auth requirements for a tool that clearly writes to disk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded and no filler. It is efficient, though its brevity reflects under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a two-parameter write-to-disk tool with no annotations and 0% schema coverage the description is too thin. It leaves preconditions and side effects unstated.
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 both parameters, so the description must compensate and largely does not. It only implies output_path (a JSON file) and session_id (the recorded trace), with no format, path syntax, or validity 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?
States a specific verb (export), resource (recorded trace), and output format (JSON file), so the action is unambiguous. However, it does not distinguish itself from close siblings like session_trace_get or session_trace_replay, leaving the agent to infer which trace-access tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus session_trace_get, session_trace_replay, or whether a trace must be started/stopped first. The agent receives no context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_trace_getC
Read recorded session trace events.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Read' implies a safe, non-mutating operation, but nothing is said about pagination behavior, ordering of events, or whether a trace must already be running/stopped. With zero annotation coverage these gaps matter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is concise, though the brevity contributes to the specification gaps captured elsewhere rather than being a virtue on its own.
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?
An output schema exists, so return values need not be described. However, for a 3-parameter read tool with no annotations and no schema coverage, the description omits pagination semantics, trace lifecycle prerequisites, and usage context that an agent needs.
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% across three parameters (session_id, limit, offset) and the description adds no meaning for any of them. It does not explain that limit/offset paginate results or what session_id must reference, leaving all three effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('recorded session trace events'), which is enough to distinguish it from mutation siblings like session_trace_start/stop. It does not explicitly differentiate from session_trace_export or session_trace_replay, which also surface trace data, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling alternatives (export, replay, start/stop). The agent must infer from the name alone when this read is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_trace_replayC
Replay a trace file against a session.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| session_id | No | ||
| trace_path | Yes | ||
| stop_on_error | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing. It does not say whether replay re-executes network traffic, mutates session state, requires an active session, or whether it is safe/reversible; adding 'against a session' hints at a target but not the side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single waste-free sentence, but being one short clause it is under-specified rather than appropriately sized for a four-parameter action tool. Nothing is front-loaded beyond the bare purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a mutation-style tool with no annotations and four undocumented parameters the definition is far from complete. It omits prerequisites, side effects, and the meaning of dry_run/stop_on_error.
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% across four parameters, so the description must compensate and does not. 'Trace file' loosely implies trace_path, but dry_run, stop_on_error, and session_id are entirely unexplained in both schema and description, so the defaults and their effects are opaque.
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?
Names a specific verb (Replay) and resource (trace file) plus the target (a session), which is more informative than the neighboring session_trace_start/stop/get/export tools. It never explicitly distinguishes itself from those siblings, but the verb 'replay' is distinctive enough for an agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus session_trace_start, session_trace_get, or session_trace_export, no prerequisites, and no mention of when replay is appropriate. The agent must infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_trace_startC
Start recording session action trace.
| Name | Required | Description | Default |
|---|---|---|---|
| trace_id | No | ||
| session_id | Yes | ||
| capture_html_on_error | No | ||
| capture_screenshot_on_error | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: not what a trace records, whether it is per-session or global, what happens if one is already active, nor any overhead or permission implications. A single sentence cannot cover a stateful recording tool with no annotation support.
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?
One front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is partly under-specification rather than pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with four parameters at 0% coverage and zero annotations the definition leaves too much undocumented for a stateful start-recording operation. The sibling set clearly suggests a trace lifecycle the description never acknowledges.
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 four parameters (trace_id, session_id, capture_html_on_error, capture_screenshot_on_error) are documented only by name and default. The description adds no meaning for any of them, leaving the two capture_* flags and the optional trace_id entirely unexplained.
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?
"Start recording session action trace" gives a specific verb (start) and resource (session action trace), which reads clearly against siblings like session_trace_stop and session_trace_get. It stops short of explicitly differentiating when this should be used versus those siblings, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and does not mention the natural alternatives (session_trace_stop/get/export) that surround it. An agent must infer everything about timing and sequencing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_trace_stopC
Stop recording session action trace.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the action. It does not say what happens to the captured trace data, whether the stop is idempotent, whether the session itself remains active (vs. session_stop), or whether the trace must later be exported with session_trace_export.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is economical, though arguably too terse for a tool whose behavior is not self-evident from the name alone.
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?
An output schema exists, so return values need not be explained, but the description still omits everything an agent needs beyond the name: trace-data fate, idempotency, session-vs-trace scope, and the relationship to the other session_trace_* and session_stop siblings.
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 single session_id parameter is undocumented in both schema and description. The description adds no meaning about which session's trace is stopped or what happens if the id is invalid. With one undocumented parameter, the description should compensate but does not.
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 gives a specific verb and resource: 'Stop recording session action trace.' An agent can tell this is the termination counterpart to session_trace_start. However, it never explicitly names or differentiates itself from siblings like session_trace_get, session_trace_export, or session_stop, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The lifecycle implied by the name (stop a trace previously started) is left entirely to inference, and the crucial question of how this differs from session_stop is not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_warmupA
Warm a browser session by visiting sites to accumulate realistic browsing state (cookies, localStorage, history). A fresh profile with no history is a strong bot signal; this tool builds a natural footprint. Uses a curated site list by default; pass sites= to override. geo_region filters the built-in list to a country code (e.g. "US", "GB", "DE") plus global sites.
| Name | Required | Description | Default |
|---|---|---|---|
| sites | No | ||
| visits | No | ||
| max_dwell | No | ||
| min_dwell | No | ||
| geo_region | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the mechanism and side effects (visits sites, accumulates cookies/localStorage/history, uses a curated list) but omits operational traits such as how long the warmup takes, whether it blocks, rate limits, or whether an active session is required.
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?
Front-loaded with purpose, then rationale, then default/override behavior in four tight sentences. No filler, though the geo_region sentence is slightly dense and could be split.
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?
An output schema exists, so return values need no explanation, and the description adequately frames the tool's intent. However, for a 6-parameter, annotation-free state-mutating tool it should say more about timing, required session state, and the remaining dwell/visits 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% across 6 parameters, so the description must compensate. It adds real meaning for sites (override of the curated default) and geo_region (country code plus global sites, with examples), but leaves visits, max_dwell, min_dwell, and session_id entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Warm a browser session by visiting sites') and explains the concrete effect (accumulating cookies, localStorage, history). It is clearly distinguishable from siblings like browser_navigate or session_start because it describes the footprint-building purpose, not just 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?
Gives a clear rationale for when this matters ('A fresh profile with no history is a strong bot signal; this tool builds a natural footprint'), which implies usage before navigation. It also explains the default curated list versus the sites= override, but names no explicit alternative tool or exclusion condition.
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.
70 tool updates
v0.5.1- First observed
browser_back - First observed
browser_click - First observed
browser_console_messages - First observed
browser_cookies_clear - First observed
browser_cookies_get - First observed
browser_cookies_save - First observed
browser_cookies_set - First observed
browser_downloads - First observed
browser_evaluate - First observed
browser_forward - First observed
browser_handle_dialog - First observed
browser_html - First observed
browser_mouse_click - First observed
browser_mouse_move - First observed
browser_navigate - First observed
browser_network_capture_get - First observed
browser_network_capture_start - First observed
browser_network_capture_status - First observed
browser_network_capture_stop - First observed
browser_network_requests - First observed
browser_press_hold - First observed
browser_query - First observed
browser_reload - First observed
browser_scroll - First observed
browser_set_file_input - First observed
browser_snapshot - First observed
browser_solve_cloudflare - First observed
browser_storage_clear - First observed
browser_storage_get - First observed
browser_storage_set - First observed
browser_tab_close - First observed
browser_tab_current - First observed
browser_tab_list - First observed
browser_tab_new - First observed
browser_tab_switch - First observed
browser_take_screenshot - First observed
browser_type - First observed
browser_url - First observed
browser_wait - First observed
browser_wait_for_function - First observed
browser_wait_for_network_idle - First observed
browser_wait_for_selector - First observed
browser_wait_for_text - First observed
browser_wait_for_url - First observed
session_get - First observed
session_get_policy - First observed
session_list - First observed
session_profile_delete - First observed
session_profile_get - First observed
session_profile_list - First observed
session_profile_regenerate_fingerprint - First observed
session_profile_set - First observed
session_proxy_delete - First observed
session_proxy_get - First observed
session_proxy_list - First observed
session_proxy_set - First observed
session_rotate_proxy - First observed
session_set_download_dir - First observed
session_set_fingerprint - First observed
session_set_policy - First observed
session_start - First observed
session_state_paths - First observed
session_stop - First observed
session_stop_all - First observed
session_trace_export - First observed
session_trace_get - First observed
session_trace_replay - First observed
session_trace_start - First observed
session_trace_stop - First observed
session_warmup
TDQS
Scored across 70 tools
Most tools have clearly distinct purposes, and descriptions explicitly differentiate potentially overlapping pairs. Some ambiguity exists among the many browser_wait_for_* variants and between browser_network_requests and the browser_network_capture_* group, but the boundaries are generally recoverable from the descriptions.
The set follows a consistent snake_case prefix+action convention (browser_, session_, session_trace_, browser_network_capture_, etc.). Minor deviations are noun-only names like browser_url, browser_html, and browser_snapshot, but overall the pattern is predictable.
With 70 tools, the server far exceeds the typical 3-15 scoped range and lands in the rubric's 50+ extreme-mismatch category. Many fine-grained operations could be consolidated, making the surface unnecessarily heavy for an agent to select from reliably.
The surface covers the full lifecycle for sessions, profiles, proxies, traces, cookies, storage, network capture, and core browser interactions. Only minor gaps exist, such as dedicated select/dropdown or drag-and-drop helpers, which can largely be worked around with existing tools.
Maintenance
Related MCP Connectors
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Live browser debugging for AI assistants β DOM, console, network via MCP.
Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server that enables AI agents to automate browser testing via Chromium, providing tools for navigation, interaction, and inspection.-
- FlicenseBqualityCmaintenanceUltra-fast browser automation server over Chrome DevTools Protocol (CDP), exposed as MCP, enabling AI agents to control a real Chrome browser with low latency and minimal token usage.212-
- AlicenseAqualityAmaintenanceMCP server that lets AI agents drive your real Chromium browser with your existing signed-in sessions, providing visible, local, and inspectable automation for tasks like navigation, clicking, typing, and form filling.251Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and clients to control a real Chromium browser through MCP tool calls, including navigation, clicking, typing, JavaScript evaluation, screenshots, and DOM snapshots. Supports multiple isolated sessions over authenticated HTTP with no disk writes.Apache 2.0