wrave-mcp
Provides programmatic control of an active Brave Browser session, enabling tab management, page navigation, DOM and accessibility tree inspection, clicking and typing, screenshots, console log retrieval, cookie access, and PDF export.
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., "@wrave-mcpClick the login button and read the resulting page"
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.
Wrave
High-performance Model Context Protocol (MCP) gateway for Brave Browser.
Direct, low-latency browser automation for Claude Code, Antigravity, Codex, Cursor, and MCP clients.
Overview
Wrave provides full programmatic control of your active Brave browser session through the Model Context Protocol (MCP). It gives coding assistants and developer workflows direct access to interact with, inspect, and navigate live web applications:
1-Turn Compound Actions: High-speed primitives like
click_and_readandtype_and_submitthat combine interaction and page inspection into a single round-trip.Semantic Element Indexing: Surfaces interactive elements with numbered references (
@1,@2,@3, etc.), bounding boxes, and accessibility roles—eliminating brittle CSS selectors on dynamic apps.Full-Spectrum Inspection: Clean DOM trees, accessibility hierarchies, full-page or viewport screenshots, intercepted console logs, network cookies, and tab state.
Dual Transport Modes: Works out of the box on demand via
stdio(zero background services to manage) or as a local HTTP/SSE service.Zero Browser Modifications: Runs directly alongside your everyday browser session without requiring special startup flags or separate browser drivers.
Related MCP server: Playwright MCP Server
Installation in Brave Browser
Download the latest
wrave-extension-v*.zipfrom GitHub Releases and extract it.Open Brave and navigate to:
brave://extensionsEnable the Developer mode toggle in the top-right corner.
Click Load unpacked and select the extracted folder.
(Optional) Pin the Wrave icon to your toolbar for quick status monitoring.
Connect Your Client
Wrave supports automatic stdio launching (recommended) and connecting to a persistent local server.
1. Google Antigravity
Add Wrave to ~/.gemini/config/mcp_config.json:
Option A: On-Demand Stdio (Recommended)
{
"mcpServers": {
"wrave": {
"command": "npx",
"args": ["-y", "wrave-mcp", "--stdio"]
}
}
}Option B: Persistent Local Server
If running npx wrave-mcp --server:
{
"mcpServers": {
"wrave": {
"serverUrl": "http://127.0.0.1:8282/mcp"
}
}
}2. Claude Code (CLI)
Add to Claude Code with a single command:
# On-demand stdio (recommended)
claude mcp add wrave -- npx -y wrave-mcp --stdio
# Or connect to a running local server:
claude mcp add wrave -- http://127.0.0.1:8282/mcp/sse3. Claude Desktop
Add to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wrave": {
"command": "npx",
"args": ["-y", "wrave-mcp", "--stdio"]
}
}
}4. OpenAI Codex & OpenCode
Add to your opencode.json configuration:
{
"mcp": {
"servers": {
"wrave": {
"command": "npx",
"args": ["-y", "wrave-mcp", "--stdio"]
}
}
}
}Or connect via HTTP endpoint:
{
"mcp": {
"servers": {
"wrave": {
"url": "http://127.0.0.1:8282/mcp"
}
}
}
}5. Cursor & Windsurf
Add to ~/.cursor/mcp.json or ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"wrave": {
"command": "npx",
"args": ["-y", "wrave-mcp", "--stdio"]
}
}
}Available MCP Tools (21 Primitives)
Compound Actions (1-Turn)
Tool Name | Description | Parameters |
| Instant page snapshot with indexed interactive elements ( |
|
| Click an element (by selector, |
|
| Type text into an input or contenteditable field and submit with Enter in 1 turn. |
|
Core Navigation & Inspection
Tool Name | Description | Parameters |
| List all open tabs with ID, title, URL, and active state. | None |
| Open a new tab with specified URL (auto-returns page snapshot & indexed elements). |
|
| Close an open tab by its ID. |
|
| Bring tab to foreground and activate it. |
|
| Reload tab with optional cache bypass. |
|
| Read title, URL, viewport dimensions, and scroll position. |
|
| Extract clean, LLM-friendly DOM tree with bounding boxes |
|
| Extract full AX accessibility tree (roles, labels, values). |
|
| Capture viewport or full-page screenshot as base64 image. |
|
Direct Interaction Primitives
Tool Name | Description | Parameters |
| Dispatch click to element selector, |
|
| Dispatch double-click to element selector or |
|
| Type text into inputs, textareas, and rich contenteditable editors ( |
|
| Dispatch native keyboard key event (Enter, Tab, Escape, etc.). |
|
| Scroll viewport or target scrollable container. |
|
| Evaluate arbitrary JavaScript expression in tab context. |
|
| Retrieve cookies for the active domain. |
|
| Export active page to PDF document. |
|
| Retrieve intercepted console logs from the page. |
|
Development & Building from Source
# 1. Clone repository
git clone https://github.com/AMARA-Khaled/wrave.git
cd wrave
# 2. Install dependencies
npm install
# 3. Build codebase
npm run build
# 4. Run automated test suite
npm test
# 5. Package extension bundle
npm run pack:extensionLicense
MIT © AMARA Khaled
Available Tools
21 toolswrave_clickB
Dispatch mouse click to element selector or pixel coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Optional explicit X coordinate | |
| y | No | Optional explicit Y coordinate | |
| tab_id | Yes | The ID of the tab | |
| selector | No | CSS selector of the target element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, so the description carries the full behavioral burden. It does not disclose side effects, whether a click waits for actionability, how targeting conflicts are resolved, or whether errors 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?
A single, front-loaded sentence that names the action and both targeting modes with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple click action with fully documented parameters, but it omits behavior around conflicts (both selector and coordinates), navigation/waits, and return values. Since no annotations or output schema exist, some of this burden falls on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already documents all 4 parameters with 100% coverage deftly, so the description adds only a minor clarification: it frames x/y as pixel coordinates and selector as element targeting. This meets the baseline but does not go beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('dispatch mouse click') and both targeting modes ('element selector or pixel coordinates'). It differentiates from siblings by implication (single click vs. double_click, click_and_read), though it does not name those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this tool over wrave_double_click, wrave_click_and_read, or wrave_type_text. The description conveys only what it does, not the conditions or exclusions that should drive selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_click_and_readB
Click an element (by selector, @ref like @1, or x/y) and immediately return the updated page snapshot in 1 turn.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Optional explicit X coordinate | |
| y | No | Optional explicit Y coordinate | |
| tab_id | Yes | The ID of the tab | |
| selector | No | CSS selector or @ref (e.g. @1, @4) to click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It reveals that the tool returns the updated page snapshot in 1 turn, indicating a combined click-and-read behavior. However, it does not disclose edge cases such as what happens if the element is not found, whether the click triggers navigation that may invalidate the snapshot, or how the snapshot format relates to wrave_get_snapshot. This is a moderate disclosure level; it states the primary behavioral trait (returns snapshot) but lacks depth on error handling or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action (click) and includes key details (selector types and immediate snapshot). It is efficient with no wasted words. The structure is clear, though it could have separated the description of click and read behaviors for even better clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a moderate complexity tool with four parameters, the description covers the basic behavior and return value type (snapshot) but omits important context: error handling, whether the click may navigate to a new page, the relationship to wrave_get_snapshot for persistent snapshots, and any timeouts. It is sufficient for an agent to attempt the tool, but not fully complete for robust 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?
The schema documentation covers all parameters (100% coverage), so the baseline is 3. The description adds some value by explicitly listing the selector types (selector, @ref, x/y), which aligns with the schema and may help an agent understand that x/y are alternative coordinate-based inputs. However, it does not explain the interaction between selector and x/y (e.g., precedence, mutual exclusivity) beyond what the schema implies, so the description does not significantly enhance parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (click an element) and the resource (a rendered page), and mentions multiple selector types (selector, @ref, x/y) and the return of an updated snapshot. It is distinguishable from siblings like wrave_click and wrave_double_click by noting the immediate snapshot return, though it could be even more specific about its role relative to the standalone wrave_click tool. The verb is specific and the resource is implied, so it earns a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a usage pattern: clicking an element and then reading the resulting snapshot in the same turn. However, it does not explicitly say when to use this tool versus alternatives like wrave_click followed by wrave_get_snapshot or wrave_type_and_submit. The mention of 'in 1 turn' suggests efficiency, but no explicit when-not-to-use guidance or alternatives are named, so only implied usage is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_close_tabA
Close an open tab by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab to close |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It clearly identifies the destructive action (closing a tab), but does not mention side effects such as loss of page state, focus shifting to another tab, or behavior when closing the last tab. It is minimally transparent but not richly so.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It earns its place by naming the action, object, and parameter mechanism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 action with no output schema and no annotations, the description covers the essential action and input. It does not explain where to obtain tab IDs or what happens after closing, but the tool is simple enough that these are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds only the constraint that the tab must be open, which is a mild clarification beyond the schema's 'ID of the tab to close'; it does not add format, source, or error semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Close'), a clear resource ('an open tab'), and the selection mechanism ('by its ID'). This distinguishes it from sibling tab tools such as wrave_focus_tab and wrave_reload_tab, even though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for closing an existing tab, but gives no explicit guidance about when to prefer it over sibling actions, how to obtain a valid tab_id, or what to do if the tab is already closed. The use case is inferable from the verb but not stated as a decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_double_clickC
Dispatch double-click event to element selector or coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab | |
| selector | No | CSS selector of the target element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It merely states the action 'dispatch double-click event' without explaining side effects, error handling, timing behavior, or whether the operation is destructive. The mention of 'coordinates' without a corresponding parameter adds confusion rather than transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the core action. It is appropriately brief for the limited content, though the missing behavioral detail means it is under-specified rather than efficiently complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser automation interaction tool with no annotations and no output schema, the description is incomplete. It fails to explain what happens after dispatch (e.g., page changes, return value), how failures (e.g., element not found) are handled, or how the 'coordinates' option would be specified. The mismatch between description and schema further reduces contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so 'tab_id' and 'selector' are already well-described. The description adds 'or coordinates' which is not represented in the schema, potentially misleading the agent into thinking a coordinate parameter exists. Thus, it adds incorrect meaning rather than enriching understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('dispatch double-click event') and the target ('element selector or coordinates'), which distinguishes it from sibling single-click tools like wrave_click. However, it mentions 'coordinates' as a target option, but the schema only includes a 'selector' parameter, creating a slight inconsistency that reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as wrave_click or other interaction tools. There is no mention of scenarios where double-clicking is necessary, nor any exclusions or prerequisites, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_execute_scriptB
Execute arbitrary JavaScript expression in the tab context.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to evaluate | |
| tab_id | Yes | The ID of the tab |
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 disclosing behavioral traits, but it only states what the tool executes without noting side effects or risks. It does not mention that executing arbitrary JavaScript can mutate page state, break the page, navigate away, or have irreversible consequences, nor does it describe the return behavior. A low-level code-execution tool of this power needs explicit hazard disclosure, which is 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?
The description is a single front-loaded sentence with no filler, making it structurally concise and easy to scan. It earns its place but is under-specified for the operational complexity of the 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?
For a tool with no output schema and no annotations, the description must compensate by explaining return behavior, scope, and side effects. It does none of that. It doesn't say what the expression's result is, whether asynchronous execution is supported, or what state the tab must be in, leaving an agent with considerable uncertainty 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 100%, so the baseline is 3. The description adds minimal nuance by phrasing 'script' as an 'expression' and placing execution 'in the tab context', but does not meaningfully go beyond the schema's 'JavaScript code to evaluate' and 'The ID of the 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?
The description uses a specific verb ('Execute') plus a precise resource/context ('arbitrary JavaScript expression in the tab context'), which clearly distinguishes it from all the listed siblings (navigation, DOM, input, cookie, PDF tools). No other sibling offers code evaluation, so an agent can unambiguously identify this as the script-execution tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose this tool versus the dedicated browser helpers like wrave_click, wrave_type_text, or wrave_get_dom_tree. There is no mention of alternatives, exclusions, or scenarios where arbitrary JS is the appropriate last resort. The agent is left to infer usage purely from the tool's name and generic description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_focus_tabB
Bring a tab to the foreground and activate it.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab to focus |
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 clearly states the primary effect (bringing the tab to the foreground and activating it), but it does not disclose error behavior, return value, or side effects. For a simple non-destructive action, this is moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or unnecessary details. It communicates the core behavior efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description plus schema is nearly sufficient. It could mention where tab_id comes from or what happens if the ID is invalid, but those are minor gaps for this low-complexity 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 input schema provides 100% coverage for the single parameter, tab_id, with a clear description. The tool description adds no additional parameter context, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Bring a tab to the foreground and activate it') and names the resource ('tab'), making the purpose clear. It does not explicitly distinguish this from siblings like wrave_open_tab, but the action is distinct enough that it earns a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as wrave_open_tab or wrave_get_tab_state. There is no mention of prerequisites, exclusions, or when focusing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_get_accessibility_treeA
Extract the full accessibility tree (AXTree) for semantic screen-reader level inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab |
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 only states the extraction action and use case; it does not disclose whether the operation is read-only, whether it requires the tab to be active/loaded, what the return format is, or any performance/rate-limit considerations. This is a meaningful gap for a retrieval 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 description is a single, focused sentence with no wasted words. The core action and purpose are front-loaded, making it immediately scannable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 retrieval tool, the high-level purpose is present, and the description implies the return value (the accessibility tree) even without an output schema. However, the absence of annotations and any behavioral/precondition details leaves open questions about tab validity, snapshot freshness, and the exact tree structure returned, so it is minimally complete but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes tab_id as 'The ID of the tab' with 100% coverage. The description adds no extra meaning to the parameter beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Extract') and identifies the exact resource ('full accessibility tree (AXTree)') with a clear purpose ('semantic screen-reader level inspection'). This distinguishes it from sibling wrave_get_dom_tree, which focuses on the raw DOM rather than the accessibility/semantic view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 semantic screen-reader level inspection' provides clear context for when this tool should be used. However, it does not explicitly name sibling alternatives such as wrave_get_dom_tree or wrave_get_snapshot, nor does it say when not to use it, so it falls just 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.
wrave_get_console_logsA
Retrieve intercepted console logs for the tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab |
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 reveals that logs are 'intercepted' (implying they are captured by the tool rather than read directly from the browser), but it does not disclose whether retrieval is read-only, whether it consumes or clears the logs, what log levels are included, or any limits. For a simple getter this is minimally sufficient, but more detail would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with zero wasted words. It front-loads the action and object, and the length is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no output schema), the description is adequate but not rich. It does not mention the return format (e.g., an array of log entries), what 'intercepted' specifically means, or any side effects. These gaps could lead an agent to under-specify its expectations, but they are not critical for basic 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?
The schema description coverage is 100%, with the only parameter 'tab_id' clearly described as 'The ID of the tab'. The description adds no additional meaning beyond the schema, but the baseline is 3 because the schema already fully documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and the resource 'intercepted console logs' scoped to a specific tab. It is distinct from all sibling tools, which deal with tab management, DOM, screenshots, or input actions, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 – one would call this when they need console logs from a tab – but it does not explicitly state when to use it versus alternatives, nor does it mention any prerequisites (e.g., that the tab must be open or that logs are only available after certain interactions). The sibling tools are sufficiently different, so the usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_get_cookiesC
Retrieve cookies for the tab or domain.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior, but it only says 'retrieve cookies.' It does not explain whether the operation is strictly read-only, what the return format is, what 'for the tab or domain' means, or how errors are handled. The phrase 'or domain' is not reflected in the input schema, adding ambiguity rather than clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is appropriately compact for a simple one-parameter tool, though the ambiguous 'or domain' phrasing keeps it from being a model of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-oriented tool, the description is minimally viable: the action and primary input are identifiable, and the schema covers the parameter. However, it lacks any mention of return value, behavior on invalid tab IDs, or the intended relationship between 'tab' and 'domain,' and there is no output schema to fill that 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 schema already documents tab_id with 100% coverage, so the baseline is 3, but the description's 'tab or domain' wording implies a domain-based input that does not exist in the schema. Rather than adding useful parameter semantics, it introduces a possible alternative that is unsupported.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('retrieve') and resource ('cookies'), and the target scope is at least partially clear ('for the tab or domain'). It is distinguishable from sibling tools like wrave_get_dom_tree and wrave_get_console_logs, though 'or domain' introduces some ambiguity about whether a domain can be supplied instead of a tab_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of sibling inspection tools such as wrave_get_tab_state, wrave_get_snapshot, or wrave_get_dom_tree. There are no stated exclusions or alternatives, so an agent must infer the appropriate context from the name and terse description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_get_dom_treeB
Extract clean, LLM-friendly DOM tree with bounding boxes [x, y, w, h] and interactive element metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Return full HTML if true | |
| tab_id | Yes | The ID of the tab | |
| max_depth | No | Max tree nesting depth |
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 burden of behavioral disclosure. It mentions 'clean, LLM-friendly' and the inclusion of bounding boxes and metadata, which hints at a processed output rather than raw HTML, but it does not explicitly state whether the operation is read-only, whether it can be resource-intensive, or any limitations (e.g., max_depth effects). The description adds some context beyond a bare 'get DOM tree' but omits critical safety and side-effect information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the core purpose and key output features. There is no redundant phrasing or filler. It efficiently conveys what the tool does and what to expect, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a solid summary of the return value ('clean, LLM-friendly DOM tree' with bounding boxes and interactive metadata), which is important since there is no output schema. However, it does not explain how the parameters (like max_depth or html) affect the result, nor does it mention any performance considerations or constraints. Given the simplicity of the tool and the schema coverage, this is reasonably complete but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all three parameters (tab_id, html, max_depth) are already documented in the schema with types, defaults, and short descriptions. The tool description does not add any additional parameter-specific meaning (e.g., how max_depth affects output or what 'html' toggles). Since the schema carries the load, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (extract), the resource (DOM tree), and adds specific distinguishing details: 'clean, LLM-friendly', 'bounding boxes [x, y, w, h]', and 'interactive element metadata'. This differentiates it from sibling tools like wrave_get_accessibility_tree (which focuses on accessibility) and wrave_get_snapshot (which may be a broader capture). The purpose is unambiguous and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as wrave_get_accessibility_tree or wrave_get_snapshot. The description only states what it does, not the conditions that would favor this tool over others. An agent must infer usage from the name and description alone, which is insufficient for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_get_snapshotA
Instant page snapshot with indexed interactive elements (@1, @2, etc.), title, and URL.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The word 'snapshot' implies a read-only operation, but this is not explicit. The description reveals what the snapshot contains (title, URL, indexed elements) but does not disclose whether the tab is modified, whether the snapshot is cached, or any other side effects. It adds some context about the return content but stops short of a safety declaration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. The key action ('Instant page snapshot') is front-loaded, followed by the specific contents (interactive elements, title, URL). Every word earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with no output schema, the description covers the essential return data (title, URL, indexed elements). It hints at the indexing scheme (@1, @2) which is useful for later interactions, but it does not explicitly state limitations (e.g., only interactive elements are returned) or prerequisites (e.g., tab must be active). Given the simplicity, the description is nearly complete, but a small gap remains regarding how the snapshot relates to other tools and any constraints on its 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?
The single parameter tab_id is fully described in the schema ('The ID of the tab'), and schema coverage is at 100%. The tool description adds no additional semantic detail about the parameter, so it does not exceed the baseline. An agent can correctly infer that tab_id must reference an existing tab, but the description offers no extra nuance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a page snapshot containing indexed interactive elements, title, and URL. It uses a specific verb ('get') and a specific resource ('snapshot'), and explicitly lists the content, which distinguishes it from siblings like get_dom_tree or take_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as wrave_get_dom_tree or wrave_get_accessibility_tree. The description does not mention exclusions or conditions that would steer an agent toward or away from this tool, leaving the decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_get_tab_stateB
Read the active tab state including title, URL, viewport dimensions, and scroll offset.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It says 'Read', which implies a non-destructive operation, but it does not explicitly state side effects, error behavior, or permissions. It also does not clarify what happens if the tab_id is invalid or whether the read is synchronous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It front-loads the verb 'Read' and lists the specific contents, making it immediately clear what the tool does. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description covers the main fields returned. However, it lacks guidance on when to use this tool relative to siblings and does not mention the return format or error handling. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning about the tab_id parameter, and the 'active tab' phrasing could conflict with the parameter's purpose. The agent gets no extra guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read) and resource (tab state) and enumerates specific fields (title, URL, viewport dimensions, scroll offset), which distinguishes it from sibling read tools like get_dom_tree or get_accessibility_tree. However, the phrase 'active tab' may mislead since the tool takes a tab_id, implying it can read any tab, not just the active one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when those fields are needed, but it does not explicitly state when to use this over alternatives like get_snapshot or get_dom_tree. No exclusions or alternative conditions are mentioned, so the agent must infer the appropriate context from the listed fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_list_tabsA
List all open tabs in Brave, including tab ID, URL, title, and active state.
| 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 of behavioral disclosure. It states what is returned but does not explicitly note that the operation is read-only or non-destructive, nor any limitations like window scope or ordering. For a simple list operation, this is acceptable but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant information. It states the action, target, and output fields efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameter-less list tool with no output schema, the description adequately identifies what the tool returns. It does not specify array format, ordering, or cross-window behavior, but these are minor for a simple enumeration. Overall, sufficient for an agent 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?
The tool has zero parameters, so the schema is entirely self-explanatory. The description adds meaning by enumerating the output fields, which is valuable though not required. Baseline 4 applies given the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'all open tabs in Brave', and specifies the exact fields returned (tab ID, URL, title, active state). This distinguishes it from sibling tools like wrave_get_tab_state (single tab) or wrave_focus_tab (action on a tab).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for enumerating tabs but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the many sibling tools. Context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_open_tabA
Open a new tab with the specified URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to open | |
| activate | No | Bring tab to foreground |
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 core action but does not mention side effects such as whether the new tab becomes active by default, whether an invalid URL causes an error, or whether any tab reference is returned. Some activation behavior is recoverable from the schema's 'activate' parameter, but the description itself is 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 a single, front-loaded sentence with no filler. Every word contributes to the meaning, and it is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a low-complexity tool with a fully documented schema, so the description plus schema are largely sufficient for correct invocation. It is slightly incomplete only because it does not describe activation behavior or return value, but no output schema exists and the parameter schema covers the main invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'url' and 'activate' documented. The description adds no extra parameter semantics beyond restating that a URL is opened, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Open a new tab with the specified URL.' The word 'new' distinguishes it from sibling tools like wrave_focus_tab, wrave_close_tab, and wrave_reload_tab, so an agent can clearly tell what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a new tab needs to be opened, but it gives no explicit guidance about when not to use it or when to prefer a sibling tool such as wrave_focus_tab for an existing tab. Usage context is clear but alternatives are not discussed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_press_keyB
Send a keyboard key press (e.g. Enter, Escape, Tab, Backspace).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key name (Enter, Tab, Escape, etc.) | |
| tab_id | Yes | The ID of the tab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure, but it only states the obvious action ('press a keyboard key') and gives examples. It does not reveal whether the key is sent to the focused element, whether keys are pressed and released, or what side effects or limitations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence contains the core operation and helpful examples. There is no filler or redundant detail, and the most important action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter action, the description is minimally viable: the operation and parameters are covered. However, because there are no annotations and no output schema, the description leaves the agent without context about required focus or what happens after the key press.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both `tab_id` and `key` adequately. The description adds a small amount of context by giving example key names, but does not go beyond the existing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Send') and resource ('a keyboard key press'), with concrete examples (Enter, Escape, Tab, Backspace). It does not explicitly contrast with sibling tools like wrave_type_text, but the focused wording makes the action distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as wrave_type_text or wrave_type_and_submit. There is no mention of prerequisites, context (e.g., focused element), or cases where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_print_to_pdfB
Export the current page as a PDF document.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of explaining behavior. It states the visible outcome (a PDF export of the current page), but it does not disclose whether the PDF is returned, saved, or downloaded, nor any side effects. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundancy. It communicates the core action and output format 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 one-parameter tool with no output schema, the description is mostly adequate, but it omits what the caller receives after invocation (e.g., PDF content, file path, or download trigger). Given no output schema exists, some statement about the return value would complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the only parameter, tab_id, with 'The ID of the tab', so schema coverage is 100%. The description adds no additional meaning about how the tab_id relates to the export, so it does not exceed the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Export') and resource ('the current page') and the output format ('PDF document'). It is clear and distinguishable from siblings like wrave_take_screenshot, though it does not explicitly name any sibling or contrast 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 guidance about when to choose this tool over alternatives, no mention of preconditions (e.g., a loaded page), and no exclusions. The agent is left to infer appropriate usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_reload_tabC
Reload the specified tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab to reload | |
| ignore_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 burden of behavioral disclosure. It only says 'Reload the specified tab' and does not mention that reloading may discard page state, that there might be waiting behavior, or how ignore_cache affects loading. Compared to the update_drive calibration, this is a similar gap for a mutating action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler, and the core action is front-loaded. However, it is perhaps too terse to serve as complete guidance, so it loses one point despite being well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser tab manipulation tool with no annotations and no output schema, the description should explain more than the obvious reload action. It omits the behavior of ignore_cache and any usage context, making it insufficient for an agent to confidently invoke the tool in all intended scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: tab_id has a description, but ignore_cache only has a type and default. The description merely restates the tab_id concept ('specified tab') and adds no meaning for ignore_cache, such as whether true bypasses cached resources. The description does not compensate for the undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Reload the specified tab.' This clearly identifies the action and target, and it is naturally distinct from the sibling tools like wrave_open_tab, wrave_close_tab, and wrave_focus_tab. No ambiguity remains about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 alternatives such as wrave_get_tab_state or wrave_open_tab. It does not mention scenarios like refreshing stale content, nor does it explain when ignore_cache should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_scroll_pageC
Scroll the active tab viewport by deltaX and deltaY.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | The ID of the tab | |
| delta_x | No | Horizontal scroll amount | |
| delta_y | No | Vertical scroll amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior on its own. It only states that scrolling happens by the given deltas, without covering whether changes are temporary, whether any permissions are needed, whether the tab must be active, or what the tool returns. This leaves notable behavioral gaps for a simple but observable browser action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler. It front-loads the action and resource, though the 'active tab' phrasing could have been omitted or clarified to avoid redundancy with the required tab_id.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 scroll operation with a fully described schema, the description covers the primary action. Still, it omits the active-tab ambiguity, what happens after the call (return value or lack thereof), and any context about whether the viewport belongs to the specified tab. These gaps keep it from being 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?
The input schema already has 100% coverage with descriptions for all parameters. The description repeats the delta names but adds no new semantic context (e.g., coordinate system, sign conventions, bounds). According to the baseline for high schema coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Scroll') and the resource ('active tab viewport'), and it names the two delta parameters. It is the only scroll tool among the siblings, so it differentiates itself naturally. However, the phrase 'active tab viewport' is slightly ambiguous because the schema requires a tab_id and does not explicitly say the tab must be active.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the many siblings, such as get_snapshot or execute_script as alternatives for programmatic scrolling. There is no mention of prerequisites like the tab being active or focused, and no exclusions or fallback suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_take_screenshotA
Capture a screenshot of the tab viewport or full page as base64 PNG/JPEG.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | png | |
| tab_id | Yes | The ID of the tab | |
| full_page | 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. The description mentions output format (base64 PNG/JPEG) and scope options (viewport or full page via full_page parameter), which adds value. However, it doesn't disclose potential side effects (e.g., does it affect the tab's state? Does it require the tab to be visible?), or the actual size/resolution of the screenshot. For a read-only capture tool, the lack of side-effect disclosure is less critical, but some behavioral context like 'returns a base64 string' is implicit in the description, so it's adequate but not 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?
The description is a single, efficient sentence that front-loads the core purpose and mentions key options. It has zero fluff, and every word earns its place. It clearly states the output format and scope options, which are critical for agent decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 relatively simple tool with three parameters awaits and no output schema, the description is mostly complete. However, it doesn't mention the tab_id parameter (though that's obvious from name), nor does it specify the return structure (just says base64 PNG/JPEG). It lacks details on error conditions (e.g., invalid tab_id) or the impact on the tab (e.g., does it scroll the page?). Given the tool's simplicity, a 3 is reasonable; it covers the essentials but leaves minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only tab_id has a description). The description names 'viewport or full page' which aligns with the full_page parameter, and 'PNG/JPEG' aligns with the format enum. This adds meaning beyond the bare schema. However, it doesn't explain the behavior of the format parameter (e.g., trade-offs) or the default behavior of full_page (false means viewport). Since the description partially compensates for the low coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Capture a screenshot of the tab viewport or full page as base64 PNG/JPEG.' It specifies the action (capture), the resource (tab viewport or full page), and the output format (base64 PNG/JPEG). This distinguishes it from siblings like wrave_list_tabs or wrave_get_dom_tree, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need a visual screenshot of the page), but it does not explicitly state when not to use it or mention alternatives. For example, it doesn't say 'use wrave_get_snapshot for text-based representation'. The context signals show a rich tool set, but the description alone doesn't guide the agent away from alternatives. So it's clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_type_and_submitB
Type text into an input or contenteditable field and submit with Enter key in 1 turn.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to type | |
| tab_id | Yes | The ID of the tab | |
| selector | Yes | CSS selector or @ref (e.g. @1, @2) of the input element | |
| submit_key | No | Key to send after typing (default Enter) | Enter |
| clear_first | No | Clear existing text before typing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavior. It adds the meaningful behavioral detail that this happens 'in 1 turn', suggesting the tool performs the action and returns without waiting for subsequent page settlement. However, it does not disclose default behaviors like not clearing existing text (clear_first defaults to false), or potential side effects of submitting (e.g., navigation, request sending), leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and its purpose. It is efficiently worded with no fluff or repetition. It does not include a usage snippet or clarifications, but for a simple tool the level of concision fits the high end of the range; a 5 would require more differentiation or usage guidance, which belongs 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 output schema and no annotation, this description is adequate for a straightforward type-and-submit operation: it names the target, the action, and the one-turn execution. Still, it leaves out what the agent should expect after submit (e.g., whether a new frame is available), and it does not mention that the field can be cleared if clear_first is set. These are moderate gaps, not severe ones.
Complex tools with many parameters or behaviors need more documentation. 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 covers all parameters with descriptions (100% coverage), so the description is not required to compensate. It does add that the selector applies to 'an input or contenteditable field', which slightly clarifies the target format, but it does not add enough to merit a higher score beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states exactly what the tool does: it types text into an input or contenteditable field and submits with Enter in one turn. The verb 'type' and resource 'input/contenteditable' are specific, and the 'in 1 turn' clause distinguishes this from separate type-and-press workflows, effectively separating it from siblings like wrave_type_text and wrave_press_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no exclusions, and no reference to alternatives. It does not explain when an agent should prefer this tool over typing then pressing Enter separately, or when to avoid it (e.g., when the field is not an input). The agent is left to infer its place among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrave_type_textC
Type text into an input or textarea.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text string to type | |
| tab_id | Yes | The ID of the tab | |
| selector | No | CSS selector of the input element | |
| clear_first | No | Clear existing text first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries the full burden of disclosing behavior. It only states that the tool types text; it does not say whether the element first needs focus, how existing text is handled when clear_first is false, whether events fire, or what happens on 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?
The description is a single sentence with no filler, and the key action and target are front-loaded. It is appropriately concise for a simple, well-schema-covered tool, though it does omit usage context that would make it more useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a clear core function and the schema covers parameters, but it lacks guidance on selecting between related tools and does not mention edge cases or limitations. Given the simplicity of the tool and the presence of overlapping siblings, the description is minimally acceptable but not 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?
The input schema already documents all four parameters with 100% description coverage. The description adds no extra semantic details beyond the broad action (typing into an input or textarea), which is acceptable and meets the baseline for well-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('Type text') and a clear target ('an input or textarea'), so an agent can immediately grasp the core function. It does not explicitly differentiate from the sibling 'wrave_type_and_submit', but the action and target are clear enough for a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like wrave_type_and_submit or wrave_press_key. The intended context must be inferred from the action being typed, which is insufficient when the sibling list contains overlapping input-related tools.
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.
21 tool updates
v1.2.1- First observed
wrave_click - First observed
wrave_click_and_read - First observed
wrave_close_tab - First observed
wrave_double_click - First observed
wrave_execute_script - First observed
wrave_focus_tab - First observed
wrave_get_accessibility_tree - First observed
wrave_get_console_logs - First observed
wrave_get_cookies - First observed
wrave_get_dom_tree - First observed
wrave_get_snapshot - First observed
wrave_get_tab_state - First observed
wrave_list_tabs - First observed
wrave_open_tab - First observed
wrave_press_key - First observed
wrave_print_to_pdf - First observed
wrave_reload_tab - First observed
wrave_scroll_page - First observed
wrave_take_screenshot - First observed
wrave_type_and_submit - First observed
wrave_type_text
TDQS
Scored across 21 tools
Most tools have clearly distinct purposes (tab management, content extraction, interaction, utilities). Some overlap exists between get_dom_tree, get_accessibility_tree, and get_snapshot, and compound tools like click_and_read combine actions but descriptions clarify their use.
All tools follow the consistent pattern 'wrave_' + verb + noun (e.g., list_tabs, close_tab, take_screenshot, execute_script). The naming is uniform and predictable, with no style mixing.
At 21 tools, the server is on the heavy side, but the scope (browser automation) justifies the breadth. It covers tab management, page inspection, interaction, and auxiliary functions without being excessive.
Core browser automation workflows are well covered: tabs (open, close, focus, reload), content extraction (DOM, AX, screenshot, snapshot), interaction (click, type, keys, scroll), and utilities (cookies, PDF, console). Minor gaps like hover, back/forward navigation, or wait-for-element are absent but not critical.
Maintenance
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Hyperbrowser MCP — wraps the Hyperbrowser AI-agent browsing API
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables direct browser control via Chrome DevTools Protocol, supporting navigation, interaction, content extraction, and screenshots through a single MCP tool.1354MIT
- FlicenseNot gradedqualityDmaintenanceEnables browser automation through the MCP protocol, allowing AI agents to control a real browser using accessibility snapshots and natural language commands.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to control a persistent local browser with live tabs, navigation, interaction, inspection, and state management through MCP.6-
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to drive a live Chrome or Brave browser over stdio, with tools for navigation, clicking, typing, screenshots, and executing automation goals.3MIT