>kitsune
Allows AI agents to drive the Firefox-family browser you already have open, providing tools for tab management, navigation, page reading, interaction (clicking, typing, filling forms), screenshots, cookies, storage, network capture, and session save/load.
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., "@>kitsuneopen a background tab to my GitHub notifications and summarize the unread ones"
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.
Kitsune
An MCP server that lets AI agents (Claude Code, Codex, Pi, …) drive the Firefox-family browser you already have open: Firefox, Zen, LibreWolf.
Your real browser. Logged-in sessions, cookies and extensions stay as they are.
No Playwright, no Chromium, no WebDriver. A WebExtension does the work, so there is no
navigator.webdriverflag or debugging port.Zero manual steps per session. The MCP server starts a shared bridge daemon on demand; any number of agents can use it at once.
How it works
agent ──stdio──▶ kitsune (MCP server, one per agent)
│ HTTP 127.0.0.1:47651 + bearer token
▼
bridge daemon (one per user, started on demand)
│ WebSocket 127.0.0.1:47652, moz-extension:// origin only
▼
Kitsune extension ──▶ tabs (content scripts)The agent launches
kitsuneover stdio.If no bridge is answering,
kitsunespawnspython -m kitsune.bridgeas a detached daemon. A file lock makes sure only one agent spawns it.The extension keeps reconnecting to the daemon, so it attaches by itself.
The daemon keeps running after the agent exits; the next agent reuses it.
Related MCP server: invisible-playwright-mcp
Requirements
Firefox-family browser, Gecko 142+ (Zen 1.23 / Firefox 142 or newer)
Python 3.10+ and uv
macOS or Linux (Windows untested since the fork)
Setup
Clone
git clone https://github.com/junyeong-nero/kitsune ~/workspace/kitsuneRegister the MCP server in your agent. See MCP clients.
Load the extension: open
about:debugging#/runtime/this-firefox→ Load Temporary Add-on… → pickextension/manifest.json(in the macOS file dialog, Cmd+Shift+G lets you paste the path). Temporary add-ons disappear when the browser restarts; signing is on the TODO.Check: restart the agent and ask it to call
browser_status. It should report"extension_connected": true.
MCP clients
Kitsune is a stdio MCP server. Every client runs the same command:
uv run --directory /path/to/kitsune kitsuneConfig files do not expand ~, so use an absolute path there. If the client
cannot find uv (common for GUI apps), use its full path from which uv.
Claude Code
claude mcp add -s user kitsune -- uv run --directory ~/workspace/kitsune kitsuneCodex CLI
codex mcp add kitsune -- uv run --directory ~/workspace/kitsune kitsuneor in ~/.codex/config.toml:
[mcp_servers.kitsune]
command = "uv"
args = ["run", "--directory", "/Users/you/workspace/kitsune", "kitsune"]opencode: ~/.config/opencode/opencode.json (global) or opencode.json at a git repo root
(project). Write it by hand: opencode mcp add (v2.0.28) writes mcp.servers, which opencode mcp list does not pick up.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"kitsune": {
"type": "local",
"command": ["uv", "run", "--directory", "/Users/you/workspace/kitsune", "kitsune"],
"enabled": true
}
}
}Claude Desktop / Cursor / other mcpServers clients
(claude_desktop_config.json, ~/.cursor/mcp.json, …):
{
"mcpServers": {
"kitsune": {
"command": "uv",
"args": ["run", "--directory", "/Users/you/workspace/kitsune", "kitsune"]
}
}
}Several clients can be configured at once; they share one bridge daemon.
Tools
106 tools, all named browser_*. Tab-aware tools take an optional tab_id, so
an agent can work in a background tab without stealing focus.
Group | Examples |
Status |
|
Navigation |
|
Reading |
|
Interaction |
|
Visual |
|
Waiting |
|
Network / state |
|
Sessions |
|
Parallel work |
|
Policy / logs |
|
browser_js runs arbitrary JavaScript in the page. Prefer the specific tools.
Configuration
Variable | Default | Meaning |
|
| Data directory (0700) |
|
| Bridge HTTP API |
|
| Extension WebSocket. Change |
| — | Override the token in |
~/.kitsune/ holds:
File | Content |
| Bearer token for the HTTP API (0600, created on first start) |
| Daemon output |
| Saved sessions, including cookies |
| Screenshots |
Security
What the bridge protects against:
Web pages calling the local API. The HTTP API needs the bearer token and sends no CORS headers, so a page in the browser cannot use it.
DNS rebinding. Requests with a
Hostother than127.0.0.1/localhostare rejected.Web pages posing as the extension. The WebSocket only accepts
moz-extension://origins. Before this check, any page could connect and take over the extension's slot.
What it does not protect against:
Prompt injection. A page the agent reads can contain instructions. The agent acts with every account you are logged into.
Local processes running as your user can read the token.
Recommended: use a separate browser profile that only has the accounts the agent needs, and keep banking, mail and work SSO out of it.
Troubleshooting
Symptom | Check |
| Extension loaded? Browser restarted (temporary add-on gone)? |
|
|
|
|
|
|
Restart the daemon |
|
Layout
extension/ WebExtension (manifest v2, Gecko)
src/kitsune/
server.py MCP server, starts the bridge on demand
bridge.py Bridge daemon (HTTP API + WebSocket)
workflows/ Named workflows for browser_workflow
docs/ API reference, scraping playbooks, TODOCredits
Kitsune started as a fork of ZenLink
and ZenLink-MCP by Jay-Quan
(MIT). Changes since the fork: token auth, Host and origin checks, no CORS,
on-demand shared daemon, one package, browser_* tool names, ~/.kitsune data
directory, macOS support, mcp<2 pin.
License
MIT. See LICENSE.
Available Tools
106 toolsbrowser_auditB
Return recent command audit entries: action, params (JS code stripped), success flag, error, duration. Useful for "what did the agent do?" reviews.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add genuinely useful behavioral detail: the entries are recent command-level records and JS code is stripped from params before being returned (a meaningful data-handling trait an agent should know). It does not cover ordering, retention window, or any auth/permission requirement for reading the audit trail, so it remains partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The return-field enumeration is front-loaded and the use case follows, so nothing needs to be re-read.
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 there is no output schema, the description usefully enumerates the returned fields, which covers the return-value gap. But a query tool with two undocumented filtering parameters and no annotations still leaves the agent guessing about the time-window semantics, which is the one thing needed 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 of the two parameters is mentioned in the description. The agent gets no explanation of what limit caps or how since_ms is interpreted (epoch milliseconds vs. relative offset), even though the defaults (100, 0) imply a filtered-window query. The description does not 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?
The description names a specific verb+resource ("Return recent command audit entries") and enumerates the returned fields, so the agent knows exactly what this produces. It does not explicitly differentiate from nearby siblings like browser_logs or browser_console_logs, which could plausibly be confused with an audit log, 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?
"Useful for 'what did the agent do?' reviews" gives an implied use case, which is real guidance. However, it never states when NOT to use it or points to the alternative tools (browser_logs, browser_console_logs) for related diagnostic needs, leaving the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_backC
Go back in history (browser back button).
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 does not say what happens when there is no prior history (no-op vs. error), whether navigation waits for the page to load, or how it interacts with the currently active tab. For a history-mutating navigation action this is a notable 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 sentence that front-loads the action with the clarifying parenthetical, with no filler. It is efficient, though its brevity borders on under-specification rather than true 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?
For a simple no-output tool the concept is easy to grasp, but with no annotations and an undocumented tab_id the description leaves key call-time questions unanswered (which tab, behavior at the start of history). It is under-described for even a low-complexity navigation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter tab_id has 0% schema description coverage and no entry in the description, so an agent cannot tell whether null means the active tab, what happens with an invalid id, or whether the operation affects another tab's history. The description adds no meaning beyond the bare property 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?
States a specific verb (go back) and resource (history), and parenthetically clarifies it mirrors the browser back button, so the action is unambiguous. It does not differentiate from the sibling browser_forward or otherwise acknowledge its place among the navigation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this vs. browser_forward, browser_navigate, or browser_reload_tab, and no prerequisites or error conditions are mentioned. Usage is only implied by the name and the parenthetical aside.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_batchA
Run multiple commands in a single request for speed.
Each command is a dict with "action" and parameters. Add "tabId" to any command to target a specific tab instead of the active one. For true concurrency across tabs, prefer browser_parallel.
Available actions: navigate, newTab, closeTab, switchTab, click, type, setEditableContent, fill, scroll, hover, find, js, pageInfo, pageText, screenshot, tabs, forms, dom, sleep, waitForElement, pageTextByTabId, wakeTab, parallel
Args: commands: List of command dicts, e.g. [{"action": "navigate", "url": "..."}, {"action": "waitForElement", "selector": ".results", "timeout": 10000}, {"action": "pageText"}]
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavior. It discloses the tab targeting behavior and the list of available actions, and notes parallelism limits. However, it does not describe return format, error handling, ordering guarantees, or auth/rate constraints.
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 purpose sentence, followed by structured action list and example. Slightly verbose due to listing every action, but each part is useful. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the core invocation pattern and action enumeration, which is the most important missing schema information. It still omits return values, error semantics, and detailed parameter contracts for individual actions.
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 schema only says commands is an array of objects. The description compensates substantially by explaining the command dict shape (action + parameters) and giving an example, plus the tabId convention. This is better than 0% coverage but not exhaustive for all action parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (run multiple commands), resource (commands in a single request), and benefit (for speed). It clearly distinguishes itself from the many single-action siblings by being the batch runner.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: use for speed and targeting specific tabs via tabId. It explicitly points to browser_parallel for true concurrency. It does not state exclusions or when not to use batching beyond that, but the routing to an alternative is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_blurC
Blur an element (or document.activeElement if no selector).
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | No |
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 does disclose the useful default (falls back to document.activeElement), but says nothing about whether blur events are dispatched, what happens if the selector matches nothing, whether a tab_id is required, or what the result looks like.
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, front-loaded with the action and immediately qualifying the default target. Nothing is wasted, though the extreme brevity leaves the definition under-specified rather than merely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with zero schema description coverage, no annotations, and no output schema, the description leaves key gaps: tab_id semantics are undocumented and no return or error behavior is described. The active-element default is the only real completeness win.
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 explains selector semantics well, including the default when omitted, but leaves tab_id completely unexplained, so only one of two parameters gains meaning from the 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 ('blur') and resource ('an element'), and adds the default target (document.activeElement) when no selector is given. The sibling browser_focus is the natural counterpart, but the description never names it or draws the contrast, so differentiation is left implicit.
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 when blurring is appropriate versus focus-related siblings like browser_focus, and no prerequisites or context. The only guidance is the implicit 'omit selector to blur the active element.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_boundsC
Return getBoundingClientRect + viewport/page sizes for an element.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes |
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 does disclose the return content (bounding rect + viewport/page sizes), which is valuable since no output schema exists. However it omits whether the element is scrolled into view, how it handles a missing element, or whether it waits, so it is only moderately 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?
A single front-loaded sentence with no filler, and the key content (return value) comes first. It is efficient, though its brevity is partly a byproduct of under-specification rather than deliberate 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?
With no annotations, no output schema, and 0% parameter description coverage, the description is the only guidance available and it is thin. It should at minimum clarify the selector parameter, tab_id behavior, and error/wait behavior for an element-measurement tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for two undocumented parameters. It never mentions `selector` or `tab_id`; "for an element" only loosely implies a selector and gives no format, syntax, or tab-scoping semantics. The schema-completion burden is left unmet.
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 ("Return") and specific content (getBoundingClientRect plus viewport/page sizes for an element), so an agent knows exactly what it computes. It does not distinguish itself from nearby siblings like browser_computed_style, browser_full_page_metrics, or browser_element_screenshot, 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 explicit when-to-use guidance and no named alternative. The agent must infer that this is the tool for measuring an element's position/size versus, say, browser_computed_style or browser_full_page_metrics. No exclusions or contextual routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_broadcastA
Fire the same command at every listed tab in parallel.
Each tab gets the command with its own tabId injected. Returns per-tab results keyed by tab id.
Args: tab_ids: Tabs to target. command: Command dict, e.g. {"action": "pageInfo"} or {"action": "getReadability"}. timeout: Per-tab timeout in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| tab_ids | Yes | ||
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden, and it does disclose useful traits: parallel execution, automatic per-tab tabId injection, per-tab results keyed by tab id, and that timeout is per-tab. It says nothing about partial failure handling, concurrency limits, or whether mutating commands are safe to broadcast, so the safety profile remains unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sections, front-loaded with the core behavior before the argument list. Every sentence earns its place, and the arg notes are justified by the 0% schema coverage rather than redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a nested free-form command object, no output schema, and no annotations, the description covers the essentials: what runs in parallel, how tabId is injected, and the shape of the result. The remaining hole is failure/partial-success semantics, which for a broadcast tool is the one thing an agent would most want to know.
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 has to compensate, and it largely does: tab_ids are identified as the target tabs, timeout as per-tab seconds, and the free-form command object is illustrated with concrete examples ({"action": "pageInfo"}). This adds meaning the schema cannot, since command is an untyped object with additionalProperties and no examples of its own.
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: fire the same command at every listed tab in parallel. An agent can tell generally what it does, but the description never distinguishes it from overlapping siblings like browser_parallel or browser_batch, so the routing decision is left ambiguous.
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 only implied by the purpose sentence: use it when you want the same command applied across many tabs. There is no explicit when-not guidance and no mention of the closest alternatives (browser_parallel, browser_batch), which is a real gap in a sibling set this dense.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cacheC
Control the Kitsune bridge response cache.
Args: action: "clear", "status", or "ttl" seconds: TTL value when action is "ttl"
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | clear | |
| seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden for a state-mutating tool. It does not state what cache scope is affected (tab, session, bridge), whether 'clear' is destructive or reversible, what 'status' returns, or what effect setting a TTL has. Only the parameter surface is 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?
Two short lines of prose plus an Args block, with the purpose front-loaded before the parameter notes. Slightly arg-block heavy, but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-capable cache tool with no annotations, no output schema, and 0% schema coverage, the description should cover side effects, scope, and result shape. None of that is present, leaving an agent unable to predict the consequences of 'clear' or 'ttl'.
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 partly does: it documents the three valid action values and clarifies that seconds only applies when action is 'ttl'. However, it omits the default of 'clear' and the accepted range/units for seconds, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Control) and a specific resource (Kitsune bridge response cache), and enumerates the three action values. That is enough to distinguish it from the dozens of siblings like browser_clear_browsing_data or browser_status, though it does not name an alternative 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?
It lists the action values but never says when to reach for this tool versus siblings such as browser_clear_browsing_data, browser_reload_extension, or browser_storage, nor any prerequisites. Usage must be inferred entirely from the parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_capture_networkA
Capture network requests via the page's PerformanceObserver.
Args: op: "start" begins capturing fresh, "stop" pauses, "read" returns the buffer (default), "clear" empties it. since: When reading, only return entries with startTime >= since (ms). tab_id: Optional tab; defaults to active.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | read | |
| since | No | ||
| tab_id | No |
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 disclose meaningful behavior: capture is buffered, 'start' resets fresh, 'stop' merely pauses, and everything runs through the page's PerformanceObserver. It omits important traits such as buffer size limits, whether the buffer survives navigation, and what entry fields are returned.
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 sentence is front-loaded and the Args block is well structured with one line per parameter. It is tight overall, though the Args list format is somewhat mechanical rather than prose-optimized.
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 tool with no output schema and no annotations, the description covers the operation modes, filtering, and tab targeting adequately. It stops short of describing the shape of the returned buffer entries, which the agent would need to consume the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate, and it does: all three parameters are explained, including every op value, the millisecond semantics of 'since' ('startTime >= since'), and that tab_id is optional and defaults to the active tab.
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 network requests') and names the underlying mechanism (PerformanceObserver), so the agent knows exactly what is being observed. It does not, however, distinguish itself from nearby siblings like browser_intercept or browser_wait_for_network_idle, leaving overlap for the agent to resolve.
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 op modes ('start' captures fresh, 'stop' pauses, 'read' returns the buffer) implicitly tell the agent how to drive the tool, and 'read' being the default is helpful. There is no explicit guidance on when to prefer this over browser_intercept or browser_wait_for_network_idle, so usage versus alternatives is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_checkC
Set a checkbox or radio's checked state.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| checked | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for a mutation tool, yet it discloses nothing beyond the action itself: no scroll-into-view, event dispatch, error-on-missing-element, or idempotency behavior, and no return info. The only implicit hint is that a boolean 'checked' can both check and uncheck.
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 brevity here tips into under-specification rather than crisp conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation tool with no annotations, no output schema, and 0% schema coverage, the description is far too thin. Key details like tab targeting, selector syntax, and failure 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 it only loosely maps to 'checked'. Neither 'selector' (format expected) nor 'tab_id' (which tab is targeted) is explained 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?
Specific verb 'Set' plus a precise resource ('checkbox or radio's checked state') makes the action unambiguous and separates it from browser_click/browser_fill in concept. It stops short of naming alternatives or noting that it targets form controls specifically, so it isn't fully sibling-differentiating.
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 alternatives such as browser_click, browser_select_option, or browser_fill, and no prerequisites (e.g., that the element must be a checkbox/radio). The agent is left to 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_clear_browsing_dataB
Clear browsing data of the given types.
Args: types: Which to clear. Subset of ["cache","cookies","history", "localStorage","passwords","downloads"]. Default = all of those. since_ms: Only data created since this epoch-ms timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | ||
| since_ms | No |
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 usefully discloses the destructive scope by enumerating exactly what can be wiped (cache, cookies, history, localStorage, passwords, downloads) and the since_ms time filter. However, it never states that the action is irreversible, whether it affects other open tabs/sessions, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first sentence, then concise per-parameter notes. The docstring-style 'Args:' formatting is slightly mechanical but wastes no words and stays small.
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 destructive, no-annotation, no-output-schema tool, the description covers inputs well but leaves notable gaps: it does not warn about permanence, cross-tab scope, or return value. An agent has enough to call it, but not enough 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 coverage is 0%, so the description must compensate, and it does: it enumerates the valid type values, states the default (all), and explains since_ms as an epoch-ms lower bound. This adds real meaning beyond the bare 'Types'/'Since Ms' schema titles, though it omits whether types accepts a single string vs array.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb+resource: 'Clear browsing data of the given types.' An agent immediately understands the operation. It does not differentiate from near-siblings like browser_cache, browser_cookies, or browser_storage, which conceptually overlap with the clearable types enumerated 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?
The description implies when the tool applies (clearing browsing data) and notes that types defaults to all, but offers no guidance on alternatives such as browser_cache or browser_cookies for narrower operations, and no when-not-to-use or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickB
Click an element on the page by CSS selector or coordinates.
Args: selector: CSS selector to click (e.g. "#submit", ".btn-primary") x: X coordinate (used if selector is empty) y: Y coordinate (used if selector is empty) tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| tab_id | No | ||
| selector | No |
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: no mention of what happens on a missing element, whether the click blocks/waits, whether it triggers navigation, or what is returned. For a mutating, state-changing browser action 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?
Short and front-loaded: the core action is the first sentence, followed by a compact Args block. The Args list partially duplicates the schema but does add the priority semantics, so it largely 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?
With no annotations and no output schema, the description must cover behavior and results, and it does not — nothing about success/failure signaling, error conditions, or waiting semantics. An agent can form the call but cannot predict its side effects or failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description documents all four parameters, explains the selector priority rule (x/y used when selector is empty) and the default tab behavior. That meaningfully compensates for the undocumented schema, though it omits any selector syntax limitations or coordinate reference frame (viewport vs page).
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 (click) and resource (element on the page) plus the two targeting modes (CSS selector or coordinates). It is clear what the tool does, but it never differentiates itself from close siblings like browser_trusted_click, browser_double_click, or browser_click_and_wait_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?
There is no guidance on when to choose this over browser_trusted_click (which likely exists for a reason, e.g. bypassing event-trust checks) or browser_click_and_wait_navigation. The only conditional logic given ('used if selector is empty') is parameter mechanics rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clipboardB
Read or write the system clipboard.
Args: op: "read" or "write". text: Text to write when op="write".
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| text | No |
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, but it says nothing about whether write overwrites existing clipboard content, whether read requires focus/permissions, or what errors can occur. For a system-level side-effecting tool this is a notable 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?
Very short and front-loaded, with the operation summary in the first sentence and parameter detail following. The Args block is slightly redundant with the schema but earns its place by supplying the op values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description is largely sufficient, but it omits what read returns, the effect of write on existing clipboard data, and error conditions. Adequate but with clear 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%, so the description must compensate, and it does: it defines op as "read" or "write" (adding the enum the schema lacks) and explains that text is only used when op="write". Minor gaps remain around the read return format, but the core semantics are covered.
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 (read/write) and a concrete resource (system clipboard), so the tool's function is unambiguous. It does not explicitly differentiate itself from siblings, but the clipboard resource is unique enough that confusion is unlikely.
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 clipboard operations versus alternatives, nor prerequisites such as focus or permissions. The description only restates the two operation modes implied by the parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_close_tabA
Close a browser tab by its ID.
Args: tab_id: The tab ID to close (get IDs from browser_tabs) force: Disarm "Leave page?" (beforeunload) prompts first - upload/editor pages otherwise hold the tab open and the close times out.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| tab_id | Yes |
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 a genuinely useful quirk — that upload/editor pages hold a tab open via beforeunload and cause the close to time out unless force is set — but says nothing about behavior on a missing tab ID, errors, or loss of tab/session state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in a single sentence, followed by a compact per-argument breakdown. The Args block is slightly verbose but every line carries information about behavior or value source.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter close tool with no output schema and no annotations, the description covers purpose, both parameters, and the key timeout quirk. Only explicit error/return behavior is absent, a minor gap for such a simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: tab_id is annotated with its source (browser_tabs), and force is explained with its mechanism and the failure mode it prevents. This adds real meaning beyond the bare integer/boolean schema types.
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 (close), resource (browser tab), and selector (by its ID). It is clearly distinguishable from the sibling browser_close_window since it explicitly scopes to a tab, not a window.
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 useful route guidance by pointing to browser_tabs as the source of tab IDs, and explains the force condition. However, it never states when to prefer this over close_window or other tab-management siblings, leaving the when-to-use decision largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_close_windowB
Close a browser window by ID (from browser_windows).
| Name | Required | Description | Default |
|---|---|---|---|
| window_id | Yes |
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 of behavioral disclosure. It does not state that this is destructive, what happens to the tabs inside the window, whether the window's state is lost, or how failures (e.g. invalid/last window ID) are surfaced.
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 and the required input front-loaded and no wasted words. It is efficient, though it is terse enough that the source-of-ID hint is the only added content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no annotations and no output schema, the description covers the mechanics but omits consequence information (tabs closed, state lost) and error behavior. Adequate minimum, but not complete for a mutation operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single window_id parameter has 0% schema description coverage, so the description must compensate. It does supply the one genuinely useful fact — that the ID comes from browser_windows — but adds no type, validity, or error semantics beyond that.
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 ('Close') and resource ('a browser window') plus the identifier it operates on, which is enough to separate it from browser_close_tab at a glance. It stops short of explicitly contrasting itself with its very similar siblings (browser_close_tab, browser_focus_window, browser_windows), so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(from browser_windows)' implies the workflow: obtain the window_id from browser_windows, then close it here. That is useful inferred guidance, but there is no statement of when to close a window versus a tab, nor any prerequisites or warnings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_computed_styleC
Return computed CSS for an element. Defaults to the layout-relevant set.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes | ||
| properties | No |
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 of behavioral disclosure. It states the default property set but omits whether this is read-only, what tab state or permissions are required, what the return shape looks like, and how tab_id defaults when omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and followed by the default behavior. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no annotations and no output schema, the description is too sparse to ensure correct invocation. It omits tab_id behavior, properties syntax, return structure, and error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all three parameters. It implicitly covers selector ('for an element') and properties default ('layout-relevant set'), but tab_id is never mentioned, leaving a key parameter 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 ('Return') and resource ('computed CSS for an element'), distinguishing it from DOM/HTML inspection siblings. It does not explicitly say how it differs from browser_dom or browser_explain_selector, 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 alternatives named, and no prerequisites such as needing an attached tab. The only usage hint is the default property set, which is behavioral rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_console_logsA
Return buffered console logs from a tab (requires browser_watch_console first).
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| since | No | ||
| tab_id | No |
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 usefully discloses that logs are buffered (implying capture rather than live streaming) and names a hard dependency, but says nothing about whether the buffer is drained or retained after retrieval, result limits, or ordering. Enough to be viable, not enough to be rich.
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 naming the action, the resource, and the key precondition. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% parameter coverage, the description needs to do more heavy lifting than it does. The core purpose and one hard prerequisite are covered, but filtering semantics (level, since) and return behavior are left entirely for the agent to guess.
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 (level, since, tab_id) with no enums. The description only loosely implies tab_id via 'from a tab' and says nothing about what 'level' accepts (log level names?) or what 'since' measures (timestamp, index, sequence number). With zero schema-side documentation, the description should compensate and 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?
States a specific verb and resource: 'Return buffered console logs from a tab.' The mention of the buffered nature and the tab scope distinguishes it from the sibling browser_watch_console, which is referenced as a prerequisite. It is less clear against browser_logs, but the 'console' qualifier does meaningful work.
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 an explicit precondition: 'requires browser_watch_console first.' This tells the agent when the tool is callable and implicitly routes it to the sibling that must run beforehand. No exclusions or alternative-selection guidance are offered, 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.
browser_cookiesB
Cookie operations: "get", "set", "remove", "clear".
get: returns matching cookies (use url/domain/name to filter).
set: requires url + name + value.
remove: requires url + name.
clear: clears all cookies for url or domain.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| url | No | ||
| name | No | ||
| path | No | ||
| value | No | ||
| domain | No | ||
| secure | No |
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 usefully discloses that clear wipes all cookies for a url/domain (a destructive effect), but says nothing about whether set overwrites existing cookies, whether operations persist across sessions, permission/auth needs, or what get returns.
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 front-loaded summary followed by a tight per-operation bullet list is easy to scan and wastes no words. Slightly more explanation of the two undocumented parameters would have earned a 5.
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 7-parameter, mutation-capable tool with no annotations, no output schema, and 0% schema coverage, the description is adequate but incomplete: it omits path/secure semantics, error behavior, and any return-value expectations for get.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It documents op, url, name, value, and domain, and states the required combinations per operation. But it leaves path and secure entirely unexplained (including secure's default of false), so two of seven parameters remain 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 the resource (cookies) and enumerates the four supported operations, so an agent can tell what the tool does without opening the schema. It does not explicitly differentiate itself from near-siblings like browser_storage or browser_clear_browsing_data, but the operation set is specific enough to be 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?
Per-operation requirements (set needs url+name+value, remove needs url+name, get uses url/domain/name to filter) give implied usage context. However, there is no guidance on when to use this over browser_storage or browser_clear_browsing_data, and no mention of prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_create_windowC
Open a new browser window. Pass a URL to load it at start.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| incognito | No |
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 nothing about whether the new window becomes focused/active, how the incognito flag changes behavior or isolation, or whether the created window persists across other tool calls — all material for a window-creation 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?
Two short sentences, front-loaded with the core action and with zero filler. It is efficient, though the terseness is partly the source of the missing detail penalized 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?
For a creation tool with no annotations, no output schema, and siblings such as browser_close_window, browser_focus_window, and browser_windows that presumably operate on a window identifier, the description never indicates what the call returns or how the new window is referenced later. That gap leaves the agent unable to chain calls 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 both parameters. The description explains 'url' adequately ('pass a URL to load it at start'), but says nothing at all about the 'incognito' boolean, which is exactly the kind of flag an agent needs explained. Half the parameters remain 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 and resource: 'Open a new browser window,' which is clearly distinct from the tab-oriented siblings in name. However, it never explicitly contrasts itself with browser_new_tab or browser_navigate, so the agent must infer the window-vs-tab 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?
The only guidance is 'Pass a URL to load it at start,' which is parameter advice rather than usage guidance. There is no indication of when to create a new window versus a new tab (browser_new_tab), when to navigate an existing window (browser_navigate), or any prerequisite/ordering constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_delete_sessionC
Delete a saved session file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
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 the operation is irreversible, what happens if the named session does not exist, whether it requires the session to be inactive, or whether anything is returned. 'Delete' implies mutation, but that is all the agent gets.
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 waste. It is concise, but the brevity reflects under-specification rather than high information density.
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 destructive tool with no annotations, no output schema, and an undocumented required parameter, the description is well short of what an agent needs. It should at minimum flag irreversibility and the relationship to the session save/load/list 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 single parameter 'name' is completely undocumented in both schema and description. The description never says whether 'name' is a session identifier, a filename, or a friendly label, nor what format it takes.
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 ('Delete a saved session file'), so an agent can tell what the tool does. However, it never distinguishes itself from its obvious siblings browser_save_session, browser_load_session, and browser_list_sessions, so the differentiation that would earn a 5 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 mention of prerequisites (e.g. the session must exist, must not be the active session), and no pointer to save/load/list alternatives. The agent must infer the entire 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.
browser_detach_tabC
Pop a tab out into its own new window.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes |
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 structural mutation of window/tab state, yet says nothing about what happens to the source window (does it stay open or close if it becomes empty), whether the tab keeps its identity/state, or what the return looks like.
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 and no ambiguity in phrasing. It is efficient, though extremely terse given the disclosure gaps elsewhere.
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 mutating tool with no annotations, no output schema, and 0% parameter documentation, this one-liner is insufficient. It should at minimum describe the required tab_id and the effect on the originating window.
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 never mentions the single required parameter (tab_id) or its expected format or origin. The phrase 'a tab' only weakly implies an identifier is needed, so it fails to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('pop out') and resource ('a tab') and states the outcome ('its own new window'), which differentiates it from a plain move into an existing window. It could explicitly name browser_move_tab or browser_duplicate_tab as the alternatives, but the action and result are 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 detach versus move, duplicate, or create a new window, and no prerequisites or exclusions are given. The agent must infer the use case 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_domB
Get the accessibility tree of interactive elements on the page.
Args: tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the read-only nature implicitly via 'Get', but does not state whether it waits for elements to load, whether it scrolls, or what happens with no interactive elements present. It provides the tab_id default behavior, which is helpful but minimal.
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 brief and front-loaded with the primary purpose. The Args section is somewhat redundant given the single parameter, but not wasteful. It could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only DOM inspection tool with no output schema and no annotations, the description is minimally adequate but lacks details about return format, pagination, or handling of non-interactive elements. The complexity is moderate (accessibility tree), so more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does explain that tab_id is optional and defaults to the active tab, which adds value beyond the schema's bare 'anyOf' type. However, with only one parameter, the baseline is 4 for zero params, but here one param is undocumented in schema and only partially explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (accessibility tree of interactive elements) clearly. However, it does not distinguish itself from closely related siblings like browser_find, browser_click, or browser_forms, which an agent might confuse when seeking element information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description implies a read of DOM structure, but with dozens of sibling tools for querying the DOM (browser_query, browser_html, browser_find), the lack of routing guidance is a notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_double_clickC
Dispatch a synthetic double-click on the matched element.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes |
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 'synthetic' is the one useful disclosure (contrasting with browser_trusted_click's trusted events). It says nothing about failure behavior when no element matches, visibility/actionability requirements, waiting semantics, or what the tab_id targeting implies.
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 its brevity comes at the cost of the omissions noted elsewhere rather than being a model of dense information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an input-action tool with no annotations, no output schema, and 0% parameter documentation, one sentence is not enough. It omits selector format, tab targeting, error behavior, and any differentiation from the click 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% for two parameters. 'Matched element' weakly implies the selector's role, but selector syntax is never explained and tab_id (null default, active tab presumably) is completely unaddressed in the 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?
Names a specific verb (double-click) and resource (matched element), clearly distinct from browser_click's single-click semantics. However, it never explicitly names or differentiates itself from its closest siblings, browser_click and browser_trusted_click, leaving the agent to infer the distinction.
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_click, browser_trusted_click, or browser_hover, and no prerequisites stated. The agent must infer usage 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_downloadsC
Downloads operations.
Args: op: "download" | "list" | "cancel". url: For "download", the URL to fetch. filename: Optional output filename. query: For "list", a downloads.search query dict.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| url | No | ||
| query | No | ||
| filename | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and no output schema, so the description carries the full burden and delivers little: it does not say where files land, whether downloads persist across sessions, whether 'list' returns only the current session's entries, or what happens to partial files on cancel. There is also no mention of permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very terse and front-loaded, with a compact arg list that is easy to scan. The redundant header 'Downloads operations' wastes one line, but nothing else is padded.
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?
Four parameters at 0% schema coverage with no annotations and no output schema leaves the definition too thin: an agent cannot tell how to identify a download to cancel, what 'list' returns, or where downloaded content is written. The op-to-param mapping is the only real substance.
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 partially by binding url/filename to 'download' and query to 'list'. However, 'cancel' has no documented identifier parameter even though cancelling a transfer clearly requires one, and no accepted query keys or filename constraints are given.
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 header 'Downloads operations' is vague, but the op enum (download, list, cancel) makes the resource and the three concrete actions recoverable. No sibling tool covers downloads, so differentiation is not the issue here; the gap is that the tool's core behavior (fetching to disk? tracking in-progress transfers?) is only implied.
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 maps parameters to operations but never states when to reach for this tool, whether 'download' blocks until completion, or how 'cancel' selects its target. Usage must be inferred entirely from the op names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dragC
Synthetic drag-and-drop from one element to another (HTML5 drag events).
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| to_selector | Yes | ||
| from_selector | Yes |
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 usefully identifies synthetic HTML5 drag events but omits crucial behavior: side effects, whether it waits for drop handlers, error behavior on missing selectors, and whether the drag is trusted. This is below minimum viable for an unannotated interaction 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 sentence, front-loaded with the core action and resource, with no wasted wording. It is appropriately sized for the core purpose even though additional detail is needed elsewhere.
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 interaction tool with no annotations and no output schema, the definition is too thin. It lacks parameter usage, behavioral caveats, and routing guidance among the many sibling browser tools, leaving an 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%, so the description must compensate. 'From one element to another' loosely maps to from_selector and to_selector, but tab_id is never mentioned and no selector syntax or constraints are given. Partial compensation leaves a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (drag-and-drop) and resource (one element to another) and specifies the mechanism (synthetic HTML5 drag events). It does not explicitly differentiate itself from sibling interaction tools such as browser_click or browser_trusted_click, but the 'synthetic' qualifier is meaningful.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, no alternatives, and no exclusions. An agent cannot tell from the description whether to prefer this over browser_click, browser_hover, or any trusted-event variant, nor when drag-and-drop is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_duplicate_tabC
Duplicate a tab. Returns the new tab id.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 omits whether the duplicate preserves URL, history, or state, whether focus switches to the new tab, and whether the operation requires an existing tab at all.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the return-value note is efficient. It is under-specified rather than bloated, so conciseness itself is fine.
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 and no output schema, the description had room to cover the missing semantics and did not. The return format is adequately covered by the second sentence, but target-tab selection and side effects remain unexplained.
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 parameter tab_id is optional with default null. The description never explains what tab_id means or what the null default does (presumably the active tab), which is the one piece of information an agent most needs.
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 (duplicate) and resource (tab), and the return value is noted. It is distinguishable from browser_new_tab and browser_move_tab by implication, but it never says which tab is duplicated (active vs. specified), leaving a real ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives such as browser_new_tab or browser_move_tab, even though the sibling list contains several closely related tab-creation tools. The agent must guess which to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_element_screenshotA
Screenshot a single element. Scrolls into view, captures, crops in the extension via OffscreenCanvas. Saves a PNG and returns its path (saved_to).
Args: selector: CSS selector of the element tab_id: Optional tab to target. Defaults to active tab. save_to: Optional file path (default: ~/claude-zen-screenshots/element_.png) data_url: Also return the PNG data URL (large - only if you really need the bytes inline) scale: 1-4 output pixels per CSS pixel. 2 = genuinely sharper capture at twice the size (needs extension 2.1.1+; older extensions ignore it)
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| tab_id | No | ||
| save_to | No | ||
| data_url | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses the scroll-into-view + OffscreenCanvas crop mechanics, that a PNG file is persisted, and that the return value is the saved path. This is meaningful behavioral context. It omits failure modes (e.g., element not found) and any permission/setup expectations, keeping it short of 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?
Front-loaded with a one-line purpose, then a compact mechanical note, then a tidy Args list. The list format is justified given the 0% schema coverage, though a couple of lines (e.g., the scale explanation) run slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description covers the return value (saved_to path plus optional data_url) and the operational behavior. It is largely sufficient for correct invocation, missing only error/edge-case behavior and prerequisites.
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 fully compensate, and it does: every one of the five parameters is documented with semantics and defaults (selector meaning, tab_id default-to-active, default save path, data_url size warning, scale meaning and extension-version requirement). This adds substantial value the bare schema cannot convey.
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 ('Screenshot') and a precisely scoped resource ('a single element'), which implicitly separates it from browser_screenshot and browser_full_page_screenshot. An agent can distinguish the element-level scope without opening any 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?
No explicit when-to-use-this-vs-alternative statement; the element-scoping is implied rather than contrasted with the sibling screenshot tools. The only guidance present is parameter-level ('data_url: only if you really need the bytes inline'), which is useful but doesn't tell the agent when to pick this tool over the full-page variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_explain_selectorB
Diagnose a CSS selector: match count, sample matches, suggestions for a more-specific selector if you got too many.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. 'Diagnose' implies a non-mutating read, and it usefully describes the return content (count, samples, suggestions), but it omits any statement about permissions, tab targeting behavior, or whether it triggers page interaction.
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 a clean verb–resource–payload structure; nothing redundant. It could be slightly more informative without losing tightness, but it wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only source of return-value context and it partially delivers (count, samples, suggestions). However, the tab_id parameter and any scoping behavior are left unexplained, leaving a gap for a tool that must be selected and invoked 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 coverage is 0% for two parameters. The description mentions 'selector' implicitly via its subject but never explains the format or the role of the undocumented tab_id, 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 (diagnose) plus resource (CSS selector) and even previews the returned payload (match count, sample matches, suggestions). This distinguishes it from query tools like browser_find or browser_query, though it doesn't 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?
The phrase 'if you got too many' implies the diagnostic context (selector matched more than expected), but no alternatives are named and there is no explicit when-to-use vs when-to-pick-something-else guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_fillB
Set a form field's value directly (faster than typing).
Args: selector: CSS selector of the input/select element value: Value to set tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| tab_id | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It notes the direct-set approach and the active-tab default, but omits the critical trait of direct value assignment: whether input/change events fire, whether it works on select/checkbox elements, and whether prior values are overwritten. For a mutation 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?
The purpose is front-loaded in one sentence and the args list is compact, with the speed differentiator given prominence. The args list largely duplicates the schema property names but is justified given 0% schema coverage.
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?
A mutation tool with no annotations and no output schema should disclose event semantics, failure behavior (e.g., selector not found), and result shape. None of that is present; the definition is adequate only for a rough invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of parameter meaning. It does document all three parameters and adds slightly useful detail ("CSS selector of the input/select element", tab_id optional with active-tab default), but "value: Value to set" is pure restatement and no formats or examples are given.
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 ("Set a form field's value") and adds a differentiating clause ("faster than typing") that separates it from the sibling browser_type. It does not, however, distinguish itself from browser_form_fill or browser_set_editable_content, which also mutate field content.
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?
"Faster than typing" implies the selection rule against browser_type, so usage is inferable. There is no explicit when-to-use vs when-not-to-use, no mention of browser_form_fill (multi-field filling) or browser_select_option (dropdowns), so the agent must guess which form mutation tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_findB
Find elements on the page using natural language description.
Args: query: What to find (e.g. "login button", "search bar", "email input") tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| tab_id | No |
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 mentions that tab_id defaults to the active tab, but does not disclose whether the operation is read-only, what it returns, how missing elements are handled, or whether it waits for elements. Behavioral context is largely absent.
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-loads the core action in one sentence, then uses a compact Args section for parameters. Every line earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a find tool with no output schema, the description should explain what the tool returns (e.g., element handles, selectors, coordinates) and how to use the result. It omits return behavior, error conditions, and usage context, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by explaining the query parameter with examples and clarifying that tab_id is optional and defaults to the active tab, adding meaningful detail beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find), resource (elements on the page), and method (natural language description), making the core action clear. It does not differentiate from sibling tools like browser_query or browser_dom, 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?
Provides no when-to-use guidance, no alternatives, and no prerequisites. The agent must infer that this tool is for locating elements before acting on them, which is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_focusC
Move focus to the matched element.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and no output schema, so the description carries the full behavioral burden, yet it discloses almost nothing: no error behavior when the selector does not match, no waiting/scrolling behavior, no note on whether tab_id defaults to the active tab, and no side effects (e.g. whether focus triggers blur events on the previously focused element).
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 padding, which is good. But at this length it reads as under-specification rather than genuine conciseness — nothing was trimmed because nothing was ever added.
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 no-annotation, no-output-schema, 2-parameter browser mutation tool, the description leaves out error handling, targeting scope, tab selection, and interaction with related tools like browser_blur and browser_click. An agent cannot call this confidently in edge cases.
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: 'selector' is only implied by the phrase 'the matched element' with no syntax or matching rules, and the optional 'tab_id' parameter is never mentioned at all or explained as a default-to-active-tab 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 ('move focus') and a specific target ('the matched element'), so an agent can tell it apart from browser_blur, which does the opposite. It does not, however, differentiate itself from other element-targeting siblings by noting what 'matched' means (a CSS/XPath selector resolved at call time).
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_blur, browser_click (which also focuses), or browser_highlight. No prerequisites such as requiring the tab to be active or the element to exist. The agent must infer all of this 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_focus_windowC
Bring a browser window to the foreground.
| Name | Required | Description | Default |
|---|---|---|---|
| window_id | Yes |
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 of behavioral disclosure. It does not say whether this is an OS-level focus change, what happens if window_id is invalid or already focused, whether it can fail, or any side effects on other windows.
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 sound, but the extreme brevity here is under-specification rather than effective conciseness given the undocumented parameter and absent 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?
With no annotations, no output schema, and an undocumented required parameter, the definition leaves the agent without enough information to call it confidently or handle failure cases. A sentence on window_id provenance and error behavior would close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and window_id has no documented meaning, source, or format. The description mentions 'a browser window' but never explains how to obtain a valid window_id (e.g., from browser_windows), 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?
The description gives a specific verb ('bring ... to the foreground') and a specific resource ('a browser window'), so the basic action is unambiguous. It does not, however, differentiate itself from nearby siblings such as browser_focus, browser_switch_tab, or browser_windows, which is the main missing signal.
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 rather than browser_focus, browser_switch_tab, or browser_windows, and no mention of preconditions such as the window needing to exist. 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.
browser_form_fillA
Fill many fields at once via fuzzy matching.
Each key in fields is matched as: CSS selector → name attribute →
label text (case-insensitive contains) → placeholder. Each value is
applied via the appropriate setter (.value for inputs/textareas, .checked
for checkboxes/radios, value for selects). Returns per-key results.
Args: fields: {"email": "foo@bar", "Password": "...", "#submit-target": true}
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does disclose the fuzzy-matching precedence and which setter is used per element type, plus that results are returned per-key. It omits important behavioral traits: whether input/change/blur events fire, what happens to keys that match nothing, and any permission or page-state prerequisites.
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 core behavior is front-loaded in the first sentence, followed by resolution and setter rules and a compact example. Every sentence contributes; the repeated 'Args:' label is mild overhead but the example it introduces adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested, free-form-object tool with zero schema coverage and no output schema, the description covers the required `fields` semantics and notes the return shape. However it leaves `tab_id` unexplained and gives no failure/event semantics, so an agent must still guess on tab targeting.
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 this is where the description earns its keep: it fully explains the free-form `fields` object, including the key-resolution chain (CSS selector → name → label → placeholder) and value handling per element type, with a concrete example. The second parameter, `tab_id`, is never mentioned in either schema or description, leaving one 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 and resource ('Fill many fields at once') with a clear scope modifier ('many') that implicitly distinguishes it from the single-field browser_fill sibling. It does not name the alternative tool, so differentiation still requires the agent to infer from the sibling 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?
Usage is only implied: the batch framing suggests using this instead of browser_fill when filling multiple fields, but there is no explicit when-to-use, when-not-to-use, or named alternative. No guidance on prerequisites such as needing the form loaded or a specific tab.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_formsB
Get all form fields on the current page with their labels and values.
Args: tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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' implies a read operation, but the description says nothing about whether it penetrates iframes/shadow DOM, how it handles hidden or disabled fields, pagination or size limits, or whether it touches the active tab only. The single 'Defaults to active tab' note is the only behavioral detail offered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short segments, front-loaded with the core purpose before the args block. Nothing is padded, though the 'Args:' stanza is the minimum needed rather than elegantly integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read tool with no output schema and no annotations, the description is minimally viable: it says what it returns at a high level and clarifies the tab parameter. It omits return shape and edge-case handling, but with no output schema the agent still lacks the exact structure it will receive.
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 does: 'tab_id: Optional tab to target. Defaults to active tab' explains both optionality and the effective default, which the raw schema (nullable integer, default null) does not convey. Only one parameter exists, so this is close to fully covered.
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: 'Get all form fields on the current page with their labels and values.' This distinguishes it from generic page readers like browser_dom or browser_html by scoping it to form fields with labels and values. It does not, however, explicitly name a sibling it replaces, 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 rather than browser_dom, browser_find, browser_page_text, or the form-mutating siblings (browser_form_fill, browser_fill). The only usage context implied is 'current page,' which comes from the purpose statement rather than any explicit directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_forwardC
Go forward in history.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the full behavioral burden. It does not disclose whether the navigation waits for page load, what happens if there is no forward history, what permissions are needed, or what the tool returns.
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 short sentence and is front-loaded with the core action. It contains no wasted words, though it is so terse that it lacks any supporting structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser navigation tool with an undocumented optional parameter, no annotations, and no output schema, the description is incomplete. It does not explain parameter semantics, side effects, or error conditions, leaving important gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional parameter, tab_id, with 0% description coverage. The description does not mention tab_id at all, so an agent receives no guidance on what the parameter does or when to supply it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific browser action with a clear verb and resource: go forward in history. It is understandable on its own, but it does not explicitly distinguish itself from the sibling browser_back tool or any other navigation tools, 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?
There is no guidance on when to use this tool versus browser_back or other navigation tools. The intended use is implied by the action itself, but no explicit context or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_full_page_metricsB
Return document/viewport sizes + scroll position + devicePixelRatio.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 disclose the exact return set, which implies a non-mutating read. However it omits whether the call touches the page state and what happens when tab_id is omitted (null default), leaving key behavior to inference.
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 return payload is stated immediately. It is efficient, though arguably compressed to the point of leaving the tab-selection question unaddressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must carry everything. It adequately conveys the returned metrics but does not cover the undocumented tab_id default or scoping, leaving a real gap for a tool that operates on a specific tab.
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 optional parameter tab_id is never mentioned in the description. The agent cannot tell from either source whether omitting tab_id targets the active tab or fails, so the description does not 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 specific verb and resource ('Return document/viewport sizes + scroll position + devicePixelRatio'), which clearly separates it from screenshot and DOM siblings. It is clear about what data comes back, though it never distinguishes itself by name from a neighbouring tool like browser_page_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives such as browser_page_info, browser_bounds, or browser_screenshot. Usage is only weakly implied by the returned payload (measuring page dimensions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_full_page_screenshotA
Scroll-and-stitch screenshot covering the full document height (up to 30 viewports tall). Saves one PNG of the entire page and returns its path (saved_to).
Args: tab_id: Optional tab to target. Defaults to active tab. save_to: Optional file path (default: ~/claude-zen-screenshots/fullpage_.png) data_url: Also return the PNG data URL (large)
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| save_to | No | ||
| data_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does disclose meaningful behavior: the scroll-and-stitch mechanism, a hard 30-viewport cap (a real limitation), that it saves exactly one PNG, and that data_url output is large. It omits permission/auth needs and whether it waits for lazy content, keeping it short of 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?
Opening sentence front-loads the mechanism, scope and cap, then a compact Args block covers each parameter. It is efficiently sized, with only minor overlap between the prose mention of saved_to and the Args entry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description still tells the agent what it gets back (a saved PNG path via saved_to, optionally a data URL). Combined with the cap disclosure, this is complete enough for a zero-required-param screenshot tool, though auth/error behavior is 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 coverage is 0%, so the description must compensate, and it does: tab_id defaults to the active tab, save_to has a concrete default path (~/claude-zen-screenshots/fullpage_<time>.png), and data_url's effect and size cost are explained. It does not restate types, but all three parameters gain meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (scroll-and-stitch screenshot of the full document height) and clarifies scope (up to 30 viewports), which implicitly separates it from browser_screenshot and browser_element_screenshot. It does not name a sibling explicitly, but the 'full document height' framing is enough for an agent to route 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?
Usage is implied by the 'full document height' framing, and the description notes that data_url is large, hinting at when to avoid it. However, it never states when to prefer this over browser_screenshot (viewport) or browser_element_screenshot, nor any prerequisites or wait behavior, so guidance remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_policyB
Return the active URL/readonly policy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden of behavioral disclosure. It says 'Return,' implying a read operation, but does not describe return format, permissions, side effects, or what the active URL/readonly policy actually contains.
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 sized for a zero-parameter getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description should clarify the return value and usage context. It only names the policy being returned and leaves the output structure and invocation rationale unspecified.
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 is 4. The description correctly adds nothing misleading about parameters, and the empty schema is self-consistent.
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 ('Return') and resource ('active URL/readonly policy'), making the tool's purpose clear. It implicitly distinguishes itself from browser_set_policy by referring to the 'active' policy, but it does not explicitly name or contrast with that sibling.
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 tool versus alternatives such as browser_set_policy. It also lacks any prerequisites or context for why an agent would need the active policy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_zoomB
Return the current zoom factor (1.0 = 100%).
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 does disclose a real behavioral detail — the return encoding (1.0 = 100%), which matters because there is no output schema — but says nothing about what happens when tab_id is omitted, error behavior, or whether the value is per-tab or per-window.
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 filler. The unit clarification is the highest-value piece of information and it is included without padding.
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 trivial getter with no output schema this covers the return semantics adequately, but the only parameter is undocumented and the tool's tab-scoping behavior is unresolved, which an agent would need to know before calling 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% and the single parameter tab_id is never mentioned in the description. The crucial default behavior — that tab_id is optional and presumably falls back to the active tab — is 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 ('Return') and resource ('the current zoom factor') and even disambiguates the unit convention (1.0 = 100%). It is clearly distinct from browser_set_zoom by name, but the description itself never names or contrasts that 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?
The text gives no when-to-use, no conditions, and no mention of the obvious alternative browser_set_zoom. Usage is only inferable from the tool name, so this is effectively no guidance in the description body.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_healthB
Extended health/status: bridge version, ports, keep-alive list, pool state, tags, policy, sessions dir, audit/log sizes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses the contents of the response (bridge version, ports, keep-alive list, pool state, tags, policy, sessions dir, audit/log sizes), which tells the agent this is a read-only inspection call with no arguments. It stops short of stating read-only/side-effect semantics, cost, or output format explicitly.
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 compact sentence with the subject front-loaded ('Extended health/status') and the payload items listed after the colon. No filler or repetition, though the fragment-without-verb style is terse to the point of being telegraphic.
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?
There is no output schema, so the description must carry the return-shape burden, and it does list the eight reported categories. Format details (structure, nesting of the health object) are absent, but for a zero-parameter diagnostic tool this is close to 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; baseline 4 applies. The enumerated fields describe the return payload rather than inputs, which is harmless.
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 resource (bridge health/status) and enumerates the concrete dimensions it reports (version, ports, pool state, policy, sessions dir, log sizes). The word 'Extended' implicitly contrasts it with the sibling browser_status, but it never states that relationship explicitly, so sibling differentiation is left 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?
No when-to-use statement and no exclusions. The agent must infer that this is the diagnostic/deep-status call and that browser_status is the lighter alternative; nothing in the text routes it between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_highlightB
Highlight an element on the page with a visual overlay.
Args: selector: CSS selector of the element to highlight tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden; it does disclose that the effect is a visual overlay, implying no page-state mutation, which is genuinely useful. However it omits whether the highlight persists or must be cleared, whether the element is scrolled into view if off-screen, and what happens if the selector matches nothing or multiple elements.
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 action and effect in one sentence, followed by a compact Args block. The Args block is mildly redundant with the schema but is justified given 0% schema description coverage, so little space is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, side-effect-light tool with no output schema, the description covers purpose, both parameters, and the tab-targeting default. The remaining gap is lifecycle behavior (clearing, scroll-into-view, no-match cases), which is minor but not fully addressed.
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 has to compensate, and it does: selector is defined as a CSS selector for the target element and tab_id is explained as an optional tab defaulting to the active tab. This fully covers both parameters, though it adds no syntax constraints or multi-match 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 (highlight) and resource (an element on the page) plus the mechanism (visual overlay), which is enough for an agent to know this is a display/debugging action rather than a DOM mutation. It does not differentiate itself from siblings such as browser_element_screenshot or browser_scroll, which an agent might otherwise confuse with a visual element-targeting 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 statement of when to use this tool versus alternatives (e.g. screenshot, scroll, focus), nor any exclusions or prerequisites. The only usage context, that it targets the active tab unless tab_id is supplied, is parameter guidance rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hoverB
Hover over an element on the page.
Args: selector: CSS selector of the element to hover over tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does little beyond the obvious. It does not disclose whether hovering dispatches real mouseover events, whether the hover state persists, what happens when the selector matches nothing or multiple elements, or whether it waits for the element to be actionable.
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 sentence is front-loaded and the argument list is compact with zero redundancy. The 'Args:' block is slightly mechanical but every line carries needed information given the undocumented schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-action tool with no output schema, the definition covers the what and the parameters adequately. It is still missing failure behavior and event semantics, which matter for a hover that is often used to trigger menus or tooltips.
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 is the only source of parameter meaning, and it documents both: selector as a CSS selector, and tab_id as optional with a default of the active tab. It does not clarify selector-multiple-match behavior or valid tab_id values, but it compensates well for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Hover over an element on the page'), which is unambiguous and distinct from most siblings. It does not explicitly differentiate itself from the closely related browser_click, browser_focus, or browser_blur, but the action itself is clear enough to select 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 hover versus when a click or focus is more appropriate, nor any mention of prerequisites (element must exist, page must be loaded). The only contextual hint is the tab_id default, which is a parameter detail rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_htmlC
Return the outerHTML of a specific element. Cap 100KB.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | Yes |
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 helpfully discloses a 100KB cap, but omits important traits like error behavior for missing selectors, whether it waits for the element, and how the optional tab_id default is resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and the size constraint stated second. There is almost no waste, though the two ideas could have been combined more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with two parameters, no annotations, and no output schema, the description should explain return shape (it partially does) and how to target a tab. The tab_id semantics and missing-element behavior are absent, leaving gaps an agent must fill by trial.
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 weakly implies the 'selector' parameter via 'specific element' while never mentioning the 'tab_id' parameter at all. It does not compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('outerHTML of a specific element'), which is more precise than a generic DOM dump. However, it does not differentiate itself from siblings such as browser_dom, browser_page_text, or browser_wp_html, so an agent must infer the distinction.
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 given, no alternatives are named, and no conditions (e.g., prefer this over browser_dom when you only need one element) are stated. The agent is left to guess based on 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_iframesC
List all iframes with src + same-origin/accessible flags.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 part of the return shape (src plus same-origin/accessible flags), which is useful, but says nothing about whether this is a read-only snapshot, which frame context it reads from, or how cross-origin frames are handled.
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 resource and returned fields front-loaded and zero filler. It is efficient, though the extreme brevity is what leaves the other gaps unfilled.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the returned fields, which is the minimum needed to predict the result. However, the tab-targeting behavior of the only parameter is left entirely unexplained, so an agent cannot fully 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 coverage is 0% and the single tab_id parameter is undocumented in both schema and description. The description never explains that tab_id defaults to null or which tab is targeted when omitted, so the description 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 and resource ('List all iframes') plus the payload fields returned (src, same-origin/accessible flags), which distinguishes it from DOM-scraping siblings like browser_dom or browser_query. It stops short of naming 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 or when-not-to-use guidance and no mention of alternatives such as browser_dom, browser_html or browser_query for frame inspection. The agent must infer the scope 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_imagesB
Return every with src, alt, and natural dimensions.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 disclose the return shape (src, alt, natural dimensions), which is meaningful since there is no output schema. However, it says nothing about whether images inside iframes are included, how 'natural dimensions' behave for unloaded/lazy images, or whether the result is scoped to the active tab.
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 returned fields are stated immediately. It is arguably too terse rather than padded, but nothing in it is wasted.
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 no-annotation, no-output-schema tool with one parameter, the description partially compensates by naming the returned fields, but it leaves the tab_id scoping semantics unexplained and gives no guidance on when to pick this tool over the many other extraction 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 optional tab_id parameter is completely undocumented in both schema and description. The description does not explain whether omitting tab_id targets the active tab, a default tab, or all tabs, 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?
Names a specific verb and resource ('Return every <img>') and even enumerates the returned fields (src, alt, natural dimensions), so the agent knows this is an image-extraction tool rather than a generic DOM dump. It is clearly distinguishable from siblings like browser_links, browser_html, and browser_dom, though it never explicitly contrasts itself with them.
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 instead of browser_dom, browser_html, browser_links, or browser_structured_data, all of which could surface overlapping page content. No prerequisites or context (e.g. page fully loaded) are given, so the agent must infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_interceptA
Block, log, or redirect HTTP requests by URL regex.
Useful to suppress analytics/ads during agent runs (3–10× page speed-up) or to log what an SPA actually fetches.
Args: op: "add" | "clear" | "list" | "log" | "clearLog". patterns: For "add", regex patterns to match against request URLs. effect: For "add", "block" (cancel request) or "redirect".
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| effect | No | block | |
| patterns | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully defines that 'block' cancels the request and the effect is per-op, but says nothing about persistence/scope (per tab?), invalid-regex handling, or how 'redirect' works given there is no target-URL parameter in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in one sentence, follows with a benefit-oriented use case, then a structured Args block. The parenthetical speed-up claim is slightly promotional, but overall the text is tight and well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param tool with no annotations and no output schema, the description covers the inputs but leaves return behavior for 'list'/'log'/'clearLog' unexplained and gives no clue how 'redirect' obtains its destination. Adequate but with real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description does the documenting: it enumerates the five op values, explains patterns as regexes matched against request URLs, and gives the two effect values with a note that they apply only to 'add'. The only gap is the missing redirect target.
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 set of verbs (Block, log, redirect) and the exact resource (HTTP requests by URL regex). It is clearly distinguishable from sibling capture/inspection tools like browser_capture_network or browser_watch_console without opening any 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?
Gives concrete use cases ('suppress analytics/ads during agent runs' and 'log what an SPA actually fetches') that imply when to reach for it. However, it never names an alternative or a when-not condition, so the agent must infer how it differs from passive capture tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_jsB
Execute JavaScript in the current page context.
Args: code: JavaScript code to run (e.g. "document.title" or "document.querySelectorAll('a').length") tab_id: Optional tab to target. Defaults to active tab. full: Results are capped at 8 MB (50 KB on extensions older than 2.1.0). full=True runs the code once and reads the result back in slices, so any size comes back complete.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| full | No | ||
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the result size cap (8 MB, 50 KB on extensions older than 2.1.0) and the slicing behavior of full=True. But it omits whether arbitrary JS executes on trusted/protected pages, error propagation, and whether the return value must be serializable – relevant behavioral facts for an arbitrary-code-execution 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?
Front-loaded with the purpose sentence, then a compact Args block. The full-parameter explanation is slightly long but every clause (cap size, legacy cap, slicing) is decision-relevant. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param tool with no annotations and no output schema, the description covers the important output-size concern but leaves return-value shape (how a value comes back to the caller) and error behavior unstated. Adequate but with clear 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%, so the description must compensate. It does: code is explained with two concrete examples, tab_id documents its default-to-active-tab behavior, and full gets a thorough explanation of the capping threshold and sliced read-back. This covers all three parameters well beyond the bare schema 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: 'Execute JavaScript in the current page context'. This is unambiguous and would let an agent identify the tool. However, it does not differentiate from siblings that also read page content (browser_dom, browser_html, browser_query, browser_page_text), so no credit for sibling distinction.
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, when-not-to-use, or alternative is named. The agent must infer that this is for arbitrary JS execution rather than the many structured page-reading siblings. The 'tab_id Optional tab to target. Defaults to active tab' line is parameter help, 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_keep_aliveA
Keep tabs warm so Zen's Tab Unloader won't discard them mid-workflow.
Starts a background pinger in the bridge that fires a no-op JS evaluation at each listed tab on the given interval. Any script access resets Zen's idle timer, so the tabs stay loaded. Replaces any existing keep-alive for the same tabs (use a new interval to change cadence).
Use this at the start of parallel multi-tab work: open your tabs, call browser_keep_alive with their IDs, drive them in parallel via browser_parallel or by passing tab_id to individual commands, then browser_keep_alive_stop when done. The pinger auto-stops if the bridge restarts.
Args: tab_ids: Tab IDs to keep loaded. interval_seconds: How often to ping each tab. Minimum 10s, default 60s. Should be well under Zen's unloader timeout (commonly 20+ minutes).
| Name | Required | Description | Default |
|---|---|---|---|
| tab_ids | Yes | ||
| interval_seconds | No |
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 the background pinger mechanism, that it replaces any existing keep-alive for the same tabs, and that the pinger auto-stops on bridge restart. It does not cover return values or failure modes, but the lifecycle behavior is unusually well documented for a side-effecting 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?
The purpose and mechanism are front-loaded in the first two paragraphs, followed by a workflow recipe and an args block. Everything earns its place, though the Args section is somewhat verbose for a two-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?
With no output schema and no annotations, the description usefully covers lifecycle, replacement semantics, defaults, minimums, and the auto-stop on restart. The only gap is what the call returns or how to confirm the pinger is active, which is minor for a keep-alive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: it explains interval_seconds has a 10s minimum and 60s default, and gives the tuning rationale ('well under Zen's unloader timeout, commonly 20+ minutes'). tab_ids is only restated ('Tab IDs to keep loaded') with no format hint, which holds it below a top score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Keep tabs warm so Zen's Tab Unloader won't discard them') and explains the mechanism (background pinger firing no-op JS evaluations). It also names its sibling browser_keep_alive_stop and the related browser_parallel, letting an agent distinguish it from generic tab tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use recipe: 'Use this at the start of parallel multi-tab work: open your tabs, call browser_keep_alive with their IDs, drive them in parallel... then browser_keep_alive_stop when done.' Both the trigger and the terminating alternative are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_keep_alive_stopB
Stop the keep-alive pinger for some or all tabs.
Args: tab_ids: Tabs to stop pinging. Omit (or pass null) to stop all.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for a mutation-like action. It never says what happens to the tabs once pinging stops (do they get discarded/suspended?), whether the call is idempotent, or what happens if tab_ids reference invalid/closed tabs.
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?
Very short and front-loaded, with the core action in the first sentence and the parameter behavior second. The Python-docstring 'Args:' style adds a little structural overhead but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-param tool with no output schema and no annotations, the essentials are present. However, the post-condition (what stopping the pinger means for the tab's lifecycle) is left unstated, which is the main missing element for an agent reasoning about side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it explains that tab_ids identifies 'Tabs to stop pinging' and that omitting or passing null means 'stop all' – matching the schema's default of null and anyOf null type.
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+resource ('Stop the keep-alive pinger') and its scope ('some or all tabs'), so the agent understands exactly what it does. It doesn't name the counterpart sibling browser_keep_alive, but the pairing is obvious from the name.
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 only usage instruction is about the parameter ('Omit (or pass null) to stop all'), not about when to invoke this tool versus alternatives. There is no mention of browser_keep_alive or any condition that selects this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_keypressA
Dispatch a synthetic keyboard event. Use modifiers like
{"ctrl": True, "shift": True}. Pass text to also insert characters
into editable targets.
Args: key: Key name, e.g. "Enter", "Tab", "Escape", "ArrowDown", "a". selector: Optional element to target. Defaults to document.activeElement. modifiers: {"ctrl"|"shift"|"alt"|"meta": True}. text: If set, also insert this text into editable targets.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| text | No | ||
| tab_id | No | ||
| selector | No | ||
| modifiers | No |
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 notes that a synthetic event is dispatched and that text can both key and insert characters, but omits whether events are trusted, whether they respect focus, and any caveats about targets.
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?
Compact and front-loaded with the core action, followed by per-parameter notes. The one missing element is the undocumented tab_id parameter, but the prose itself has no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should disclose return/effect behavior and error conditions. It covers the four main parameters well but leaves tab_id unexplained and says nothing about how the tool reports success or failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet for key, selector, modifiers, and text the description provides names, meanings, examples, and default behavior (selector defaults to document.activeElement). It does not document the tab_id parameter, a minor gap in a 5-param tool with a required key.
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: 'Dispatch a synthetic keyboard event.' This is precise and distinguishable from siblings like browser_type and browser_fill, which imply text entry rather than raw key dispatch.
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 through detail (modifiers, text-insertion) but never states when to use this versus alternatives such as browser_type, browser_click, or browser_fill. No when-not guidance or alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_linksC
Return every anchor with href + text. Useful as a crawler primitive.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| internal_only | No |
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 never states that the operation is read-only, whether it waits for page load, whether links are deduplicated, or how it behaves when no tab_id is supplied. 'Return every anchor' implies a non-mutating read, but that is inference, not disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the return shape, with no filler. It is efficient, though the terseness is partly under-specification rather than disciplined brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no annotations, no output schema, and 0% schema coverage, the description leaves the agent guessing on tab targeting and the meaning of internal_only. The return format is the only thing adequately covered.
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 either parameter. internal_only is particularly opaque and needs an explanation (same-origin only? excluding external links?) that appears nowhere, and tab_id's default-to-active-tab behavior is likewise 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?
The description gives a specific verb and resource ('Return every anchor with href + text'), so the agent knows exactly what comes back. It does not, however, distinguish itself from near neighbors like browser_find, browser_query, browser_dom, or browser_html, which an agent could easily confuse for the same job.
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?
'Useful as a crawler primitive' gestures at a use case but names no condition for choosing this over browser_find, browser_query, or browser_html. There is no when-to-use, when-not-to-use, or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_sessionsB
List saved sessions with their metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 falls short. 'With their metadata' is the only behavioral hint; there is no mention of ordering, pagination, how many sessions are returned, whether inactive sessions are included, or what happens when no sessions are saved.
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 and no redundancy with the tool name. It is well-formed but so terse that it leaves useful 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?
For a zero-parameter listing tool with no annotations and no output schema, the description is minimally adequate but under-delivers: it never says what 'metadata' contains or what an empty result means. Nothing an agent strictly needs to invoke it is missing, but nothing extra helps it either.
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 (List) and resource (saved sessions) plus a scope hint ('with their metadata'). It does not explicitly differentiate itself from the sibling session tools browser_save_session, browser_load_session, or browser_delete_session, but the verb choice makes the read-only listing intent inferable.
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 reference to the save/load/delete session siblings. An agent must infer from the name alone that this is the discovery step preceding load_session or delete_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_tagsB
List all tag → tab id mappings.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 only implies read-only by using "List". It says nothing about side effects, whether mappings are live or cached, or what happens when no tags exist. With no output schema either, the returned structure is only hinted at.
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 resource and return shape front-loaded and no filler. Nothing could be trimmed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read of a simple mapping, the description states the return content (tag to tab id) adequately, which matters since there is no output schema. It is nearly complete; only the exact mapping format and empty-state behavior are unspecified.
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 to disambiguate and the schema would not help regardless. Baseline 4 applies for a no-argument 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?
Specific verb ("List") plus a clearly identified resource ("tag → tab id mappings"), which is more precise than the name alone. It implicitly separates itself from browser_resolve_tag and browser_tag_tab, but never names those siblings, so the differentiation is left 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?
No when-to-use context at all: nothing says to call this to enumerate tags before resolving, tagging, or untagging, nor how it differs from browser_resolve_tag or browser_tabs. For a tool with several closely related siblings in the tag/tab cluster, that omission is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_load_sessionC
Restore cookies + localStorage from a previously saved session.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
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 doesn't disclose whether existing cookies/localStorage are overwritten or merged, whether it applies to the current tab or all tabs, or that the operation mutates browser state. Only the mechanical action is described.
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 padding. It is efficient, though brevity tips into under-specification rather than tightness.
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 state-mutating tool with no annotations, no output schema, and a completely undocumented parameter, this is insufficient. An agent cannot determine prerequisites, side effects, or the return value from this definition alone.
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 `name` parameter is undocumented beyond its title. The description does not clarify that `name` refers to a session identifier produced by browser_save_session, leaving the agent to infer the value's origin and format.
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 (restore) and the exact resources affected (cookies + localStorage) from a saved session. An agent can distinguish it from browser_save_session and browser_list_sessions, though it doesn't explicitly name 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?
No when-to-use guidance, no prerequisites (e.g., a session must already exist from browser_save_session, how to obtain a valid `name`), and no indication of what happens if the session is missing or if the current tab already has cookies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_logsC
Return recent bridge log lines (in-memory ring buffer).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It does usefully disclose the in-memory ring-buffer nature (bounded, ephemeral, older lines dropped), but says nothing about ordering, timestamp format, permissions, or whether the log is per-tab or global.
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 ring-buffer qualifier is front-loaded. It is efficient, though it errs toward under-specification rather than over-verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and two entirely undocumented parameters, the one-line description is too thin — an agent has no basis for choosing between it and the console-log siblings or for constructing a valid "since" value.
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 both parameters are undocumented. The description explains neither "limit" (default 200) nor "since" (an untyped string with default null, presumably a timestamp or cursor) — format and semantics of "since" are the kind of detail an agent cannot infer.
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?
"Return recent bridge log lines (in-memory ring buffer)" gives a specific verb and resource, but "bridge" is unexplained jargon and the description never distinguishes this from the sibling browser_console_logs or browser_watch_console, leaving the agent unsure which log source 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?
No when-to-use guidance at all. With two closely named log siblings (browser_console_logs, browser_watch_console) and a related browser_audit, the description should state whether this covers extension/bridge-side log lines versus page console output, but it offers nothing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_markdownC
Convert the page (or a selector subtree) to Markdown. Cap 80KB.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | No |
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 does disclose one important trait — the 80KB output cap — which is genuinely useful, but says nothing about which tab is targeted by default, what happens on truncation, or whether this is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core action is front-loaded before the size constraint. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and 0% parameter documentation. The description omits the return format, default tab behavior, and how the 80KB cap is applied, leaving real gaps for a tool the agent must call blind.
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 selector parameter's meaning ('selector subtree') but leaves tab_id completely unexplained — the agent cannot tell whether null means the active tab or something else.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Convert the page (or a selector subtree) to Markdown' tells the agent exactly what the output is. However, it does not distinguish itself from close siblings like browser_page_text, browser_readability, or browser_html, which an agent would also consider for extracting page content.
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 named alternatives, despite several sibling tools (browser_page_text, browser_readability, browser_html, browser_dom) that overlap in purpose. The agent must infer 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_metaC
Return all meta tags + link rels (canonical, RSS, icons, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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. 'Return all' implies a non-destructive read, but the description never confirms read-only behavior, says nothing about which tab is targeted, and gives no error or rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the action and resource with no filler. It is appropriately sized for a simple extraction tool, though one more clause on scope would have cost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and an undocumented optional tab_id, the description should at minimum state the target tab behavior and the nature of the read. It leaves both the invocation target and the return shape undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the single parameter (tab_id, nullable, default null) is never mentioned in the description. The critical question of whether tab_id defaults to the active tab is left entirely unexplained in both the schema and the 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 ('Return') and resource ('meta tags + link rels') with illustrative examples (canonical, RSS, icons). It is clear what the tool does, though it does not explicitly distinguish itself from close siblings like browser_links or browser_structured_data, which may overlap with the 'link rels' portion.
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 condition for choosing this over browser_links, browser_structured_data, or browser_page_info, and no prerequisites stated. The agent must infer usage 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_move_tabC
Move a tab to a position (and optionally to a different window). -1 = end.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | ||
| tab_id | Yes | ||
| window_id | No |
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 the '-1 = end' sentinel convention, which is useful, but says nothing about permissions, whether the move is reversible, what happens to tab focus/active state, or what the response looks like 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?
Two compact clauses, front-loaded with the primary action and the window option. Nothing is wasted, though the brevity leaves the sentinel fragment dangling and under-integrated.
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 0% schema coverage, no annotations, and no output schema, the description is the only documentation available. It covers the index sentinel but leaves window_id behavior (does the target window need to exist?) and safety/return behavior unexplained for a state-mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters. The description partially compensates by explaining that index -1 means 'end', which the schema's raw default does not convey. However, it adds nothing for tab_id (required) or window_id (defaults to null, semantics of moving windows 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: 'Move a tab to a position (and optionally to a different window).' An agent can distinguish this from browser_tabs, browser_switch_tab, or browser_detach_tab on the basis of the action described. It stops short of naming or contrasting with those siblings, which keeps it from 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 context at all. It does not say when to prefer this over browser_detach_tab, browser_switch_tab, or browser_pin_tab, nor whether the tab must already exist or be focused. The agent must infer the call context 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_mute_tabC
Mute or unmute a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| muted | No | ||
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it does not say which tab is targeted when tab_id is omitted (presumably active), that 'muted' defaults to true, or whether the operation is idempotent. The only disclosure is the binary toggle itself.
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 waste-free, but its brevity comes at the cost of under-specification rather than genuine efficiency.
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 mutation tool with no annotations, no output schema, and 0% parameter coverage, the description should at minimum explain tab targeting and the default muted state. As written, an agent must guess both.
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 both parameters are undocumented structurally. The description maps loosely to the 'muted' boolean but says nothing about 'tab_id', including the important fact that a null value presumably means the active tab.
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 ('mute or unmute') on a specific resource ('a tab'), so an agent knows exactly what effect to expect. It does not differentiate from any sibling, but no sibling overlaps this function, so the gap is minor.
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 muting is appropriate, whether the target must be the active tab, or what happens if the tab is already in the requested state. For a simple toggle this is tolerable but still a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_new_tabB
Open a new browser tab.
Args: url: URL to open in the new tab (default: blank page) raw: Bare image URLs open inside a local viewer page (image = #zlimg) unless raw=True.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | ||
| url | No | about:blank |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses a non-obvious behavior — bare image URLs open in a local viewer page unless raw=True — but omits whether the new tab becomes focused/active and whether a tab identifier is returned.
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-loads the purpose in one line, then documents the two parameters compactly. The Args block is standard and wastes little, though the url default restates the schema default.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate but not complete for a tab-creation tool with no annotations and no output schema: focus behavior, return value (e.g. tab id), and relationship to browser_navigate/browser_switch_tab are 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: it explains url's default (blank page) and gives real semantics for raw (bare image URLs open in a local viewer unless raw=True). Only minor gaps, like URL format expectations, remain.
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 ('Open a new browser tab'), which is clear on its own. It does not, however, distinguish itself from close siblings like browser_navigate (navigate current tab) or browser_duplicate_tab, so an agent must infer the boundary.
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 given. With ~90 sibling tools including browser_navigate, browser_duplicate_tab, and browser_tabs, the description never says when a new tab is preferable to navigating or duplicating, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_page_infoB
Get current page URL, title, dimensions, and scroll position.
Args: tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does disclose the useful default-behavior detail that tab_id defaults to the active tab. However, it omits read-only/safety framing, error behavior for invalid tab IDs, and return format, leaving meaningful gaps 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?
The returned fields are front-loaded in a single tight sentence, and the args block adds the one detail the schema lacks. Slightly wasteful use of an 'Args:' block for a single parameter, but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read tool with one optional param and no output schema, the description is nearly sufficient, but it leaves unaddressed the overlap with browser_bounds/browser_full_page_metrics and any failure behavior. A reader can call it, but not confidently pick it over its nearest 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%, so the description must compensate, and it does: 'tab_id: Optional tab to target. Defaults to active tab.' explains both the optionality and the default, which the bare schema (anyOf integer/null, default null) 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?
States a specific verb ('Get') and enumerates the exact resources returned (URL, title, dimensions, scroll position), so an agent knows precisely what it yields. It does not, however, distinguish itself from overlapping siblings such as browser_bounds and browser_full_page_metrics, which likely also return dimensional/positional 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 alternatives, nor any prerequisites or exclusions. The agent must infer usage purely from the field list, with no routing toward browser_bounds or browser_full_page_metrics for related needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_page_textA
Extract all readable text from the current page.
Args: tab_id: Optional tab to target. Defaults to active tab. For non-active tabs, prefer this with tab_id over browser_page_text_by_tab_id — they do the same thing now.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 that it defaults to the active tab and that it is functionally identical to a sibling, which is useful. However, it says nothing about return format, truncation limits, hidden/offscreen content, or whether it waits for page load — meaningful gaps for a DOM-reading 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?
One-line purpose statement followed by a short Args block; no filler, and the core purpose is front-loaded before the parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only extraction tool with no output schema, the description covers what it does, the default targeting behavior, and sibling routing. Only the shape of the returned text is unspecified, which is a minor omission given no output schema exists.
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 lone parameter is otherwise undocumented, so the description must compensate — and it does, explaining that tab_id is optional, defaults to the active tab, and should be preferred over the sibling's equivalent parameter. It stops short of defining valid tab_id values or behavior for an invalid 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?
States a specific verb and resource: 'Extract all readable text from the current page.' An agent can distinguish it from browser_dom, browser_html, browser_markdown, and browser_readability. The only wrinkle is that 'current page' undersells that it can target arbitrary tabs via tab_id, but the Args section clarifies that.
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 sibling browser_page_text_by_tab_id and states the selection rule: prefer this tool with tab_id for non-active tabs because they are now equivalent. No when-not conditions are given, but the routing guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_page_text_by_tab_idA
Get page text from a specific tab by ID without switching to it.
Args: tab_id: The tab ID to read from (get IDs from browser_tabs)
Returns the full visible text content of the specified tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose the key side-effect behavior (no tab switching) and the return content ('full visible text content'), which is genuinely useful. It omits any mention of truncation/size limits, hidden vs visible element treatment, or iframe handling for a potentially large 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?
Front-loads the purpose, then the parameter, then the return value, with no filler sentences. The Args block restates the schema slightly, but the added sourcing hint justifies it.
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 one-parameter read-only tool with no output schema and no annotations, the description covers purpose, input sourcing, non-switching behavior, and return content. Only the edge cases of very large pages (truncation) are 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 coverage is 0%, so the description must compensate, and it does: it explains tab_id's meaning and tells the agent where to obtain valid IDs (browser_tabs). That is more than the bare 'Tab Id' property name in the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get page text') plus a scope qualifier ('from a specific tab by ID without switching to it') that meaningfully separates it from a plain active-tab text read. It stops short of naming the sibling it contrasts with (browser_page_text / browser_switch_tab), so the distinction must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use it – when you want text without changing the active tab – and points at browser_tabs as the source of tab IDs. There is no explicit statement of when NOT to use it, nor a named alternative for the active-tab case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_parallelA
Run command sequences in parallel — typically one sequence per tab.
Each inner list is a sequence that runs serially; all sequences run concurrently. Commands that target a specific tab (navigate, switchTab, or any tab-aware action) MUST include "tabId" inside the parallel batch to avoid race conditions over the active tab.
Returns a list of result lists, one per input sequence.
Args: sequences: List of command sequences. Each command is a dict with "action" and parameters — same shape as browser_batch commands. Example for driving two tabs at once: [ [{"action": "navigate", "url": "...", "tabId": 12}, {"action": "waitForElement", "selector": "h1", "tabId": 12}, {"action": "pageText", "tabId": 12}], [{"action": "navigate", "url": "...", "tabId": 13}, {"action": "waitForElement", "selector": "h1", "tabId": 13}, {"action": "pageText", "tabId": 13}] ]
| Name | Required | Description | Default |
|---|---|---|---|
| sequences | Yes |
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 the concurrency model (inner serial, outer concurrent), the race-condition hazard over the active tab, and the return shape. It omits failure semantics, e.g. whether one failing sequence aborts the batch, which is the main remaining 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?
Front-loads the core semantics before the tabId constraint, then the return value, then the argument detail. The example is worth its length, though the Args block is slightly verbose for a single 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?
No output schema exists, and the description fills that gap by describing the return value as one result list per input sequence. Combined with the concurrency and tabId guidance it is largely complete; only error/partial-failure behavior is 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 coverage is 0% and the schema only shows an untyped array-of-arrays, so the description must compensate — and it does, defining each command as a dict of action plus parameters, matching browser_batch, and providing a two-tab worked example. This fully specifies the single 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 and resource ('Run command sequences in parallel') and immediately scopes it with 'typically one sequence per tab.' It is distinguishable from the serial sibling browser_batch, which it explicitly references for command shape.
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 clear context for use (concurrent sequences, one per tab) and a concrete constraint for correctness: tab-aware commands MUST include tabId to avoid race conditions. It stops short of an explicit 'use browser_batch instead when...' exclusion, so it is strong but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pin_tabC
Pin or unpin a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| pinned | No | ||
| tab_id | No |
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 not state that this is a mutating state change, whether pinning persists across sessions, or how the null tab_id default is resolved. It adds essentially nothing beyond the name.
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 waste, but it is terse to the point of under-specification for a two-parameter mutating tool rather than genuinely tight.
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 mutation tool with no annotations, no output schema, and 0% schema coverage, the description should at least explain the pinned flag and the default tab behavior. What is present is not enough 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% and the description does not explain the 'pinned' boolean (the pin/unpin switch) or what a null 'tab_id' targets. Parameter names are suggestive but the description compensates for none of 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 ('Pin or unpin a tab') that an agent can distinguish from siblings like browser_mute_tab, browser_move_tab, or browser_tag_tab. It does not, however, explicitly differentiate itself from any of them.
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 pin vs. use another tab-management tool, no prerequisites, and no note about what happens when tab_id is omitted. 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_pool_acquireB
Check out a warm tab from the pool. Returns its tab_id.
| Name | Required | Description | Default |
|---|---|---|---|
No 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. It hints that tabs are 'warm' and returns a tab_id, but says nothing about whether the call blocks when the pool is empty, whether the tab is exclusively leased, or that it must later be released via browser_pool_release.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the return value. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description fills some gaps by stating the return value. However, for a stateful pool lifecycle tool it omits the critical release-the-tab expectation and empty-pool behavior, leaving the context 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 tool takes zero parameters, so there is no parameter semantics to document. The description correctly notes the single meaningful output (tab_id), which is the only semantic detail a caller needs.
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 ('check out a warm tab from the pool') and names the return value. It is distinguishable from the sibling browser_pool_release by the acquire/release pairing, though it never explicitly contrasts with browser_new_tab or browser_tab_pool.
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. With siblings like browser_new_tab, browser_tab_pool, and browser_pool_release present, the agent must infer that this is the pool-based acquisition path versus creating a fresh tab.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pool_releaseC
Return a tab to the pool for reuse.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes |
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 implies the tab is not destroyed but does not say whether tab state/navigation is reset on release, what happens if tab_id is stale or unacquired, or whether the release is idempotent.
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; however it is arguably under-specified rather than optimally concise for a lifecycle 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?
For a pool-lifecycle tool with no annotations, no output schema, and an undocumented parameter, the description omits the essentials: what releasing actually does to tab state and how it relates to acquire/tab_pool/close_tab. The core action is stated but the operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter tab_id has 0% schema description coverage and the description never mentions it, so nothing clarifies whether it must be a currently-acquired pool tab or any open tab. With low coverage the description is required to compensate and it 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?
States a specific verb+resource ('return a tab to the pool') plus the effect ('for reuse'), which is more informative than a bare name restatement and implicitly pairs with browser_pool_acquire. It does not explicitly name or contrast with the pool siblings (browser_tab_pool, browser_pool_acquire) or with browser_close_tab, so an agent still has to infer the distinction.
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 says to call this after finishing work with an acquired tab, nor when to prefer it over browser_close_tab or browser_pin_tab. 'For reuse' hints at lifecycle but gives no prerequisites or ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_queryA
Extract multiple fields from every element matching a CSS selector.
Much faster and cheaper than calling browser_js per element. The default
fields cover the common ones (text, href, value, src, alt, id, name);
pass fields=["text","data-foo","bounds","attrs"] to get arbitrary
attributes or bounds/attrs/html extras.
Args: selector: CSS selector. fields: Field names to extract per element. Defaults to a useful set. limit: Max elements to return (capped at 500). tab_id: Optional tab; defaults to active.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| fields | No | ||
| tab_id | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the default field set, the 500-element cap, and that tab_id defaults to the active tab. It does not say what happens when nothing matches, whether it waits for elements, or the shape of the returned list, which is a gap for a no-annotation 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?
Front-loaded with the core action and the performance rationale before the Args block, so the most decision-relevant content is first. The extra-fields sentence is somewhat dense but earns its place; nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only extraction tool with no output schema and no annotations, the description tells the agent what each parameter does and what fields can be retrieved. It leaves the return structure and empty-match behavior implicit, but an agent has enough 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%, so the description must compensate — and it does, covering all four params: selector, fields (with a concrete example including 'data-foo', 'bounds', 'attrs'), limit ('capped at 500'), and tab_id ('defaults to active'). It omits the limit default of 50 declared in the schema, leaving that one detail slightly ambiguous.
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 (Extract) and resource (multiple fields from every element matching a CSS selector), and explicitly contrasts itself with the sibling browser_js. An agent can tell this apart from browser_dom, browser_find, or browser_html without opening any 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?
Gives a clear reason to prefer this over browser_js ('much faster and cheaper than calling browser_js per element'), which is a real routing decision. It stops short of naming the other extraction siblings (browser_dom, browser_find, browser_page_text) or stating when this is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_readabilityB
Extract the main article on the page (title, byline, clean text).
Heuristic: score candidate containers (article, main, .post, etc.)
by text density × paragraph count × inverse link density, strip nav/aside,
return the winner. Falls back to densest section/div, then body.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it does disclose real behavioral detail: the scoring heuristic and the deterministic fallback chain (densest section/div, then body). It omits whether tab_id=null targets the active tab and what happens when no article is found, so the disclosure is partial rather than complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and output before the implementation detail. The heuristic explanation is slightly verbose but earns its place by explaining the fallback 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?
With no output schema, the description usefully lists the returned fields, but it leaves the required parameter semantics unexplained and gives no guidance on failure/fallback-to-body edge cases an agent might need. Adequate but with clear 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% and the sole parameter (tab_id) is undocumented in both schema and description. The description says nothing about which tab is read, what null means, or default behavior, 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 (extract) and resource (the main article on the page), and enumerates the returned fields (title, byline, clean text). This clearly distinguishes it from generic sibling readers like browser_page_text or browser_html, even though it never names 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?
The description is entirely about how the heuristic works, not when to choose this tool over browser_page_text, browser_markdown, or browser_dom. There is no condition, exclusion, or alternative named, leaving the agent to infer usage from the sibling list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_reload_extensionA
Hot-reload the Kitsune extension in the browser.
Use this after editing the extension source to pick up changes without
going through about:addons and toggling the extension by hand. The
extension acks the request, then reloads itself ~100ms later; the
background script's existing reconnect logic re-establishes the bridge
WebSocket immediately. Content scripts in open tabs survive — they re-
inject lazily on the next command (see forwardToContent in background.js).
Note: only works once you're already on a version of the extension that has this action handler. The very first install of that version requires the usual about:addons toggle.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 generously: it describes the ack-then-reload sequence, the ~100ms timing, how the bridge WebSocket reconnects via existing background logic, and that content scripts in open tabs survive and re-inject lazily. It also flags a hard prerequisite that would otherwise cause silent failure.
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, then usage, then mechanics, then the caveat — good ordering with no filler sentences. It runs slightly long and references internal implementation details (background.js, forwardToContent) that an agent cannot act on, which is minor noise 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?
For a zero-parameter, no-output-schema tool, everything an agent needs is present: the effect, the timing, the side effects on content scripts, and the one condition under which it fails. Nothing material is left to inference.
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 is 4. The description correctly implies no arguments are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Hot-reload the Kitsune extension in the browser') and makes clear it targets the extension itself, not a page — the distinction that matters against the many tab/page tools in the sibling list. The contrast with manually toggling in about:addons further pins down the 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?
Explicitly says when to use it ('after editing the extension source to pick up changes') and when it will not work ('only works once you're already on a version of the extension that has this action handler; the very first install requires the usual about:addons toggle'). Both the triggering condition and the failure case are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_reload_tabC
Reload a tab. Pass bypass_cache=True for a hard reload.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| bypass_cache | No |
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 bypass_cache produces a hard reload, which adds real value, but says nothing about which tab is affected when tab_id is omitted, whether the reload waits for load completion, or how navigation state is 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?
Two short sentences, action first and the parameter hint second. 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?
For a mutation tool with no annotations and no output schema, the definition is thin: the tab-targeting semantics of tab_id (and its null default) and the post-reload state are unaddressed, leaving the agent guessing about 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%, so the description must compensate. It clarifies the effect of bypass_cache ('hard reload'), which is genuinely beyond the schema's bare boolean, but leaves tab_id undocumented — it is unclear whether null means the active tab or an error.
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 combination ('Reload a tab') that is distinct from adjacent siblings such as browser_navigate, browser_back, browser_forward, and browser_new_tab. It does not explicitly name what it is not, but the 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?
No guidance on when to prefer this over browser_navigate, browser_back, or browser_wake_tab, and no mention of prerequisites. The description only says what the tool does, not when to reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_resolve_tagB
Look up the tab id for a tag set via browser_tag_tab.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does not disclose whether this is a read-only operation, what happens if the tag is unknown or maps to multiple tabs, or what the resolved value looks like on failure. Only the terse purpose 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 wasted words. It is efficient, though arguably under-specified rather than maximally informative for the space available.
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 one-parameter lookup with no annotations or output schema, the description covers the basic purpose and the tag prerequisite. It is missing the failure/multi-match behavior an agent would need for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single 'name' parameter, so the description must compensate. The reference to 'a tag set via browser_tag_tab' loosely implies name is the tag identifier, but it adds no format, case-sensitivity, or matching semantics beyond that inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (tab id for a tag), which is enough to distinguish it from siblings like browser_list_tags and browser_untag_tab. It also names the companion tool browser_tag_tab that creates the tag, aiding 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?
The phrase 'for a tag set via browser_tag_tab' implies the prerequisite that the tag must already exist, which is useful usage context. However, it never states when to prefer this over browser_tabs or browser_list_tags, and no 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_retryA
Wrap any command in exponential-backoff retry.
Args: command: A command dict (same shape as browser_batch entries). max_attempts: Total tries including the first. backoff_ms: Initial wait between attempts (doubles each retry). on_errors: Only retry if the error string contains one of these substrings. Default: retry on any error.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| on_errors | No | ||
| backoff_ms | No | ||
| max_attempts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral load. It explains backoff doubling, max_attempts total tries, and error-substring filtering, but omits failure/return behavior and any warning about retrying non-idempotent commands.
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-line summary followed by a compact Args block; every line adds information and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers retry mechanics and parameters, but with no output schema and no annotations it leaves return values and failure semantics unstated, and does not warn about side-effecting commands. Adequate but incomplete for a wrapper tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate; it defines each parameter: command via reference to browser_batch entries, max_attempts, backoff_ms, and on_errors default. The nested command shape remains only cross-referenced rather than fully specified, but this is effective given the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific operation, wrapping commands in exponential-backoff retry, and ties the command shape to sibling browser_batch entries. It does not explicitly contrast with browser_batch or other alternatives, but the purpose 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?
Provides conditional retry guidance via on_errors and implies use for flaky commands, but never states when to choose this over browser_batch, browser_parallel, or plain execution, nor when not to retry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_save_sessionA
Snapshot cookies (and per-origin localStorage if urls given) to disk.
Use case: log into a service interactively once, save the session, then have parallel agents load it for authenticated work.
Args: name: A label for the session (becomes filename under ~/claude-zen-sessions/). urls: Origins whose cookies + localStorage to snapshot. Each gets opened briefly in a temp tab so localStorage can be read.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| urls | No |
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 disk snapshot, per-origin localStorage condition, and temp-tab side effect, but omits overwrite behavior, error cases, permissions/security details, and what is returned.
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-loads the purpose, then gives a use case, then documents the arguments. Every sentence earns its place and the structure makes the most important details easy to find.
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 or output schema, the description covers purpose, usage, both parameters, and key side effects well enough to invoke the tool. Missing return semantics and overwrite behavior are minor gaps but leave the definition slightly 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%, so the description must compensate fully, which it does. It explains that name becomes a filename under ~/claude-zen-sessions/ and that urls are origins whose cookies and localStorage are snapshotted, each opened briefly in a temp tab.
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 (snapshot/save) and resources (cookies, per-origin localStorage) to disk. The name and use case distinguish it from browser_cookies and browser_load_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit use case: log in interactively once, save the session, then let parallel agents load it for authenticated work. It names the loading alternative conceptually but does not explicitly route to browser_load_session or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_schedulerA
Return bridge scheduler state for multi-agent/tab work.
Shows active per-tab/global command scopes, pending WebSocket commands, and known tab locks. Useful when several agents are driving separate tabs.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 what the read exposes (per-tab/global command scopes, pending WebSocket commands, tab locks), which is genuinely useful, but says nothing about side effects, snapshot-vs-live semantics, or whether calling it affects scheduling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences; the purpose is front-loaded, and each sentence adds a distinct fact (what it returns, what it contains, when it's useful). No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey the return shape, and it does by enumerating the three categories of state returned. For a zero-parameter read tool this is close to sufficient; only the snapshot/liveness semantics remain 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?
Zero parameters with a fully covered (empty) schema, so the baseline of 4 applies. There is no parameter surface for the description to supplement.
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 resource ("bridge scheduler state") and further specifies the domain as "multi-agent/tab work." It is clearly a read-only diagnostic distinct from state-mutating siblings like browser_parallel, though it never explicitly contrasts itself with the similar-sounding browser_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?
The closing sentence, "Useful when several agents are driving separate tabs," gives a real usage condition. However, it names no alternatives (e.g., browser_status, browser_health) and offers no explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotA
Capture a screenshot of the current page. Returns the saved file path.
Note: screenshots are inherently visual and capture the active tab of the focused window. To screenshot a specific tab, switch to it first with browser_switch_tab.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 disclose two non-obvious traits: the return value ('Returns the saved file path') and that the capture targets the active tab of the focused window rather than a specified tab. Still missing are failure modes (no page loaded, file naming/location, format, whether it blocks), but the core behavioral picture is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences plus one caveat, front-loaded with the action and its return value, then the tab-scoping note. Every sentence earns its place; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-annotation tool with no output schema, the description covers what the tool does, what it returns, and the tab-focus constraint. The remaining gap is disambiguation from browser_full_page_screenshot and browser_element_screenshot, which the sibling set makes a realistic source of wrong-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?
The tool takes zero parameters, so per the calibration baseline this is a 4. The description correctly implies there is nothing to configure — capture is scoped implicitly to the active tab — and adds no misleading parameter-like language.
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 of the current page.' An agent immediately knows the operation. It does not, however, distinguish itself from the closely named siblings browser_full_page_screenshot and browser_element_screenshot, leaving the viewport-vs-full-page boundary 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?
Gives an explicit precondition — switch to the target tab with browser_switch_tab first — which is real routing guidance to a sibling. It stops short of saying when to prefer this over browser_full_page_screenshot or browser_element_screenshot, which are the most likely alternatives for the same intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollB
Scroll the page.
Args: direction: Scroll direction - "up", "down", "left", or "right" amount: Pixels to scroll tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| tab_id | No | ||
| direction | No | down |
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 falls short: it never says whether scrolling is instant or smooth, whether it waits for lazy-loaded content, what happens if the page cannot scroll further, or whether a scroll position is returned or stored.
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 a one-line purpose followed by an Args block, so nothing is wasted, but it reads as a bare signature dump rather than a description that earns its sentences with behavioral or usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool with no output schema and no annotations, the enumeration of parameters is adequate. However, with zero schema coverage and no annotations, the description leaves the return value, scroll semantics, and edge-case behavior completely unexplained.
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% (only titles and defaults), so the description must compensate. It documents all three parameters and supplies the allowed direction values ('up', 'down', 'left', 'right'), which the schema does not constrain via an enum, plus explains tab_id's optional default-to-active-tab 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: 'Scroll the page.' It is unambiguous what the tool does and clearly distinct from siblings like browser_click or browser_navigate, though it never explicitly contrasts itself with an alternative.
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 (e.g. scrolling to a specific element via browser_find/browser_wait_for_element). The agent must infer all usage conditions 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_select_optionA
Choose an in a . Default matches by value; pass
by_text=True to match by visible text.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| tab_id | No | ||
| by_text | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the matching mode behavior (default by value, by_text for visible text), which is useful. However, it omits what happens when the option is not found, whether it waits for the element, whether it dispatches change events, or what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, and the second sentence focuses on the one non-obvious parameter toggle. 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?
For a simple DOM-interaction tool with no annotations and no output schema, the description covers the essential behavior but leaves two of four parameters (selector, tab_id) and all failure/waiting semantics unaddressed, which matters at 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the interplay of value and by_text meaningfully, but leaves selector and especially tab_id (which tab context the selection applies to) 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?
States a specific verb+resource: 'Choose an <option> in a <select>'. This is unambiguous and clearly distinct from siblings like browser_fill, browser_type, or browser_click, which an agent could otherwise confuse with option selection.
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 clarifies parameter behavior (value vs text matching) but offers no when-to-use guidance, no conditions or prerequisites, and no routing to alternatives such as browser_fill or browser_submit_form for related form interactions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_editable_contentA
Set text or HTML in a contenteditable editor, input, or textarea in one fast operation.
Use this for rich editors such as Gmail compose bodies where typing long text is slow.
Args: selector: CSS selector or Kitsune ref for the editable element value: Text or HTML to place into the editor format: "text" for plain text or "html" for trusted HTML clear: Whether to replace existing content instead of appending tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| value | Yes | ||
| format | No | text | |
| tab_id | No | ||
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add useful clues: the operation is a single fast bulk set rather than simulated typing, and 'trusted HTML' hints at injection/security semantics for html format. However it omits what happens to focus, whether framework input events fire, error behavior, and permission requirements - gaps that matter for a no-annotation 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?
Front-loaded with purpose and usage before the Args list, and every line earns its place given zero schema descriptions. The 'in one fast operation' phrasing is mild marketing, and the Args block is slightly rote, keeping it from a 5.
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-param, no-annotation, no-output-schema mutation tool, the description covers purpose, usage and parameter meaning reasonably. It is still silent on return value/confirmation, focus and event side effects, and failure modes, so an agent lacks full behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: it documents selector (CSS selector OR Kitsune ref, richer than the bare string schema), the text/html format values plus their trust semantics, and that clear replaces rather than appends, and tab_id defaults to the active tab. Only error/edge behavior on these params is left 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 ('Set text or HTML in a contenteditable editor, input, or textarea') and scopes it as a fast bulk-set operation, which functionally distinguishes it from the keystroke-based siblings like browser_type and browser_fill. An agent can identify the right tool without opening a 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?
'Use this for rich editors such as Gmail compose bodies where typing long text is slow' gives a concrete when-to-use condition and implicitly rules out slow typing tools. It does not name the alternative sibling (browser_type/browser_fill) explicitly or state when-not-to-use, so it falls 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.
browser_set_policyA
Set URL allow/deny regex lists and/or read-only mode.
Read-only mode blocks write actions (click/type/navigate/cookies set/etc.) while still allowing read ops. Useful for "let the agent observe only."
| Name | Required | Description | Default |
|---|---|---|---|
| deny | No | ||
| allow | No | ||
| readonly | No |
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 does disclose what read-only mode blocks ('click/type/navigate/cookies set/etc.') while allowing reads, which is valuable. It omits policy lifetime/persistence, whether a call replaces or merges existing policy, and whether deny overrides allow — meaningful gaps for a state-changing 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?
Two short sentences, front-loaded with the primary purpose and followed by the most important behavioral detail. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-changing tool with no annotations, no output schema and three optional params, the description covers the essentials (what the params mean, what readonly does) but leaves notable gaps: list precedence, policy persistence, and whether setting a policy replaces prior state. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'allow'/'deny' are URL regex lists and that 'readonly' is a boolean mode, mapping the three bare params to meaning. It does not explain precedence between allow and deny, or the effect of leaving both null.
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: 'Set URL allow/deny regex lists and/or read-only mode.' The scope of 'policy' is spelled out (two list params plus a mode flag), so an agent can see exactly what this tool mutates. It does not explicitly name its counterpart browser_get_policy, but the 'set' verb naturally contrasts with 'get'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete use case for readonly mode ('let the agent observe only'), which is genuinely helpful implied guidance. However, there is no guidance on when to use allow vs deny, how the two lists interact, or when to prefer this tool over browser_get_policy. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_zoomB
Set zoom factor. 0.3 to 5.0 typical; 1.0 = 100%.
| Name | Required | Description | Default |
|---|---|---|---|
| factor | Yes | ||
| tab_id | No |
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 helpfully discloses the effective range (0.3–5.0) and scale semantics (1.0 = 100%), but says nothing about scope (per-tab vs global), persistence, or what happens if the factor is out of range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse fragments, front-loaded with the action. No waste, though the clipped phrasing is borderline under-specified rather than deliberately lean.
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 two-parameter mutation tool with no annotations and no output schema, the description covers the key numeric semantics but omits tab targeting and scope. Adequate but with a clear gap around tab_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%, so the description must compensate. It documents the meaning and range of 'factor' well, but 'tab_id' is never mentioned, leaving the target-tab behavior of half the parameters 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 and resource ('Set zoom factor'), and the existence of a sibling browser_get_zoom makes the read/write distinction inferable. It doesn't explicitly name or contrast the sibling, but the 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?
No when-to-use guidance, no mention of alternatives (e.g., browser_get_zoom), and no precondition such as needing an active/targeted tab. 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.
browser_statusB
Check if Kitsune bridge and browser extension are connected.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 largely fails it. It does not say what the result looks like (boolean, connection object?), whether it is read-only, how to recover from a disconnected state, or what 'Kitsune bridge' means. Nothing beyond the one-line purpose is 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. Every word earns its place and the object of the check is stated immediately.
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 trivial zero-parameter tool with no output schema and no annotations, the description covers the core question but leaves result interpretation undefined. An agent cannot tell what a success or failure response looks like, nor how to act on a disconnected result.
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 is 4. There is no parameter surface for the description to explain or compensate 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?
The description names a specific check verb and the exact resources involved (Kitsune bridge and browser extension connectivity), so an agent knows precisely what it will learn. It stops short of 5 because the sibling set already contains browser_health and browser_reload_extension, and the description never differentiates this connectivity check from those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given, and no alternative is named. However, the purpose itself strongly implies usage as a preflight/diagnostic check before invoking browser tools. With a sibling browser_health in the set, explicit routing guidance would have earned more.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_storageA
localStorage / sessionStorage ops.
Args: kind: "local" or "session". op: "get" | "set" | "remove" | "clear" | "list" | "snapshot" | "restore". key: Required for get/set/remove. value: For set, the string value. For restore, a dict of key→value. tab_id: Tab to run against. Storage is per-origin, so prefer driving it on a tab already at the right origin.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| key | No | ||
| kind | Yes | ||
| value | No | ||
| tab_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It discloses the important per-origin semantics and tab targeting, which is real added context. It does not flag that clear/remove are destructive, whether set overwrites silently, or what snapshot/restore do to existing state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two-line summary plus a tight, front-loaded argument list. Every line carries information (requiredness, op-specific value shape, origin caveat); no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param, no-annotation, no-output-schema tool, the description covers inputs and the key runtime constraint well. It omits return shape for get/list/snapshot and destructive-op warnings, which a caller would benefit from but which are not strictly blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description fully compensates: it documents kind, all seven op values, that key is required for get/set/remove, that value is a string for set but a key→value dict for restore, and tab_id's role. Nothing material is left to the schema's 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 resource (localStorage/sessionStorage) and a verb-ish operation set, enumerated via the op values. It distinguishes itself from siblings like browser_cookies and browser_cache. It stops short of a full prose statement of purpose, but the arg block effectively defines 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?
Gives a genuinely useful runtime guideline: storage is per-origin, so prefer a tab already at the right origin. It does not say when to choose storage access over browser_cookies or browser_js, nor any prerequisites/ordering. Adequate but no alternatives routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_structured_dataC
Extract JSON-LD blocks, OpenGraph (og:*), and Twitter card meta.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No |
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 implies a read-only scrape but never states that it mutates nothing, does not require the page to be fully loaded, and says nothing about the result shape (grouped by type? empty when absent?). Key behavior is left unstated.
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, and the three extraction targets are enumerated crisply. It is efficient, though its terseness edges into 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?
For a simple extractor this covers the 'what', but with no output schema and no annotations the description omits return format, empty-result behavior, and the tab_id default. An agent can invoke it but cannot predict the response.
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?
There is one parameter (tab_id) with 0% schema description coverage, and the description does not mention it at all. It never explains that omitting tab_id presumably targets the active tab, or how to obtain a valid tab 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?
States a specific verb ('Extract') and three concrete resource types (JSON-LD, OpenGraph og:*, Twitter card meta), so the agent knows exactly what data comes back. It does not distinguish itself from close siblings such as browser_meta or browser_readability, which likely overlap on meta-tag extraction.
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 statement of prerequisites (e.g. page must be loaded), and no routing to alternatives like browser_meta or browser_page_info. 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.
browser_submit_formB
Submit a form. If selector is omitted, submits the first found.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| selector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it does add one genuinely useful trait: the selector-omitted fallback to the first <form>. It says nothing about side effects, whether submission triggers navigation or a network wait, or what happens when no form is 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?
Two sentences, zero filler, purpose front-loaded and the edge-case default immediately after. 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?
For a mutation tool with no annotations, no output schema, and 0% parameter documentation, the description covers only the main ambiguity (which form). Navigation/side-effect behavior and the tab_id parameter remain gaps an agent would have to discover empirically.
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 adds real meaning for selector (null → first form found), which the schema's bare anyOf/string/null does not convey, but tab_id is left entirely unexplained 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 and resource ("Submit a form"), which cleanly separates it from fill/set-editable-content siblings. It does not, however, explicitly name the sibling it should be chosen over (e.g. browser_form_fill), so an agent must infer the boundary.
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 only conditional given is what happens when selector is omitted, which is behavioral rather than a when-to-use rule. There is no guidance on when to prefer this over browser_fill, browser_form_fill, or browser_click on a submit button, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_switch_tabB
Switch focus to a specific browser tab.
Args: tab_id: The tab ID to focus (get IDs from browser_tabs)
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and no output schema, so the description carries the full burden and discloses almost nothing beyond the action itself. It does not say whether switching activates/loads the tab, what happens if the tab_id is invalid or the tab is closed, or whether it affects other tabs' state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short lines, action front-loaded in the first sentence, parameter detail after. No wasted prose, though the 'Args:' block adds little formatting value for a single self-evident integer 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?
For a one-parameter, no-annotation, no-output-schema tool, the minimum viable information (what it does and where the ID comes from) is present. It falls short on failure modes and on the observable effect of the switch, which an agent would need to sequence tab operations 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%, so the description must compensate and it partially does by stating the parameter is 'the tab ID to focus' and where to obtain it ('browser_tabs'). However, it adds nothing about ID validity, integer ranges, or how a tab ID differs from a window or tag reference.
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 focus') and resource ('a specific browser tab'), which is enough to distinguish it from browser_new_tab, browser_close_tab, and element-level browser_focus. It is clear but does not explicitly name or contrast with the nearest 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?
Usage is implied rather than stated: the agent must infer that this is for making an already-open tab active. The one useful routing hint is the parenthetical 'get IDs from browser_tabs', which points at the prerequisite source of the ID but gives no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_sync_barrierA
Block until a JS predicate returns truthy on every listed tab.
Replaces hand-rolled "wait for everything to be ready" loops.
Args: tab_ids: Tabs to monitor. predicate: JS expression that returns truthy when the tab is ready, e.g. "!!document.querySelector('.results')". timeout: Overall timeout in ms. poll_interval: Per-poll interval in ms.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_ids | Yes | ||
| timeout | No | ||
| predicate | Yes | ||
| poll_interval | No |
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 blocking semantics, per-tab predicate evaluation, and the polling cadence implied by poll_interval, but says nothing about what happens on timeout (error vs. false return), whether the predicate runs in each page's JS context, or whether it can fail on a single tab.
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?
Core behavior is front-loaded in the first sentence, rationale follows, and the Args block is clean and compact. Every line earns its place, including the predicate example, and there is no redundant restatement of the schema defaults.
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 moderately complex multi-tab blocking barrier with no annotations and no output schema, the definition covers behavior and parameters but omits failure semantics (timeout outcome, partial-readiness behavior) and any expected return value. Adequate for invocation, incomplete for confident use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains all four params, gives units for timeout and poll_interval ('in ms'), and supplies a concrete predicate example. It does not cover edge semantics such as empty tab_ids or predicate evaluation errors, so it falls just short of exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (block/wait), resource (listed tabs), and condition (JS predicate truthy on every tab). The phrase 'on every listed tab' distinguishes it from the many single-tab wait siblings (browser_wait_for_element, browser_wait_for_result, browser_wait_for_network_idle), and the 'replaces hand-rolled loops' line reinforces the multi-tab synchronization purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Replaces hand-rolled "wait for everything to be ready" loops' gives a concrete scenario that makes the use case clear. However, it never names a sibling alternative or states when NOT to use it (e.g., single-tab waits or browser_parallel), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tab_poolA
Maintain a warm pool of N tabs always ready to be acquired.
Grows or shrinks to size. Acquire/release via browser_pool_acquire and
browser_pool_release. Auto-grows by one if you acquire from an empty pool.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | about:blank | |
| size | Yes |
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 usefully discloses the auto-grow-by-one rule when acquiring from an empty pool, but is silent on what shrinking does to already-open tabs (likely closing them), whether in-use tabs are protected, and what the call returns.
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 tight sentences, front-loaded with the core purpose before the acquire/release routing and the auto-grow edge case. Nothing is redundant, though the fragmented line breaks make it slightly less polished than a single flowing paragraph.
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 pool-management tool with no annotations, no output schema, and a 0%-documented parameter set, the description covers the concept and cross-references siblings but omits the url parameter, the effect of shrinking on live tabs, and return behavior. Adequate but with clear 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%, so the description must compensate, and it only partially does: it explains `size` ('grows or shrinks to `size`') but never documents `url` (default about:blank), leaving an agent unsure what URL pooled tabs open. One of two parameters is meaningfully explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it maintains a warm pool of N tabs ready to be acquired, and explicitly routes acquire/release operations to the browser_pool_acquire and browser_pool_release siblings. An agent can distinguish this pool-management tool from the acquire/release tools without opening any 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?
It names the alternative tools (browser_pool_acquire, browser_pool_release) and the division of labor, so the agent knows to call this one to size the pool and the siblings to draw from it. It does not state when NOT to use it (e.g., use browser_new_tab for a one-off tab), so it falls short of the full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tabsB
List all open browser tabs with their IDs, titles, and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 states what is listed but not whether the read is passive, whether it spans all windows or only the active one, ordering, or staleness. For a zero-annotation tool this is thin, though the read-only nature is strongly implied by 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the operation and resource with zero filler. Nothing is wasted or 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?
With no output schema and no annotations, the description must cover everything, and it only partially does: it names the return fields but says nothing about scope (all windows vs current window), ordering, or how results map to other tab tools. Adequate for a trivial 0-param lister, but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly implies no arguments are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (List) plus resource (open browser tabs) and even enumerates the returned fields (IDs, titles, URLs), so the agent knows exactly what it produces. It does not, however, distinguish itself from close siblings like browser_windows, browser_page_info, or browser_tab_pool, which is why 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 when-to-use guidance, no mention of alternatives (e.g., browser_page_info for a single tab or browser_windows for window-level info), and no preconditions. The agent must infer usage 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_tag_tabB
Give a tab a memorable name. Refer to it later via browser_resolve_tag. Names survive bridge restarts only if you re-tag — they live in memory.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| tab_id | Yes |
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 disclose one genuinely useful, non-obvious trait: tags live in memory and only survive bridge restarts if re-applied. However it omits whether tagging an already-tagged tab overwrites or errors, and what failure behavior looks like for an invalid tab_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?
Three short sentences with the core action front-loaded and no filler. The final note is slightly awkward but carries real information, so nothing should be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool this covers the essential action and the key lifecycle caveat, but with no annotations, no output schema, and 0% parameter coverage, important details (overwrite semantics, error cases, return value, source of tab_id) are 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% for both required parameters. The description only loosely implies that 'name' is a human-readable label and that 'tab_id' identifies the target tab; it adds nothing about name uniqueness, format, or where tab_id comes from (siblings like browser_tabs or browser_resolve_tag).
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: assigning a memorable name to a tab, which is clearly distinct from tab manipulation siblings like browser_pin_tab or browser_switch_tab. It also names the companion tool (browser_resolve_tag) that consumes the tag, giving the agent a sense of where this fits in a workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The pairing of 'Give a tab a memorable name' with 'Refer to it later via browser_resolve_tag' implicitly defines the use case: you tag when you intend to reference the tab later by name rather than by volatile id. No explicit when-not guidance or sibling exclusions are given, keeping it 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.
browser_trusted_clickA
Click using the real OS mouse pointer for pages that reject synthetic DOM events.
This is slower and moves the user's cursor, so prefer browser_click unless a page specifically ignores synthetic clicks.
Args: selector: CSS selector to click. If provided, Kitsune clicks its center. x: X coordinate, used if selector is empty. y: Y coordinate, used if selector is empty. coordinate_space: "viewport" for browser viewport coords or "screen" for desktop coords. focus: Whether to try to foreground the browser first. Defaults to false. tab_id: Optional tab to resolve the selector against (viewport coords only).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| focus | No | ||
| tab_id | No | ||
| selector | No | ||
| coordinate_space | No | viewport |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses meaningful traits: it is slower, it moves the user's physical cursor, and it targets pages rejecting synthetic events. It doesn't cover failure behavior or what happens if the selector misses, so it stops short of a 5, but it adds real behavioral context beyond a bare 'click'.
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-loads purpose, then the tradeoff guidance, then a tight Args list. Every line earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a click interaction tool with no output schema and no annotations, the description supplies the mechanism, the routing condition, and full parameter documentation. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does: it explains the selector-vs-x/y precedence, the two coordinate_space values, the meaning of focus, and the tab_id viewport-only constraint. This adds material meaning the bare schema lacks.
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 mechanism: 'Click using the real OS mouse pointer.' It immediately distinguishes itself from the sibling browser_click by describing the different implementation (OS-level vs synthetic events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rule: 'prefer browser_click unless a page specifically ignores synthetic clicks.' This names the alternative and the exact condition that selects this tool, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeB
Type text into an input field.
Args: selector: CSS selector of the input element text: Text to type clear: Whether to clear existing text first tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| clear | No | ||
| tab_id | No | ||
| selector | Yes |
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 nothing about side effects. It doesn't say whether typing fires real keyboard events, whether it focuses the element, what happens if the selector is not found, or whether it waits for the element to be interactable.
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 a single sentence followed by a compact per-argument list. Given 0% schema coverage, the argument list is warranted rather than redundant, though the 'Args:' formatting could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating interaction tool with no annotations and no output schema, the definition covers parameters adequately but omits return/error behavior, waiting semantics, and sibling disambiguation. It is minimally viable but has clear gaps an agent would want filled before calling 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%, so the description must compensate, and it documents all four parameters: selector (CSS selector of the input), text, clear (clear existing text first), and tab_id (defaults to active tab). This adds meaningful semantics beyond the bare schema types, though it doesn't state whether selector matches a single or multiple elements.
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 ('Type text into an input field'), so an agent immediately knows the operation. However, it does not distinguish this from close siblings like browser_fill, browser_set_editable_content, or browser_keypress, which appear to overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as browser_fill (likely a direct value-set) or browser_keypress (individual keystrokes). The only usage-style detail is the tab_id default, which is a parameter note, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_untag_tabC
Remove a tag.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
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 does not say whether removal is reversible, whether the tag disappears from all tabs or just one, what happens if the tag name does not exist, or what is returned. Only the bare fact of mutation 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?
It is short, but this is under-specification rather than conciseness — three words that leave scope, target, and parameter meaning unresolved. There is no wasted text, but there is far too little of it for a mutation 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?
With no annotations, no output schema, an undocumented required parameter, and a dense sibling set (browser_tag_tab, browser_resolve_tag, browser_list_tags), the definition is nowhere near complete enough for an agent 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?
One parameter ('name') at 0% schema description coverage, and the description adds no meaning: is this the tag label, a tag id, or a tab identifier? The only hint is that a tag is being removed, which leaves the required 'name' argument ambiguous.
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 and resource ('remove' + 'tag'), so the basic action is identifiable. However, it never clarifies the target: the tool name says 'untag_tab', implying a tag is detached from a specific tab, but the description could equally read as deleting a tag globally, which is what browser_list_tags / browser_resolve_tag territory suggests. It does not distinguish itself from browser_tag_tab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisites, or alternative is given. The agent is not told when to untag versus deleting/replacing a tag via browser_tag_tab, nor whether the tag must already exist. Only the most generic inference ('use this to remove a tag') is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_upload_fileA
Attach local file(s) to a page's upload control - no OS file dialog.
The bridge reads the file from disk and streams it into the page, which builds real File objects and sets them on the (firing input + change). If the selector is a drop zone with no input inside, it fires dragenter/dragover/drop.
Args: path: absolute file path, or a list of paths for multi-file inputs. selector: the file input, an element containing it, or a drop zone. Omit to use the first input[type=file] on the page. mode: "auto" (input if found, else drop), "input", or "drop". tab_id: target tab (default: active). Pass it for anything big - the upload streams in ~384 KB chunks and must keep hitting the same tab.
Returns {ok, mode, files: [{name, size, type}], chunks, bytes, transport, seconds}.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | auto | |
| path | Yes | ||
| tab_id | No | ||
| selector | No |
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 does so richly: it explains the bridge reads from disk, streams in ~384 KB chunks, constructs real File objects, fires input + change on an <input type=file>, and falls back to dragenter/dragover/drop on a bare drop zone. It also discloses the tab-affinity constraint for large uploads, which is a real operational gotcha.
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 mechanism, then a well-organized Args block and a return-shape line. Every element is load-bearing given the 0% schema coverage, though the multi-line prose is on the longer side for a single tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema exist, and the description fills both gaps: it covers mutation behavior, event side effects, chunking, tab pinning, and the exact return payload ({ok, mode, files, chunks, bytes, transport, seconds}). An agent has everything needed to call this 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%, so the description must compensate, and it documents all four parameters: path (absolute, or list for multi-file), selector (input, containing element, or drop zone), mode (with its three literal values spelled out since no enum exists in the schema), and tab_id (default active, plus why to pin it). This adds meaning the schema cannot supply.
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 ('Attach local file(s) to a page's upload control') and immediately differentiates itself from OS-level file dialogs. No sibling tool (browser_drag, browser_form_fill, browser_fill) overlaps with this behavior, so the scope 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?
Gives clear operational context: omit selector to hit the first input[type=file], use mode 'auto'/'input'/'drop' depending on the target, and pass tab_id for anything large. It does not name when-not-to-use or an alternative tool, but no plausible sibling alternative exists for file attachment, so the missing exclusion is low-cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_elementA
Wait for a CSS selector to appear and become visible on the page. Returns immediately when the element is found, rather than sleeping a fixed duration. Use this instead of sleep when waiting for dynamic/JS-rendered content.
Args: selector: CSS selector to wait for (e.g. ".tracking-events", "#results", "[data-loaded]") timeout: Maximum time to wait in milliseconds (default: 10000 = 10s) poll_interval: How often to check in milliseconds (default: 200ms) tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| timeout | No | ||
| selector | Yes | ||
| poll_interval | No |
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 disclose meaningful behavior: it returns immediately on success rather than sleeping a fixed duration, and it polls at an interval. It does not state what happens when the timeout elapses (error vs. empty/false return), which is the one behavioral detail an agent most needs for a wait 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?
Front-loaded one-line purpose followed by the alternative-to-sleep rationale, then a tidy Args block. Efficient, with only slight redundancy in repeating schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must stand alone; it covers purpose, mechanism, and every parameter. The missing piece is timeout-failure semantics and confirmation of the return value (found element vs. boolean), a notable gap for a waiting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it documents all four parameters with units and examples ('#results', '[data-loaded]', '10000 = 10s', '200ms'), plus the optional/defaulted tab_id. This is richer than the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('wait for') and resource (CSS selector becoming visible), which clearly separates it from non-wait siblings like browser_screenshot or browser_click. It does not explicitly distinguish itself from the other browser_wait_for_* siblings (url, title, network_idle, result), 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?
Gives a clear condition for use ('waiting for dynamic/JS-rendered content') and names an alternative to avoid ('use this instead of sleep'). No explicit when-not guidance or routing to the sibling wait tools (wait_for_url, wait_for_title), so it is clear context rather than full decision guidance.
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 no new network resources have started for idle_ms.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| idle_ms | No | ||
| timeout | No |
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 defines the idle condition, which is useful, but omits what happens on timeout (error vs. silent return), whether it blocks the tab, and what the result indicates. For a blocking wait tool, this leaves significant 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; the condition is stated immediately. It is perhaps too terse for a blocking operation, but nothing is wasted.
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 output schema, and 0% parameter coverage, the description should carry much more. Timeout semantics, tab targeting, and return behavior are all missing, leaving the agent unable to predict call outcomes.
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 3 parameters. The description partially clarifies idle_ms by tying it to the 'no new resources started' window, but tab_id (which tab, default active?) and timeout (units, behavior on expiry) are entirely 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 (wait) and a precise condition (no new network resources started for idle_ms), which distinguishes it from other wait siblings like browser_wait_for_url or browser_wait_for_element. However, it doesn't explicitly name those alternatives, so the differentiation is implied by the condition 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 guidance on when to use this versus browser_wait_for_url, browser_wait_for_element, browser_wait_for_result, or browser_sync_barrier. No mention of prerequisites or typical sequencing (e.g. after navigation, before reading DOM). 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_wait_for_resultB
Poll a JavaScript expression until it returns a non-empty result.
Args: code: JavaScript expression to evaluate repeatedly timeout: Maximum time to wait in milliseconds poll_interval: How often to check in milliseconds tab_id: Optional tab to target. Defaults to active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| tab_id | No | ||
| timeout | No | ||
| poll_interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the core behavioral trait (repeated polling until a non-empty result), which is genuinely useful, but it omits failure modes: what happens on timeout, whether an error is raised or an empty value returned, and the evaluation context of the code.
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 core behavior is front-loaded in one sentence, followed by a compact Args list. No filler sentences; each line earns its place, though the Args block partially restates schema property names.
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 polling tool with no annotations and no output schema, the description covers inputs and mechanism but leaves the return contract and timeout behavior unspecified. An agent can call it, but cannot predict what a timeout yields, which is a meaningful gap for a wait tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all four parameters with units (milliseconds), the meaning of code, and the tab_id default behavior. It adds real meaning beyond the bare schema titles, though it does not restate the numeric defaults for timeout/poll_interval.
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 (poll) and resource (a JavaScript expression until it returns a non-empty result), which clearly conveys the tool's operation. It distinguishes itself functionally from siblings like browser_js (single evaluation) and browser_wait_for_element, though it does not name 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 explicit when-to-use guidance, no exclusions, and no routing among the many browser_wait_for_* siblings (url, element, network_idle, title). The polling behavior implies a use case, but the agent is left to infer it, so this is below the minimum-viable bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_titleB
Wait until document.title matches a JS regex pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| pattern | Yes | ||
| timeout | No |
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 states the waiting condition but omits critical wait behavior such as what happens on timeout, whether it blocks, and how the regex is applied to the title.
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 earns its place by naming the exact condition being waited on.
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?
There are no annotations, no output schema, and incomplete parameter coverage. For a wait tool with tab targeting and a configurable timeout, the description should disclose timeout behavior and tab_id semantics but does not.
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 explains that 'pattern' is a JS regex for document.title, but it says nothing about tab_id or timeout, so two of three parameters remain semantically 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 ('Wait until'), resource ('document.title'), and condition ('matches a JS regex pattern'). This clearly distinguishes it from sibling wait tools such as browser_wait_for_url and browser_wait_for_element.
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 guidance on when to use this tool versus browser_wait_for_url, browser_wait_for_element, or browser_wait_for_result. It also does not state any preconditions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_urlC
Wait until the tab's URL matches a JS regex pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| pattern | Yes | ||
| timeout | No |
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 says nothing about timeout behavior (error vs. false return), polling interval, whether the call blocks the tab, or what happens if the tab is closed mid-wait.
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 condition front-loaded and no filler. It is appropriately sized, though the brevity comes at the cost of the missing behavioral detail noted elsewhere.
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 output schema, and zero schema description coverage on three parameters, the description is too thin for a blocking wait primitive. An agent cannot tell what the timeout returns, which tab is targeted by default, or whether the call throws.
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 largely does not. It usefully specifies that 'pattern' is a JS regex (beyond the schema's bare 'string'/'Pattern'), but tab_id (default null — presumably the active tab) and timeout semantics 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 ('wait until') and resource ('the tab's URL') with the matching condition (JS regex). It implicitly distinguishes itself from browser_wait_for_title and browser_wait_for_element by naming URL as the watched signal, but it never explicitly routes the agent away 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?
No when-to-use guidance at all: nothing about what to do after the wait succeeds, whether a timeout raises or returns, or how this compares to browser_wait_for_title / browser_wait_for_network_idle in the same family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wake_tabA
Revive a tab that Zen's Tab Unloader may have discarded.
Zen aggressively unloads inactive tabs to save RAM. An unloaded tab still appears in browser_tabs but has no live content script — commands targeting it will hang or fail until it's reloaded. browser_wake_tab is idempotent: if the tab is already alive it returns immediately; otherwise it reloads the tab and waits for the page to finish loading.
Use before targeting a tab that might have been idle for a while. Prefer browser_keep_alive for tabs you'll touch repeatedly.
Args: tab_id: The tab ID to wake (get IDs from browser_tabs)
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden well. It discloses that unloaded tabs have no live content script, that commands will hang or fail until reload, that the tool is idempotent, and that it waits for page load.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, followed by concise context, usage guidance, and a clear Args section. Every sentence adds useful information with no wasted repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation-like operation with no annotations and no output schema, the description provides enough context: unload behavior, idempotency, reload semantics, and usage routing. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single parameter, so the description must compensate. It defines tab_id as the tab to wake and gives a concrete source for IDs ('get IDs from browser_tabs'), adding meaning beyond the bare integer schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reviving a tab discarded by Zen's Tab Unloader. It distinguishes the tool from sibling reload/keep-alive tools by explaining the unloaded-tab condition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('before targeting a tab that might have been idle') and names the preferred alternative for repeated access ('browser_keep_alive'). It also points to browser_tabs for obtaining IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_watch_consoleA
Toggle console capture on a tab. Once enabled, browser console messages (log/info/warn/error/debug + window errors) are buffered up to 500 entries; retrieve via browser_console_logs.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| enabled | No |
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 meaningful work: it discloses the buffer cap (500 entries), the captured message types (log/info/warn/error/debug + window errors), and that capture is toggle-based. It leaves unstated whether the buffer is cleared or retained on disable, and whether the operation requires any permission — modest gaps for a low-risk toggle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, verb-first and front-loaded, with the parenthetical message-type list earning its space by telling the agent exactly what will be captured. 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?
No output schema or annotations exist, so the description must be self-sufficient; it covers the capture behavior, the cap, and the retrieval path. The remaining gaps — disable semantics and the default tab_id — are minor for a simple toggle tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for both parameters. It implies tab scoping ('on a tab') and the enabled/disabled toggle, but never explains that tab_id defaults to null (presumably the active tab) or that enabled defaults to true, so an agent must inspect the schema for defaults. Partial compensation warrants the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Toggle console capture on a tab') and immediately distinguishes itself from the sibling it could be confused with by naming browser_console_logs as the retrieval counterpart. An agent can tell what this does and how it differs from the logs reader 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?
Clearly frames the workflow: enable capture here, then retrieve via browser_console_logs. It communicates the useful context that buffering only happens while enabled, but stops short of explicit when-not guidance (e.g., what happens if toggled off, or whether it conflicts with browser_capture_network).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_windowsB
List all open browser windows with their tabs.
| Name | Required | Description | Default |
|---|---|---|---|
No 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. Beyond the word 'List' implying a read, it says nothing about whether windows are filtered, how many are returned, ordering, or the shape of each window/tab entry. For an unannotated tool this 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 filler; every word contributes to the scope statement.
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 no-parameter, read-only enumeration with no nested objects and no output schema, the description conveys enough to call it correctly. It could add one clause on ordering or scope (all windows vs. current), but nothing essential 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 schema is trivially complete. Baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('open browser windows with their tabs'), which clearly distinguishes it from tab-level siblings like browser_tabs. It stops short of explicitly naming the sibling it differs from, but the scope 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 statement of when to use this tool versus browser_tabs, browser_status, or browser_page_info, and no prerequisites or exclusions. The agent must infer that this is the window-level enumeration call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_workflowB
Execute a named Kitsune workflow from the bridge workflow directory.
Args: name: Workflow file name without .md variables: Optional template variables for the workflow
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| variables | No |
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 little beyond the directory location and the .md naming convention. It does not say whether execution is blocking, what happens on missing/invalid workflow names, whether template variable failures abort the run, or what is returned.
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 purpose sentence followed by a compact Args block; front-loaded and free of filler. The docstring-style formatting is functional rather than tightly prose-optimized, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description should carry more for a tool that triggers a multi-step browser workflow. It covers the two parameters but omits runtime behavior (blocking vs. async, result/return shape, error handling), leaving an agent unsure what to expect after 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%, so the description must compensate, and it does reasonably: it defines 'name' as the workflow file name without the .md extension and labels 'variables' as optional template variables. It still leaves the shape/keys of the variables object undefined, but for two params this adds real meaning beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Execute) and resource (a named Kitsune workflow from the bridge workflow directory), which tells an agent what it gets. It stops short of explicitly differentiating from the sibling browser_workflows (plural), which presumably lists workflows, so the boundary is left 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?
No when-to-use or when-not-to-use guidance is given, and no alternative is named. The only implied context is that a workflow must already exist in the 'bridge workflow directory', but the agent is not told how to discover one or when to prefer this over chaining native browser tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_workflowsB
List available named Kitsune workflows from the bridge workflow directory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It says nothing about return format, whether it is read-only, whether it requires a live bridge connection, or what happens when no workflows exist — only the bare purpose.
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 wasted words and the resource front-loaded. It is arguably too terse, but nothing in it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema listing tool, the description covers the essentials of what is returned at a high level. It never explains what a workflow entry looks like or how it feeds into browser_workflow, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-argument 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 (List) and resource (named Kitsune workflows) plus their origin (bridge workflow directory). It is distinguishable from the singular browser_workflow sibling, though the description never explicitly contrasts the two.
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 only implied: an agent would infer this is a discovery step to run before browser_workflow, but the description never states when to use it, nor names browser_workflow as the execution counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wp_htmlA
Extract HTML widget content from a WordPress Elementor page.
Navigates to the Elementor editor for the given page, waits for load, then extracts the innerHTML of all HTML widgets from the Elementor preview iframe. Returns clean HTML/CSS/JS content.
The browser must already be logged into WP admin for this to work.
Args: site_url: WordPress site URL (e.g. "https://thankyouexperiences.com") page_id: WordPress page/post ID (e.g. 5719 for Team page)
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ||
| site_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses the internal flow (navigates to the Elementor editor, waits for load, reads innerHTML from the preview iframe), the return shape (clean HTML/CSS/JS), and the WP-admin auth requirement. It omits remaining behavioral details like tab/navigation side effects and failure behavior when not logged in, 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?
The purpose is front-loaded in the first sentence, followed by the flow, return value, and precondition, so an agent can triage quickly. The 'Args' block partly restates the schema, and the process sentence is slightly verbose, but nothing is wasted enough to drop below a 4.
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 two-parameter browser automation tool with no output schema and no annotations, the description covers the essentials: what it does, the runtime precondition, the target iframe, and the returned content. Missing are edge-case/failure behavior and tab-state effects, so not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does by giving concrete format examples: a fully qualified site_url ('https://thankyouexperiences.com') and a page_id example tied to meaning ('5719 for Team page'). The remaining semantics of the two parameters are largely self-evident, so an example-driven assist merits a 4 rather than a 3 baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (extract) and resource (HTML widget content from a WordPress Elementor page), and goes further to name the exact source (Elementor preview iframe). An agent can distinguish it from generic siblings like browser_html or browser_page_text 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?
Provides a clear precondition ('The browser must already be logged into WP admin for this to work'), which tells the agent the required context. However, it does not explicitly contrast with alternatives such as browser_html or state when not to use it, so it falls short of full when/when-not guidance.
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.
106 tool updates
v0.1.0- First observed
browser_audit - First observed
browser_back - First observed
browser_batch - First observed
browser_blur - First observed
browser_bounds - First observed
browser_broadcast - First observed
browser_cache - First observed
browser_capture_network - First observed
browser_check - First observed
browser_clear_browsing_data - First observed
browser_click - First observed
browser_click_and_wait_navigation - First observed
browser_clipboard - First observed
browser_close_tab - First observed
browser_close_window - First observed
browser_computed_style - First observed
browser_console_logs - First observed
browser_cookies - First observed
browser_create_window - First observed
browser_delete_session - First observed
browser_detach_tab - First observed
browser_dom - First observed
browser_double_click - First observed
browser_downloads - First observed
browser_drag - First observed
browser_duplicate_tab - First observed
browser_element_screenshot - First observed
browser_explain_selector - First observed
browser_fill - First observed
browser_find - First observed
browser_focus - First observed
browser_focus_window - First observed
browser_form_fill - First observed
browser_forms - First observed
browser_forward - First observed
browser_full_page_metrics - First observed
browser_full_page_screenshot - First observed
browser_get_policy - First observed
browser_get_zoom - First observed
browser_health - First observed
browser_highlight - First observed
browser_hover - First observed
browser_html - First observed
browser_iframes - First observed
browser_images - First observed
browser_intercept - First observed
browser_js - First observed
browser_keep_alive - First observed
browser_keep_alive_stop - First observed
browser_keypress - First observed
browser_links - First observed
browser_list_sessions - First observed
browser_list_tags - First observed
browser_load_session - First observed
browser_logs - First observed
browser_markdown - First observed
browser_meta - First observed
browser_move_tab - First observed
browser_mute_tab - First observed
browser_navigate - First observed
browser_new_tab - First observed
browser_page_info - First observed
browser_page_text - First observed
browser_page_text_by_tab_id - First observed
browser_parallel - First observed
browser_pin_tab - First observed
browser_pool_acquire - First observed
browser_pool_release - First observed
browser_query - First observed
browser_readability - First observed
browser_reload_extension - First observed
browser_reload_tab - First observed
browser_resolve_tag - First observed
browser_retry - First observed
browser_save_session - First observed
browser_scheduler - First observed
browser_screenshot - First observed
browser_scroll - First observed
browser_select_option - First observed
browser_set_editable_content - First observed
browser_set_policy - First observed
browser_set_zoom - First observed
browser_status - First observed
browser_storage - First observed
browser_structured_data - First observed
browser_submit_form - First observed
browser_switch_tab - First observed
browser_sync_barrier - First observed
browser_tab_pool - First observed
browser_tabs - First observed
browser_tag_tab - First observed
browser_trusted_click - First observed
browser_type - First observed
browser_untag_tab - First observed
browser_upload_file - First observed
browser_wait_for_element - First observed
browser_wait_for_network_idle - First observed
browser_wait_for_result - First observed
browser_wait_for_title - First observed
browser_wait_for_url - First observed
browser_wake_tab - First observed
browser_watch_console - First observed
browser_windows - First observed
browser_workflow - First observed
browser_workflows - First observed
browser_wp_html
TDQS
Scored across 106 tools
Many tools overlap substantially: browser_page_text and browser_page_text_by_tab_id are explicitly documented as doing 'the same thing now', while browser_type, browser_fill, browser_set_editable_content, and browser_form_fill are four paths to entering text with subtle boundaries. Descriptions do help distinguish most cases (e.g. click vs trusted_click vs click_and_wait_navigation), but the sheer surface creates frequent ambiguity.
Nearly all tools use the browser_ prefix in snake_case, and verb_noun forms like browser_navigate, browser_close_tab, and browser_set_policy are predictable. However, a large minority are bare nouns with no verb (browser_health, browser_logs, browser_cookies, browser_forms, browser_html, browser_markdown), which slightly breaks the pattern.
106 tools is far beyond what any single agent can scan effectively, well past the 25+ threshold for a heavily overloaded surface. Many of these exist as niche one-offs (browser_wp_html, browser_reload_extension, browser_broadcast) that dilute discoverability of the core set.
The surface covers browser automation exhaustively: navigation, tabs, windows, cookies, storage, sessions, network interception/capture, screenshots, forms, JS execution, waiting primitives, policy, tagging, pooling, and diagnostics. It is hard to identify a meaningful missing operation for the stated domain.
Maintenance
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI agents to control a real web browser (Firefox) via Selenium WebDriver, supporting page navigation, interaction, and inspection through natural language.434MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to launch a fingerprint-randomized browser, navigate, click, type, read the DOM, and take screenshots through a patched Firefox engine.MIT
- AlicenseBqualityBmaintenanceEnables AI agents to drive a user-launched Firefox instance via its native Marionette protocol, providing precise DOM actuation like clicking, typing, uploading files, taking screenshots, and evaluating JavaScript.1817 npm1GPL 2.0
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to control existing Chrome and Firefox browser sessions locally, including tab management, navigation, form filling, screenshots, and persistent scripts, without remote relays or debugging ports.17 npm-