kimi-webbridge-mcp
kimi-webbridge-mcp bridges the Kimi WebBridge daemon and browser extension to MCP clients, enabling real-browser automation using your existing logged-in profile — without exporting cookies.
Core Capabilities
Status & Connection
wb_status— Check if the WebBridge daemon and browser extension are connected and ready
Navigation
wb_navigate— Open or navigate to a URL (with optional new tab and tab group labeling)wb_go_back/wb_go_forward— Browser history navigationwb_reload— Reload the current page (with optional cache-bypass)
Tab Management
wb_list_tabs— List all tabs in the current session/groupwb_find_tab— Select/switch to a tab by URL (fuzzy match) or active focuswb_close_tab— Close the current session tabwb_close_session— Close all tabs in the session group
Page Reading & Inspection
wb_snapshot— Get the accessibility tree with element references (@erefs) for interactionwb_get_text— Extract visible page text (ideal for articles/content)wb_find— Search the accessibility tree by text, role, or reference
Interaction
wb_click— Click an element by@eref or CSS selector; auto-follows new tabs opened by the clickwb_fill— Clear and fill input fields, textareas, or contenteditable elementswb_press_key— Press a key or keyboard combo (e.g., Enter, Escape, Control+A)wb_scroll— Scroll the page or a specific element (supports direction, pixel delta, or scroll-into-view)
Scripting & Debugging
wb_evaluate— Execute arbitrary JavaScript in the page contextwb_network— Capture and inspect network requests (start/stop/list/detail)wb_console— Capture and inspect browser console logs and errors
Media & Files
wb_screenshot— Take a screenshot of the current tab or a specific element (JPEG by default, with auto-retry and size cap)wb_upload— Set files on a<input type=file>element using local filesystem paths
Full Profile Only (when WEBBRIDGE_TOOL_PROFILE=full)
wb_set_session— Set an explicit session for isolated browsing contextswb_dblclick— Double-click an elementwb_hover— Hover over an elementwb_fill_form— Fill a form with multiple fields at oncewb_cdp— Directly execute Chrome DevTools Protocol commandswb_save_as_pdf— Save the current page as a PDF
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., "@kimi-webbridge-mcpOpen my Gmail and show unread emails"
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.
kimi-webbridge-mcp
把 Kimi WebBridge(daemon + 浏览器扩展)接到 Agent,采用与 Claude in Chrome 相同的架构分层(不是去接入 Claude 产品):
层 | 本仓库 | 作用 |
Skill(薄) |
| 何时用、工作流、禁止 curl |
MCP |
| 真正执行: |
Grok Build(或其它 MCP 客户端)
├── Skill 路由 + 用法约定
└── MCP kimi-webbridge → :10086 daemon → 扩展 → 真实浏览器真实浏览器 profile / 登录态(不导出 Cookie)
默认 compact 28 个工具,full 32 个工具
WEBBRIDGE_TOOL_PROFILE=full开启 cdp / pdf / fill_form / set_session严格定位 + 自动等待 + 状态验证;支持 Shadow DOM、右键、拖拽、勾选和下拉选择
截图默认 JPEG quality 55,保留原文件并自动生成小图预览;操作结果区分
dispatched/verified
独立开源适配层,与 Moonshot / Kimi / xAI 无隶属关系。需自行安装官方 WebBridge。
前置条件
wb_status → MCP ensureDaemon(daemon 未跑则自动 start :10086)
→ ready=true 后再 wb_navigate / 业务工具排障也可手动:
& "$env:USERPROFILE\.kimi-webbridge\bin\kimi-webbridge.exe" start
& "$env:USERPROFILE\.kimi-webbridge\bin\kimi-webbridge.exe" status详见 Skill skills/kimi-webbridge/SKILL.md §0。
Related MCP server: kilo-computer-use
安装(MCP + Skill)
git clone https://github.com/Nimm0ny/kimi-webbridge-mcp.git
cd kimi-webbridge-mcp
npm install
npm run doctorGrok Build
MCP — ~/.grok/config.toml(路径改成你的 clone):
[mcp_servers.kimi-webbridge]
command = "node"
args = ["D:\\path\\to\\kimi-webbridge-mcp\\src\\index.js"]
enabled = true
startup_timeout_sec = 15
tool_timeout_sec = 180
[mcp_servers.kimi-webbridge.env]
WEBBRIDGE_TOOL_PROFILE = "compact"
Skill(薄 playbook):
Copy-Item -Recurse -Force skills\kimi-webbridge "$env:USERPROFILE\.grok\skills\kimi-webbridge"验证:
grok mcp doctor kimi-webbridge
# 或
npm run doctor
# wb_status 应显示 tool_profile=compact 与 tool_count=28工具摘要
Compact(默认)
wb_status · wb_navigate · wb_go_back · wb_go_forward · wb_reload · wb_list_tabs · wb_find_tab · wb_close_tab · wb_close_session · wb_snapshot · wb_get_text · wb_find · wb_wait · wb_click · wb_fill · wb_press_key · wb_scroll · wb_evaluate · wb_screenshot · wb_network · wb_console · wb_upload · wb_hover · wb_dblclick · wb_type · wb_select · wb_check · wb_drag
Full only
wb_set_session · wb_fill_form · wb_cdp · wb_save_as_pdf
精确数量以 npm run smoke / wb_status.tool_count 为准(由 src/tool-profile.js 单一源计算)。
环境变量
变量 | 默认 | 含义 |
|
| daemon(仅允许 localhost) |
|
| 默认 session |
|
| 单次 command 超时 |
|
|
|
| 已废弃 | 自动借用当前标签已移除;只跟随有明确 opener 关系的新标签 |
|
| 截图单次尝试超时 |
|
| 图片嵌入上限;超限截图生成 JPEG 预览并标注原始/预览尺寸 |
|
| status 缓存 TTL |
与 chrome-devtools-mcp
本项目 | chrome-devtools | |
浏览器 | 日常 profile | 常为独立实例 |
登录态 | 复用 | 另配 |
角色 | 真实站点操作 | 性能 / 干净环境 |
开发
npm start # MCP stdio (compact)
npm run doctor # daemon + extension + profile + tool count
npm run smoke # list-only compact tools
# full list-only:
# PowerShell: $env:WEBBRIDGE_TOOL_PROFILE='full'; npm run smoke
npm test # 独立无头 Chrome 回归测试 + 单元测试
npm run smoke:e2e # 真实 MCP → daemon → 扩展,本地 fixture,自动清理专用测试 session安全
只连本机
:10086(非 localhost 的WEBBRIDGE_URL会被拒绝)Agent 可操作已登录站点;勿在不受信任务中启用
compact 含
wb_evaluate(页面 JS,可触及页面可见状态;勿用于窃取密钥)full 含
wb_cdp:权限更大,仅在需要时开启登录 / 验证码 / 扫码:在真实浏览器由用户完成,不要把密码写进对话
License
MIT
1.3 操作契约与示例
旧的 selector 参数仍可用;也可以传 target(两者只能选一个):
{
"target": { "role": "button", "name": "保存", "exact": true, "within": "#profile-dialog" },
"followNewTab": false,
"expect": { "text": "保存成功" },
"timeoutMs": 10000
}定位:CSS、常见 role/name、within 容器支持打开的 Shadow DOM。匹配多个节点时返回 ambiguous_target 和候选;名称解析覆盖 aria-labelledby / aria-label / label,但不是完整 ARIA 算法。
引用:wb_snapshot / wb_find 返回 snapshotId。推荐 target={ref:"@e1",snapshotId:"…"};引用绑定实际 DOM 节点,脱离文档/导航后失效。裸 @e 使用该 session 最近一次快照。重复名称或不支持的角色可能无法绑定,改用带范围的 CSS。
等待:输入前检查唯一性、可见性、可用性、位置稳定和遮挡;wb_wait 默认 visible,可选 hidden/attached/detached/enabled,多条件使用 AND。
输入方式:click/check/dblclick 的 inputMode=auto(默认)在可见标签使用 CDP,后台标签使用 DOM。返回 mode 明确说明真实执行方式。inputMode=cdp 不会自动退回 DOM;后台标签返回 tab_not_visible。DOM 事件不是可信输入。右键/中键和 pointer drag 需要可见标签。
验证:fill/check/select 自动读回状态;click/hover/dblclick/drag 可传 expect(text/selector/url/state)。verified=false 只表示已发送动作。timeoutMs 控制单次操作阶段,expect 和 followTimeoutMs 是后续独立阶段;HTTP 超时返回 outcome_unknown,禁止直接重试提交。
滚动:selector 表示滚入视野;container 表示对指定 CSS 容器滚动;默认滚动 document.scrollingElement。滚轮兜底无法确认虚拟列表移动时返回 moved=null、verified=false。
标签:wb_find_tab 支持 tabId → 唯一 URL 的兼容选择和严格 URL 校验;上游仍按 URL 选择,重复 URL 明确拒绝。同域不同路径若被桥接选错,返回 tab_selection_mismatch,绝不导航覆盖页面。
新标签:只自动跟随唯一且 openerTabId 对得上的新增标签。当前桥接若不提供 openerTabId,返回候选让 Agent 显式选择,不猜最后一个标签。
并发:同一 MCP 进程内完整工具操作串行,避免 session 切换与输入交错。不同 MCP 进程及用户手动操作不受该队列保护。
批量表单:遇到第一个失败即停止,报告 completed/failed 的 results 和 skipped 数量;不会自动回滚已填字段。
截图:保留用户请求的 PNG/JPEG 文件格式,返回 MCP image。大图预览可转 JPEG;preview 字段给出尺寸。截图重试总预算默认 60 秒,前置连接启动和本地预览编码可能另耗时间。
能力边界
wb_status.capabilities 区分 MCP 已实现能力和桥接依赖。本版未实现跨域 iframe 路由、闭合 Shadow DOM、浏览器窗口管理、下载事件订阅、原生按 tabId 路由或截图坐标输入。wb_drag 是 CDP 指针拖拽,不模拟 HTML5 DataTransfer。上述能力需要后续扩展/daemon 协议工作,不能只增加工具名。
回归测试
npm test 默认使用已安装的 Chrome 启动独立无头实例,不读取日常 profile。可设置 WB_TEST_BROWSER=msedge 使用 Edge;只跑不依赖浏览器的测试可用 npm run test:unit。无浏览器的 CI 可先运行 npx playwright install chromium,并设置 WB_TEST_BROWSER=chromium。
npm run smoke:e2e 在 127.0.0.1 临时提供 fixtures/actions.html,经 MCP stdio 调用真实桥接。任何 isError、验证失败或缺失图片内容块都会使测试失败。每次使用唯一 session,finally 关闭它并停止临时服务器。
本机验证:daemon v1.11.5 / extension 2.0.1 报版本不一致,但上述表单、后台 DOM 点击和图片回传链路通过;这不代表所有上游能力都兼容。可信双击/指针拖拽由独立可见页面的无头浏览器测试覆盖。
Available Tools
22 toolswb_clickA
Click an element (@e ref preferred, or CSS). By default, if the click opens a new session tab, switches current tab to it (Bilibili 动态/收藏 style).
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) | |
| selector | Yes | @e ref e.g. @e12 or CSS selector | |
| followNewTab | No | Follow newly opened session tab after click (default true) |
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 discloses a non-obvious behavior: automatic switching to newly opened tabs after click. It also highlights the followNewTab default. Missing details like wait behavior or error handling, but the main side effect is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action, includes selector guidance, and explains the default tab behavior. Every word 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 simple click tool with fully described parameters and no output schema, the description covers the primary behavior and the main side effect (tab switching). It doesn't explain return values, but that is unlikely to be critical for a click action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by indicating that @e refs are preferred over CSS selectors, and reiterates the default tab-following behavior which complements the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Click an element') with specific resource and selector preference. It distinguishes itself from siblings like wb_fill or wb_press_key by focusing on element clicking, and provides useful context about tab behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on how to use the tool ('@e ref preferred, or CSS') and the default tab-following behavior. It implicitly indicates when to use (for clicking elements) without explicit alternatives, but the context is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_close_sessionA
Close ALL tabs in the session/group. Only when the user asks to clear agent tabs.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) |
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 clearly states the destructive scope ('Close ALL tabs') and adds a safety guard ('Only when the user asks to clear agent tabs'). It could be more explicit about irreversibility or side effects, but the main behavior is 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 two short sentences, each earning its place. The first sentence states the action, and the second provides the usage context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description provides enough context. It clarifies the action, scope, and when to use it. The session parameter is documented in the schema. It does not explain what 'session/group' means, but that is a minor 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 covers 100% of the parameters, with the session parameter already described in the input schema. The description does not add any additional parameter semantics, so the baseline of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Close ALL tabs in the session/group.' The qualifier 'Only when the user asks to clear agent tabs' further narrows the purpose and clearly distinguishes it from sibling tools like wb_close_tab, which presumably closes a single tab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Only when the user asks to clear agent tabs,' which gives a clear condition for when to use this tool. It does not explicitly name the alternative for closing a single tab, but the contrast with wb_close_tab is implied. This is stronger than simply implying usage but lacks a direct mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_close_tabB
Close the current tab in the session.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) |
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. While 'Close the current tab' indicates a destructive action, it does not mention irreversibility, potential loss of unsaved work, behavior when closing the last tab, or which tab becomes active afterward. This is insufficient for a mutation 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?
The description is a single, focused sentence with no unnecessary words. It is front-loaded with the core action and easily parsed by 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?
Given this is a destructive action with no annotations and no output schema, the description should explain consequences and side effects to be contextually complete. It only states the action, omitting important details like tab closure behavior, session implications, or error conditions. This is a clear gap for a tool that removes a resource.
Complex tools with many parameters or behaviors need more documentation. 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 fully documents the single 'session' parameter with a clear description ('Per-call session override (does not change the process default)'), so schema coverage is 100%. The description adds no extra meaning beyond this, but none is needed because the schema already covers the parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Close the current tab') and the resource ('in the session'), which precisely differentiates it from sibling tools like wb_close_session (closes session) and wb_go_back (navigation). This is a specific verb+resource pairing that leaves no 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?
The description offers no guidance on when to use this tool versus alternatives. It simply states the action without providing context, prerequisites, or exclusions. An agent is left to infer usage from the name alone, with no explicit comparison to siblings like wb_close_session or wb_list_tabs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_consoleA
Capture page console / errors (Claude-style). cmd: start (install interceptor) | list | clear | stop.
| Name | Required | Description | Default |
|---|---|---|---|
| cmd | Yes | start before actions you want to observe | |
| session | No | Per-call session override (does not change the process default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the burden of behavioral disclosure. It mentions 'install interceptor' for start, but does not explain side effects, persistence, or what 'list' returns. The behavior is partially transparent but missing notable details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise line with all commands, front-loaded with purpose and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, 1 enum), the description covers all subcommands and core purpose. Lacks explicit output format details, but not critical for this narrow 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 100%, with clear enum for cmd and session override meaning. The description adds only minor context ('install interceptor') and does not need to compensate for schema 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 the tool captures page console/errors and lists specific subcommands (start/list/clear/stop), clearly distinguishing it from sibling navigation and interaction tools. The verb 'capture' and resource 'page console/errors' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Schema adds 'start before actions you want to observe', giving timing guidance. No explicit alternatives or exclusions are mentioned, but the overall context is sufficient for an agent to infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_evaluateB
Run JavaScript in the page. Prefer compact JSON.stringify returns. Wrap multi-call state in an IIFE.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| session | No | Per-call session override (does not change the process default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It reveals preferred return style and state management through IIFE, but does not disclose execution context, side effects on the page, error handling, or permissions required. This is a significant gap for a 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?
The description is extremely concise, front-loading the core purpose in the first sentence. The two additional tips are specific and actionable, with no fluff or wasted words. It is appropriately sized for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 powerful code execution tool with no output schema and sparse annotations. The description covers basic usage tips but omits crucial context such as return value format, error behavior, execution environment, and whether results are captured. Given the tool's power, the description is incomplete for an agent to use it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (session is described, code is not). The description adds no direct explanation of the 'code' parameter beyond 'run JavaScript,' and the session parameter is already explained in the schema. The guidance about returns and IIFE does not clarify parameter meanings or syntax.
Input schemas describe structure but not intent. Descriptions should explain 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 'Run JavaScript in the page,' using a specific verb and resource. This distinguishes it from sibling browser automation tools like navigate, click, and fill, which perform different actions. 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?
The description provides no guidance on when to use this tool over alternatives, nor does it mention exclusions or prerequisites. It offers coding tips (compact JSON.stringify, IIFE) but no context on selecting this tool versus another. Sibling tools are not referenced for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_fillA
Clear-and-fill input/textarea/contenteditable. selector = @e or CSS.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Text to insert (replaces existing) | |
| session | No | Per-call session override (does not change the process default) | |
| selector | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior of clearing existing content before filling, which is important for a mutation tool. It also explains the selector format ('@e or CSS'), which is useful. However, it doesn't mention potential side effects like triggering input events or requiring element visibility, and there are no annotations to fall back on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded. Two short sentences communicate the main action and the crucial selector syntax without any unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fill tool, the description provides essential information but lacks details about return values, error conditions, or timing. It also doesn't mention the 'session' parameter. With no output schema and no annotations, the description is adequate for basic use but not fully complete for an agent making decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 'value' with a description and 'selector' with minLength, but not the 'session' parameter. The description adds meaning to 'selector' by specifying '@e' or CSS, which is beyond the schema. However, it doesn't explain 'session', and with 67% schema coverage, the description only partially compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Clear-and-fill' and the target resources 'input/textarea/contenteditable'. It distinguishes from sibling tools like wb_click or wb_get_text by focusing on filling form elements. However, it doesn't explicitly differentiate itself from similar tools like wb_upload or wb_press_key, so it's not a full 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 implies usage for filling input fields but does not provide explicit when-to-use guidance or alternatives. There's no mention of when not to use this tool (e.g., for file uploads) or which sibling tool might be more appropriate for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_findA
Search the accessibility tree by text/role (like Claude find). Returns matching @e refs when present.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Exact role filter e.g. link, button, textbox | |
| limit | No | Max matches (default 20) | |
| query | No | Case-insensitive substring against name/role/ref | |
| session | No | Per-call session override (does not change the process default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of disclosing behavioral traits. It states that the tool 'Search[es]' and returns '@e refs when present', but it does not disclose whether it is read-only, what happens when there are no matches, whether it depends on a session, or any side effects. Since annotations are absent, this is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant information. Each clause adds value: the first states the action and scope, and the second clarifies the output. The 'like Claude find' analogy is optional but not harmful. It is correctly sized for a simple search 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?
Given the tool's relative simplicity and 100% schema coverage, the description is mostly adequate. However, the absence of an output schema and minimal behavioral disclosure leaves some ambiguity around return format and usage context (e.g., relationship between query and role, when to prefer this over wb_snapshot). The description covers the core purpose but lacks richer contextual guidance.
Complex tools with many parameters or behaviors need more documentation. 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 descriptions for all four parameters (role, limit, query, session), giving 100% schema description coverage. The description adds the notion of searching by 'text/role' and returning '@e refs', but it does not meaningfully expand on the parameter semantics already captured in the schema, so 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 a specific verb ('Search') and resource ('accessibility tree') with the method ('by text/role'), and distinguishes itself by noting it returns '@e refs', which is not mentioned for sibling tools like wb_snapshot or wb_find_tab. The analogy to 'Claude find' reinforces the intended purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching an accessibility tree, but it does not provide explicit guidance on when to use this tool versus siblings like wb_find_tab or wb_snapshot, nor does it mention exclusions or prerequisites (e.g., whether a session must be active). The 'like Claude find' analogy hints at context but does not give concrete usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_find_tabA
Select a tab as current. URL match is fuzzy within the session (trailing slash/query tolerant). active:true borrows the focused session tab when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL of a session-owned tab (exact or fuzzy) | |
| active | No | Prefer the active/focused tab in this session | |
| session | No | Per-call session override (does not change the process default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It adds useful behavioral details (fuzzy URL match with trailing slash/query tolerance, active:true borrowing the focused tab), which are valuable. However, it does not disclose what happens when no tab matches, whether errors are thrown, or the side effect of changing the current tab (a mutation), which are important for safe use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, yet it packs essential information: the primary action, the fuzzy matching tolerance, and the active:true behavior. Every sentence earns its place, and it is front-loaded with the core purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and relatively simple behavior, the description covers the main functionality. However, it omits return value details and error cases (e.g., what if no tab matches? does it throw? returns null?). It also doesn't clarify whether selecting a tab has any other side effects beyond changing the active tab. A bit more detail would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful context beyond the schema: it explains what 'fuzzy' means (trailing slash/query tolerant) and clarifies the active:true behavior ('borrows the focused session tab when possible'). This enhances parameter understanding beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Select a tab as current') and resource (tab), and the fuzzy URL matching distinguishes it from listing tools like wb_list_tabs. However, 'Select a tab as current' is slightly terse and could be more explicit that it makes the tab the active/current one, rather than merely finding it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 switching the active tab by URL or active flag, and it provides context about fuzzy matching and active:true behavior. However, it does not explicitly state when to use this tool versus alternatives (e.g., wb_list_tabs for listing, wb_navigate for navigation), nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_get_textA
Extract visible page text (like Claude get_page_text). Better than full snapshot for articles.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) | |
| maxChars | No | Max characters (default 50000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses a key behavior ('visible page text') and references a familiar tool for behavioral grounding, but does not mention potential side effects, return format, or limitations (e.g., dynamic content, maxChars). This is minimal but not 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 exceptionally concise: two short sentences. Each sentence adds value—the first defines the action, the second provides a comparative usage hint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no required parameters and no output schema, so the description is mostly sufficient. However, it does not explicitly state what the return value looks like (e.g., plain text string) or any edge-case behaviors, leaving some ambiguity for an agent. This is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('session' and 'maxChars') already documented in the schema. The description adds no extra parameter semantics, 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 resource ('visible page text'), making the tool's function immediately obvious. It explicitly contrasts with 'full snapshot' and references 'Claude get_page_text', which distinguishes it from sibling tools like wb_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: it is better than a full snapshot for articles, implying use when text content is needed rather than page structure. While it does not explicitly state when NOT to use it or list alternative tools beyond snapshot, the comparison gives a strong hint of appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_go_backB
Browser history back (Claude-in-Chrome style navigation helper).
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) |
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 simply says 'Browser history back' without explaining side effects, limitations (e.g., behavior when history is empty), session handling, 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?
The description is a single sentence that is front-loaded with the core function 'Browser history back'. It is concise and contains no unnecessary words, earning a high score for 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?
The tool is simple and the description captures the basic function, but it lacks context about edge cases, return values, or how the 'session' parameter influences behavior. Given there is no output schema and no annotations, the description is minimally adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameter descriptions, including the optional 'session' parameter. The description adds no additional meaning about parameters, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Browser history back', which is a specific verb and resource. It distinguishes itself from sibling tools like wb_go_forward and wb_navigate by specifying the direction of history navigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as wb_go_forward or wb_navigate. It only mentions 'Claude-in-Chrome style navigation helper', which is vague and does not clarify selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_go_forwardC
Browser history forward.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) |
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 restates the tool name without adding any context such as effects on the page, session, or failure conditions (e.g., no forward history available).
Agents need to know what a tool does to the 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 short fragment, but it is under-specified rather than effectively concise. It does not provide enough content to justify its existence beyond the tool name, and the lack of a complete sentence reduces 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 simple navigation tool with no output schema and minimal annotations, the description is incomplete. It does not mention any prerequisites, side effects, or error conditions, leaving the agent without enough context to anticipate behavior in different situations.
Complex tools with many parameters or behaviors need more documentation. 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 describes the only parameter 'session' with 100% coverage, including its behavior as a per-call override. The description adds no parameter details, but since the schema fully documents it, 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 phrase 'Browser history forward' clearly indicates the tool advances through the browser's navigation history. It implicitly distinguishes itself from the sibling 'wb_go_back' by specifying the forward direction, though it lacks a full verb phrase like 'Navigate forward'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. It does not mention that it should be used after a backward navigation or how it relates to wb_go_back, leaving the agent to infer usage 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.
wb_list_tabsA
List tabs belonging to the current session (tab group).
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the action ('List tabs') without any details about return format, whether it's a read-only operation, error conditions, or session handling. This lack of behavioral information makes the tool's behavior opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the primary action ('List tabs'). It contains no filler, redundant details, or unnecessary categorization. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but without an output schema, the description should clarify what the list contains (e.g., tab IDs, titles, URLs). It also doesn't mention any session-related behavior beyond the scope. The description is sufficient for a minimal understanding but lacks detail about the return value and session 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 coverage is 100% since the only parameter 'session' has a clear description ('Per-call session override'). The tool description adds no parameter-specific information, but the schema already provides sufficient meaning. Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List tabs belonging to the current session (tab group).' The verb 'List' and resource 'tabs' are specific, and the scope ('current session') is explicit. This distinguishes it from sibling tools like wb_find_tab or wb_close_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 use when you need to enumerate tabs, but it does not explicitly state when to use this tool versus alternatives like wb_find_tab, nor does it mention any preconditions or exclusions. Usage context is only implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_networkB
Capture/list network requests. cmd: start | stop | list | detail.
| Name | Required | Description | Default |
|---|---|---|---|
| cmd | Yes | ||
| filter | No | ||
| session | No | Per-call session override (does not change the process default) | |
| requestId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure responsibility. It only enumerates the cmd values (start|stop|list|detail) but does not explain stateful behavior, such as whether start clears previous captures, how list returns data, or what detail requires. This is insufficient for a tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of one sentence plus the cmd enumeration. Every word is informative, and the structure is front-loaded with the tool's purpose before listing subcommands. This 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?
With no output schema, no annotations, and only 25% parameter coverage, the description should provide more context about return values, state management, and parameters. It does not explain what list or detail outputs look like, how filter interacts with commands, or what session overrides imply. This is incomplete for a stateful capture 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 low (25% only for session), and the description does not compensate. It repeats the cmd enum values already present in the schema but adds no explanation for filter or requestId parameters. The description adds no new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Capture/list network requests' uses a specific verb and resource, clearly indicating the tool's function. It distinguishes itself from sibling tools, none of which deal with network traffic, and lists subcommands (start|stop|list|detail) that further clarify the intended actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives or when to prefer one subcommand over another. The purpose statement implies it is for network request capture, but there is no context about typical scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_press_keyC
Press a key or combo on the focused element (e.g. Enter, Escape, Tab, Control+A). Like Claude press_key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key or combo: Enter, Escape, Tab, ArrowDown, Control+A, Meta+C, ... | |
| session | No | Per-call session override (does not change the process default) |
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 does not mention what happens if no element is focused, whether the key press triggers navigation or events, or any side effects. The comparison to Claude press_key is vague and doesn't reveal concrete behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the action ('Press a key or combo'). The reference to 'Like Claude press_key' is short but may be unnecessary for an agent unfamiliar with Claude. Overall, it is efficient with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple 2-parameter schema, the description is too sparse. It does not explain expected return values, errors (e.g., no focused element), or how the 'session' parameter affects behavior. The tool is simple, but the description lacks context needed for reliable 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 100%, and the schema already documents both 'key' and 'session' with examples. The description adds the phrase 'on the focused element' but does not provide additional semantics beyond schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool presses a key or combo on the focused element, with specific examples (Enter, Escape, Tab, Control+A). This distinguishes it from sibling tools like wb_click or wb_fill, but the reference 'Like Claude press_key' is slightly ambiguous and doesn't explicitly differentiate from all 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 explicit guidance on when to use this tool versus alternatives. The phrase 'on the focused element' implies it is for keyboard interactions, but there is no mention of prerequisites, exclusions, or when to prefer wb_click or wb_fill. The 'Like Claude press_key' comparison is not a practical usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_reloadA
Reload the current page. hard:true bypasses cache when CDP allows.
| Name | Required | Description | Default |
|---|---|---|---|
| hard | No | Hard reload ignore cache (default false) | |
| session | No | Per-call session override (does not change the process default) |
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 does add value by noting 'hard:true bypasses cache when CDP allows,' which reveals a caching nuance and a potential limitation. However, it does not mention side effects such as losing unsaved page state or whether the tool waits for the reload to 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?
The description is concise, with exactly two short sentences that immediately state the action and then explain the key option. It avoids redundancy with the schema and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reload tool with two optional parameters and no output schema, the description is mostly sufficient. It covers the core purpose and the notable hard-reload behavior. Minor gaps include not describing return behavior or what happens if the current page is in an unloadable state, but these are not critical for selecting this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters (hard, session) with 100% coverage, so the baseline is 3. The description adds meaningful context by clarifying that 'hard:true' bypasses cache only 'when CDP allows,' which qualifies the parameter's effect beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Reload the current page.' This distinguishes it from sibling navigation tools like wb_go_back, wb_go_forward, and wb_navigate, which involve changing the page rather than refreshing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a page reload is needed, but it does not explicitly state when to prefer this over alternatives or provide exclusion criteria. The phrase 'current page' gives context, but no direct 'use this instead of X' guidance is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_screenshotA
Screenshot current tab (or selector). Default format=jpeg for reliability; auto-retries smaller jpeg on timeout. Returns path; embeds image when under size cap. Errors include problem+hint.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| format | No | Default jpeg (faster/more reliable than png) | |
| quality | No | JPEG quality; default 55 | |
| session | No | Per-call session override (does not change the process default) | |
| selector | No | Optional @e/CSS crop — use for large pages |
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 explicitly mentions the reliability-motivated default format, auto-retry with smaller jpeg on timeout, path return, image embedding under a size cap, and error format including problem and hint. This is strong transparency for a screenshot tool, though it does not cover potential side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each with a distinct purpose: purpose, format default/retries, return behavior, and error format. No filler or repetition. The most important information (what it does) is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 optional parameters and no output schema, the description covers the key runtime behaviors: return value (path), embedding, retries, and error structure. However, it lacks any description of what the 'path' parameter does as an input, and does not mention potential side effects or restrictions. Overall, it is reasonably complete for a screenshot utility.
Complex tools with many parameters or behaviors need more documentation. Simple 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 80% (format, quality, session, selector have descriptions), so the baseline is 3. The description adds context about format reliability and retries, but it does not explain the 'path' parameter, which remains ambiguous (input destination vs. output path). The description fails to fully compensate for the 20% gap in schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Screenshot current tab (or selector).' It immediately distinguishes the tool's purpose from siblings like wb_get_text or wb_navigate, and the mention of selector adds a specific capability. The behavior described (format, retries, embedding) reinforces a unique identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instead of siblings such as wb_snapshot or wb_get_text. It does not mention exclusions or alternative tools, leaving the agent to infer usage solely from the purpose statement. The 'use for large pages' hint appears only in the schema's selector parameter, not in the main description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_scrollA
Scroll page or element into view. direction: up|down|left|right, or x/y deltas, or selector/@e into view.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Horizontal scrollBy delta | |
| y | No | Vertical scrollBy delta | |
| amount | No | Pixels for direction scroll (default 600) | |
| session | No | Per-call session override (does not change the process default) | |
| selector | No | @e ref or CSS to scrollIntoView | |
| direction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the sole source of behavioral disclosure. It explains that scrolling can target the document or an element and supports relative deltas, but it omits details such as whether x/y are relative, what happens when multiple modes are combined, and the return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the action and then lists all parameter modes without filler. Every phase maps directly to schema properties.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 non-destructive, multi-mode scroll tool with no output schema, the description covers the main interaction modes and the schema fills in parameter details. However, it lacks explicit guidance on parameter exclusivity and behavior when no parameters are supplied, which keeps it just below a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), but the description adds semantic grouping: direction vs x/y deltas vs selector/@e. This helps the agent understand which parameter mode to choose, beyond the raw schema properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses the specific verb 'Scroll' with a clear target ('page or element') and enumerates three invocation modes (direction, x/y deltas, selector/@e). This clearly distinguishes it from sibling navigation, tab, and click tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first sentence states the core use case and the 'or' chain clarifies mode selection. While it doesn't explicitly name alternative tools, no sibling offers scrolling functionality, so the usage context is clear without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_snapshotA
Accessibility tree with @e refs (like Claude read_page). Prefer before click/fill.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Per-call session override (does not change the process default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the sole behavioral source. It implies a non-destructive read operation via 'snapshot' and 'prefer before click/fill', but it does not explicitly state side effects, permissions, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core definition and immediately follows with a practical usage directive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 of this simplicity, the description covers purpose and usage context well. It does not explicitly state that the operation is read-only or describe return formatting, but the schema and the phrase 'accessibility tree' provide enough context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'session', is fully documented in the input schema with 100% coverage. The description adds no additional nuance about this parameter, but the schema already provides sufficient meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's output as an accessibility tree with element references, and it distinguishes itself from sibling navigation/action tools. It lacks an explicit verb like 'get' or 'retrieve', but 'snapshot' combined with 'accessibility tree' makes the purpose apparent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instruction 'Prefer before click/fill' provides a clear context for when to use this tool. It does not explicitly mention alternatives or exclusions, but the stated preference is strong situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_statusA
Check WebBridge daemon + browser extension connection. Call first if unsure whether the bridge is ready.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. The verb 'Check' and the phrase 'call first if unsure' imply a safe, read-only status operation. It does not elaborate on return format or error behavior, but for a simple status check this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states what the tool does, the second gives usage guidance. Every word earns its place, and information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status check with no output schema and no annotations, the description fully covers purpose and usage. It specifies what is checked (daemon + extension) and when to call it (first if unsure). No relevant gaps exist.
Complex tools with many parameters or behaviors need more documentation. 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 parameter semantics are trivially satisfied. The description doesn't need to explain params, and the empty input schema confirms this. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check WebBridge daemon + browser extension connection,' with a specific verb and resource. It distinguishes itself from sibling tools by being the only readiness check tool among action-oriented wb_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The guidance 'Call first if unsure whether the bridge is ready' is explicit and direct, telling exactly when to invoke this tool. This is strong usage guidance, equivalent to naming alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_uploadA
Set files on a file input element. files must be absolute local filesystem paths (not http/data URLs). Page must already show .
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Absolute local filesystem paths only | |
| session | No | Per-call session override (does not change the process default) | |
| 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 burden. It discloses path format restrictions and the requirement that the input element already be present. However, it doesn't mention what happens if the selector doesn't match, whether change/input events are fired, or error behavior—leaving some transparency 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?
Two sentences, front-loaded with the verb and resource, and every sentence adds essential information. No fluff 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?
Given the tool's simplicity and no output schema, the description covers key constraints (path format and page condition) and the input schema defines required parameters. It's reasonably complete for a straightforward file upload tool, though it could explain error handling or interaction with dynamic pages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 67% with descriptions for files and session, but selector lacks description. The description adds meaning beyond the schema by clarifying that files must be absolute local paths, not URLs, and that the page must already have the input element (which informs how selector should be used). This adds concrete value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set files on a file input element') and specifies the resource type. It distinguishes itself from sibling tools like wb_fill and wb_click by focusing exclusively on file inputs, and immediately adds critical constraints (absolute local paths, existing input 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?
Provides explicit conditions for use: files must be absolute local paths (not http/data URLs) and the page must already show an <input type=file>. This gives clear context and prerequisites. It doesn't explicitly name alternatives, but the constraints and sibling list imply that this is the file-specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wb_waitA
Wait until text appears, CSS selector matches, or document is ready (timeout).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Substring to wait for in document.body.innerText | |
| session | No | Per-call session override (does not change the process default) | |
| selector | No | CSS selector to wait for | |
| timeoutMs | No | Timeout ms (default 15000) | |
| intervalMs | No | Poll interval ms (default 400) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It discloses the timeout aspect but does not clarify what happens on timeout (e.g., error thrown, boolean returned, or null) nor whether the tool waits for all conditions simultaneously or any one of them. This leaves important behavioral details ambiguous.
Agents need to know what a tool does to the 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 directly conveys the tool's purpose and key conditions. There is no redundancy or filler, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple wait tool with no output schema, the description covers the main behaviors (wait conditions and timeout). The only gap is the lack of detail on timeout behavior and the somewhat ambiguous 'document is ready' phrase, but overall it is sufficient for this tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning every parameter already has a description in the schema. The tool description adds no extra semantics beyond mentioning 'text', 'CSS selector', and 'timeout', which are already covered by the schema's parameter descriptions. Thus, the description does not add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('wait') and lists three concrete conditions (text appears, CSS selector matches, document is ready) along with a timeout. This distinguishes it from siblings like wb_navigate or wb_click, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: to wait for text, selector, or document readiness. It does not explicitly mention alternatives or when not to use it, but the conditions are self-explanatory and typical for synchronization, making the usage almost self-evident.
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.
27 tool updates
v1.2.1- Removed
wb_cdp - Changed
wb_click2 fields changed- added
Input schema / properties / followNewTabAdded value: +{ + "description": "Follow newly opened session tab after click (default true)", + "type": "boolean" +} - changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_close_session1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_close_tab1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_console1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Removed
wb_dblclick - Changed
wb_evaluate1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_fill1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Removed
wb_fill_form - Changed
wb_find1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_find_tab3 fields changed- changed
Input schema / properties / active / descriptionPrevious value: -"Borrow user's focused tab"New value: +"Prefer the active/focused tab in this session" - changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)" - changed
Input schema / properties / url / descriptionPrevious value: -"Full URL of a session-owned tab"New value: +"URL of a session-owned tab (exact or fuzzy)"
- Changed
wb_get_text1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_go_back1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_go_forward1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Removed
wb_hover - Changed
wb_list_tabs1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_navigate1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_network1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_press_key1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_reload1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Removed
wb_save_as_pdf - Changed
wb_screenshot4 fields changed- added
Input schema / properties / format / descriptionAdded value: +"Default jpeg (faster/more reliable than png)" - added
Input schema / properties / quality / descriptionAdded value: +"JPEG quality; default 55" - added
Input schema / properties / selector / descriptionAdded value: +"Optional @e/CSS crop — use for large pages" - changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_scroll1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Removed
wb_set_session - Changed
wb_snapshot1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_upload1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
- Changed
wb_wait1 field changed- changed
Input schema / properties / session / descriptionPrevious value: -"Per-call session override (does not change default; use wb_set_session for that)"New value: +"Per-call session override (does not change the process default)"
28 tool updates
v1.1.2- First observed
wb_cdp - First observed
wb_click - First observed
wb_close_session - First observed
wb_close_tab - First observed
wb_console - First observed
wb_dblclick - First observed
wb_evaluate - First observed
wb_fill - First observed
wb_fill_form - First observed
wb_find - First observed
wb_find_tab - First observed
wb_get_text - First observed
wb_go_back - First observed
wb_go_forward - First observed
wb_hover - First observed
wb_list_tabs - First observed
wb_navigate - First observed
wb_network - First observed
wb_press_key - First observed
wb_reload - First observed
wb_save_as_pdf - First observed
wb_screenshot - First observed
wb_scroll - First observed
wb_set_session - First observed
wb_snapshot - First observed
wb_status - First observed
wb_upload - First observed
wb_wait
TDQS
Scored across 22 tools
Each tool targets a distinct browser concern: history, tab/session management, page reading, interaction, and capture. Even similar readers like wb_snapshot, wb_get_text, and wb_find are explicitly differentiated by intended use and output type.
All tools share a consistent wb_ prefix and snake_case style, but a few names such as wb_status, wb_network, and wb_console are nouns rather than verb_noun commands. This is a minor deviation from the otherwise predictable pattern.
22 tools is above the typical compact range, but the broad browser-automation domain justifies most entries with little duplication. It feels slightly heavy rather than bloated or sparse.
The tool surface covers the full browser workflow: connection checking, navigation, tab lifecycle, page reading, interaction, waiting, screenshots, network/console capture, and upload. Minor gaps like dedicated cookie or dropdown helpers exist, but agents can work around them with wb_evaluate.
Maintenance
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
MCP server to assist with JxBrowser development.
MCP server for FormBro Canadian immigration application automation.
Related MCP Servers
- AlicenseBqualityCmaintenanceBrowser MCP server that connects to your existing browser, preserving sessions, passwords, and extensions, enabling AI agents to interact with web pages without bot detection.313 npm1MIT
- -licenseNot gradedqualityNot gradedmaintenanceMCP server that connects AI agents to a real Chrome browser via a WebSocket extension bridge, enabling over 40 browser control tools without debug mode or profile isolation.-
- AlicenseNot gradedqualityCmaintenanceMCP server for browser automation with shared authentication and built-in UI auditing.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that lets agents drive your real Chrome browser with existing logins and sessions via an outbound-only WebSocket extension. It exposes Playwright-compatible browser tools for navigation, clicking, typing, and snapshots.1Apache 2.0