BrowserPilot MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BrowserPilot MCPnavigate to google.com and search for 'weather today'"
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.
BrowserPilot MCP
BrowserPilot MCP 是一个通过本地 MCP 服务与原生消息主机连接 AI Agent 和 Chromium 浏览器的自动化工具。
它由浏览器扩展、用户级常驻 daemon、MCP stdio adapter 和 Chrome Native Messaging host 组成,可以让 Claude Desktop / Claude Code 等 MCP 客户端执行网页导航、点击、输入、截图、读取浏览器状态等自动化操作。
BrowserPilot MCP is a local browser automation bridge that connects Claude Code and other MCP clients to Chromium-based browsers through a browser extension and Native Messaging Host.
当前文档对应 BrowserPilot MCP 1.1.2。
功能
浏览器自动化:导航、点击、输入、截图、等待元素、执行页面脚本
MCP 集成:通过本地 MCP server 暴露浏览器控制工具
原生消息桥接:使用 Chrome Native Messaging 连接浏览器扩展和本地服务
Chromium 支持:适用于 Chrome、Edge、Brave、Vivaldi 和 Chromium
本地安装:支持 npm link / npm install -g . 和一键安装脚本
Related MCP server: Cloudflare Playwright MCP
推荐安装流程
1. 安装 CLI
可以从 npm/tarball 安装,也可以在源码目录本地安装:
# npm / tarball 示例
npm install -g browserpilot-mcp-1.1.2.tgz
# 本地源码目录示例
npm install -g .
# 或
npm linknpm install -g . / npm link 只暴露 browserpilot-mcp CLI 并安装运行依赖;不会自动修改 Native Host、LaunchAgent 或 Claude MCP 配置。
2. 一键自动安装
推荐入口:
browserpilot-mcp install --auto该命令会安装并验证 BrowserPilot daemon 的 macOS 用户级 LaunchAgent,然后配置 Native Messaging host 和 Claude MCP。安装完成后,daemon 会通过 LaunchAgent 自动常驻,用户通常 不需要手动运行 browserpilot-mcp daemon start。
安装后检查:
browserpilot-mcp daemon status --json
claude mcp listbrowserpilot-mcp daemon status --json用于确认本机 daemon 状态。claude mcp list用于确认 Claude Code 已看到browserpilot-mcpMCP server。
daemon + adapter 架构
BrowserPilot MCP 1.1.2 使用 daemon + adapter 架构:
Claude Desktop / Claude Code
↓ stdio
MCP stdio adapter (`browserpilot-mcp start`)
↓ TCP client + token auth
BrowserPilot daemon (`127.0.0.1:18765`)
↑ TCP client + token auth
Native Messaging Host
↓ Chrome Native Messaging
Browser Extension
↓
Chromium tabs关键点:
daemon 是唯一监听本地 TCP 的进程,地址为
127.0.0.1:18765。browserpilot-mcp start是 Claude MCP stdio adapter,只通过 stdio 和 Claude 通信,并作为 TCP client 连接 daemon;它 不监听18765。多个 Claude / MCP 客户端实例可以共用同一个 daemon。
macOS 推荐通过
browserpilot-mcp install --auto安装 LaunchAgent,让 daemon 用户级自动常驻。
Chrome 扩展安装
BrowserPilot 扩展需要安装到 Chrome / Chromium 系浏览器:
打开
chrome://extensions。打开右上角「开发者模式」。
点击「加载已解压的扩展程序」。
选择本地生成或 Release 下载的打包产物
dist/extension-unpacked/。
dist/ 不提交到 git。需要本地产物时运行 ./package-extension.sh 生成,或从 GitHub Release 下载已发布产物。也可以安装打包生成的 CRX(如果本机 Chrome/Chromium 打包命令已生成 dist/browserpilot-mcp-extension.crx)。
Extension ID 与 .extension-id
BrowserPilot 支持固定 Extension ID:
.extension-id是本地打包/安装流程生成的状态文件,不提交到 git。安装脚本会在本地优先读取
.extension-id;如果不存在,可通过本地打包或安装流程重新生成。固定 ID 由打包使用的 PEM 密钥控制;同一个 PEM 会生成同一个扩展 ID。
如果更换或丢失 PEM,扩展 ID 可能变化,需要重新安装 Native Host allowed origins 和 MCP 配置。
新视觉行为(1.1.2)
BrowserPilot 1.1.2 取消了旧版页面高亮样式:
不再给页面添加橙色页面边界高亮。
改用 Chrome Tab Group 展示连接状态:
connected:绿色 Tab Group,标题为「BrowserPilot 已连接」。connecting:蓝色 Tab Group,标题为「BrowserPilot 连接中」。disconnected:取消 BrowserPilot 创建的分组。
这意味着连接状态主要体现在浏览器标签分组上,而不是网页内容区域的边框。
新 tab 生命周期(1.1.2)
BrowserPilot 1.1.2 对 tab 管理做了更安全的区分。
ensure_active_tab
推荐在需要可操作页面时使用 ensure_active_tab:
如果当前没有 active tab,会打开一个新 tab。
如果浏览器未启动,会按需启动浏览器。
不会关闭浏览器。
close_managed_tabs
推荐使用 close_managed_tabs 清理 BrowserPilot 自动创建/管理的 tab:
只关闭 BrowserPilot 自己创建或管理的 tab。
不关闭用户原本已经打开的 tab。
不关闭 Chrome / Chromium 浏览器本身。
close_page
close_page 仍作为低层兼容工具存在,用于关闭指定 tab。日常清理 BrowserPilot 会话时,推荐优先使用 close_managed_tabs,避免误关用户原有标签页。
BrowserPilot 不提供关闭浏览器的能力。
常用命令
browserpilot-mcp install --auto
browserpilot-mcp daemon status --json
browserpilot-mcp daemon install --dry-run
browserpilot-mcp daemon uninstall --dry-run
browserpilot-mcp doctor --browser Chrome
npm run check:extension
npm run check:daemon-contract说明:
browserpilot-mcp install --auto:推荐安装入口;安装 daemon LaunchAgent、Native Host 和 Claude MCP 配置。browserpilot-mcp daemon status --json:以 JSON 查看 daemon 状态。browserpilot-mcp daemon install --dry-run:只打印 LaunchAgent 安装计划,不写文件、不运行 launchctl。browserpilot-mcp daemon uninstall --dry-run:只打印 LaunchAgent 卸载计划。browserpilot-mcp doctor --browser Chrome:诊断 Chrome 相关安装状态。npm run check:extension:检查扩展相关构建/约束。npm run check:daemon-contract:检查 daemon contract。
验证和排错
安装后建议按顺序验证:
browserpilot-mcp daemon status --json
claude mcp list
browserpilot-mcp doctor --browser Chrome然后在 chrome://extensions 中找到 BrowserPilot MCP 扩展并点击 reload / 刷新。
排查建议:
确认版本为 1.1.2。
browserpilot-mcp daemon status --json应显示 daemon 可访问。claude mcp list应包含browserpilot-mcp。browserpilot-mcp doctor --browser Chrome可用于检查 Native Host、扩展 ID 和浏览器配置。如果扩展刚安装或 Native Host 配置刚变化,请 reload 扩展,必要时完全退出并重新打开 Chrome。
如果
.extension-id与浏览器显示的 Extension ID 不一致,请确认是否更换过 PEM 或重新打包过扩展。
安全说明
BrowserPilot MCP 的安全边界设计:
daemon 只监听 loopback:
127.0.0.1:18765,不暴露公网监听端口。daemon client 使用 token auth,adapter 和 native host 都需要通过本机 token 连接 daemon。
LaunchAgent 是 macOS 用户级配置,不是系统级 daemon。
不提供关闭浏览器的工具,避免 MCP 工具关闭用户浏览器。
URL 输入只允许
http:、https:和about:blank。close_managed_tabs只清理 BrowserPilot 管理的 tab,不清理用户原有 tab。
清理 / 卸载
如果版本已实现 daemon 卸载命令,可以运行:
browserpilot-mcp daemon uninstall查看卸载计划但不执行:
browserpilot-mcp daemon uninstall --dry-run完整清理 Native Messaging manifest 等安装产物:
./uninstall.sh卸载后也可以在浏览器扩展管理页手动移除 BrowserPilot MCP 扩展。
MCP Tools
常用 MCP 工具包括:
Tool | Description |
| 返回 daemon、native host、扩展等结构化诊断信息 |
| 确保存在可操作 active tab;必要时打开 tab / 启动浏览器 |
| 只关闭 BrowserPilot 创建/管理的 tab |
| List all open browser tabs |
| Navigate to a URL in a tab |
| Capture a screenshot of the current page |
| Click an element by selector or coordinates |
| Type text into an input field |
| Fill multiple form fields at once |
| Press a keyboard key (Enter, Escape, arrows, etc.) |
| Hover over an element |
| Drag from one coordinate to another |
| Wait for a visible element matching a CSS selector |
| Execute JavaScript on the page |
| Get a specific console message |
| List console messages |
| Get a network request |
| List network requests |
| Accept or dismiss JavaScript dialogs |
| Resize the browser window |
| Open a new tab |
| Low-level compatibility tool for closing a specified tab |
Development checks
开发或发布前常用检查:
npm run check:extension
npm run check:daemon-contract扩展改动后,在 chrome://extensions 中点击 BrowserPilot MCP 的 reload / 刷新按钮,让 service worker 和扩展资源重新加载。
License
MIT
Available Tools
22 toolsclickC
Click an element on the page
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| selector | No | CSS selector of the element to click | |
| coordinates | No | Optional x/y coordinates to click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It merely restates the action and discloses nothing about side effects, return values, waits, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. However, it is arguably under-specified, which slightly reduces the score from a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three optional parameters and no output schema, yet the description does not clarify whether at least one of 'selector' or 'coordinates' must be provided, nor what happens when neither is given. This ambiguity leaves the invocation unclear.
Complex tools with many parameters or behaviors need more documentation. 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 parameters are already documented. The description adds no additional meaning, but the schema itself includes descriptions for 'page', 'selector', and 'coordinates', providing baseline clarity.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('Click') performed on a resource ('an element on the page'). It is unambiguous but does not distinguish itself from sibling actions like 'hover' or 'drag'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 over alternatives, nor any exclusions such as requiring a selector versus coordinates. The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_managed_tabsA
关闭 BrowserPilot MCP 自身打开/使用过的 tab。默认只关参数里给定的 tabId(如果属于受管集合);传 allManaged=true 时关闭所有受管 tab。永远不关 Chrome 浏览器本身;如果关闭全部受管 tab 会导致最后一个窗口被清空,工具会改为仅从受管集合移除而不调用 chrome.tabs.remove。
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | 可选:要关闭的 tab id(必须此前被 BrowserPilot 注册为受管) | |
| allManaged | No | 可选:true 时关闭所有受管 tab;缺省 false 只关 tabId |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It richly discloses behaviors: only closes managed tabs, never the browser itself, the default vs allManaged behavior, and the crucial edge case where it avoids closing the last window by only removing from the managed set without calling chrome.tabs.remove. This goes far beyond a basic mutation description.
Agents need to know what a tool does to the 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: a single opening sentence states the core purpose, followed by a compact explanation of the two modes and the safety edge case. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no annotations and no output schema, the description is complete for this tool's complexity. It covers the two parameter behaviors, the safety guarantee, and the critical fallback behavior when closing all managed tabs would empty the last window. There are no significant 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% and the description largely restates what the schema already says (tabId must be managed, allManaged defaults to false, allManaged=true closes all). It does add the context of never closing the browser and the last-window edge case, but those are behavioral rather than parameter-semantic enhancements. Baseline 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 closes tabs that BrowserPilot MCP itself opened/used, with a specific verb (close) and resource (managed tabs). It distinguishes from sibling close_page by limiting scope to managed tabs, and explicitly describes the default and allManaged behaviors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: only closes managed tabs, defaults to the specified tabId, and allManaged=true closes all managed tabs. It also states when not to use it (never closes the Chrome browser itself) and the edge case of the last window being emptied. However, it does not explicitly name an alternative tool like close_page for unmanaged tabs, so it stops short of full when/not-and-alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_pageA
Low-level tab close tool kept for compatibility; refuses to close the last browser window. Prefer close_managed_tabs for BrowserPilot-managed lifecycle cleanup.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to close |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, and it does so by stating 'refuses to close the last browser window.' This is a crucial safety/limitation behavior. However, it doesn't detail what happens if that occurs (e.g., error message) or mention other side effects, but the key behavioral constraint 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 compact and front-loaded, stating the core purpose in the first phrase ('Low-level tab close tool'), then providing a key behavioral note, and finally an alternative. Every sentence adds value 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 tool with one optional parameter and no output schema, the description covers purpose, a critical behavioral limitation, and guidance on alternatives. It does not explicitly explain behavior when no page ID is provided (e.g., default current tab), but the overall context is sufficient for most 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?
The input schema has 100% coverage for the single parameter 'page' with description 'Optional page/tab ID to close'. The tool description does not add additional parameter semantics, so the baseline of 3 is appropriate since 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 states the tool is a 'low-level tab close tool' with a specific scope: closing tabs. It also distinguishes itself from the sibling tool close_managed_tabs by positioning itself as a low-level compatibility tool, which differentiates its 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 explicitly says 'Prefer close_managed_tabs for BrowserPilot-managed lifecycle cleanup', providing clear guidance on when to use this tool versus an alternative. It also implies this tool is for direct, unmanaged closing, giving context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dragC
Drag from one point to another
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | Ending coordinates | |
| page | No | Optional page/tab ID to use | |
| start | Yes | Starting coordinates |
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 states the basic gesture. It does not mention whether the drag involves pressing and releasing, any dwell time, coordinates relative to viewport, or possible side effects such as scrolling or selecting.
Agents need to know what a tool does to the 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 brief, consisting of a single phrase with no fluff, but it under-specifies key details. It is concise yet not sufficiently informative, balancing between efficiency and completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 three parameters, nested objects, and no output schema, the description is too thin to provide complete context. It omits information about coordinate systems, coordinate origin, and the effect of the drag, making it insufficient for an AI agent to use safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes each parameter with 100% coverage, so the baseline is 3. The description adds no extra meaning beyond the schema, simply restating the start and end points.
Input schemas describe structure but not intent. Descriptions should explain 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 as 'drag' and specifies the target as moving from one point to another, distinguishing it from sibling actions like click and hover. However, it does not clarify whether this is a mouse drag, touch drag, or drag-and-drop, leaving some 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 provides no guidance on when to use this tool versus alternatives such as click, hover, or key presses. There is no mention of prerequisites, use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensure_active_tabA
确保存在一个可用且激活的浏览器 tab。如果当前窗口已有 active tab 则直接复用;如果没有任何 tab 但浏览器进程仍在,则新建 tab;如果连窗口都没有,会按 platform 启动 Chrome(macOS: open -a Google Chrome;Linux: xdg-open;Windows: rundll32.exe url.dll,FileProtocolHandler)。本工具不会关 Chrome,不会结束浏览器进程;启动浏览器仅在显式调用本工具时发生。
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | 可选:新建 tab 时要打开的 URL,缺省 about:blank | |
| browser | No | 缺省 chrome;auto 由系统决定,chrome/edge/brave 显式指定浏览器应用名(仅用于启动命令) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it reuses, creates, or launches a browser; it explicitly states it will not close Chrome or terminate the browser process; and it lists platform-specific launch commands. This goes far beyond basic expectations.
Agents need to know what a tool does to the 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 well-structured and front-loaded with the core purpose. While slightly long due to platform launch details, every sentence earns its place by conveying necessary behavioral guarantees and conditions without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a side-effect-oriented tool with two optional parameters, the description covers all relevant states (active tab, no tabs, no window) and side effects (browser launch, no termination). It lacks explicit return value details, but no output schema exists and the tool's success is largely implied by the conditional logic.
Complex tools with many parameters or behaviors need more documentation. 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 'browser' parameters already well-documented. The description adds minimal extra meaning beyond the schema, so a baseline score of 3 is appropriate as the schema carries 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 purpose: ensure an active browser tab exists. It specifies the exact verb (ensure) and resource (active tab), and the conditional behavior (reuse existing tab, create new tab, launch browser) distinguishes it from siblings like new_page or navigate_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool by detailing the three scenarios (active tab present, no tabs but browser running, no window) and explicitly notes when the browser will be launched. It does not name alternatives explicitly, but the conditional logic implies when this is the appropriate fallback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_scriptA
Evaluate JavaScript on the page via chrome.scripting.executeScript. The script runs with extension execution semantics and must return a JSON-serializable value; returnByValue is accepted for API compatibility but the extension always returns the serialized result value.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| script | Yes | The JavaScript to evaluate | |
| returnByValue | No | Accepted for compatibility only. The extension currently always returns the serialized result value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses important behaviors: runs with extension execution semantics, requires a JSON-serializable return value, and explains that returnByValue is accepted but ignored. This provides meaningful context beyond a simple operation statement.
Agents need to know what a tool does to the 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 two sentences covering purpose, execution semantics, and return constraints. It is front-loaded with the primary action and contains no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a script execution tool: it explains the action, execution context, and return value expectations. While error handling isn't mentioned, the core behavior is covered, especially given the limited schema and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description does not add new parameter semantics. The note about returnByValue in the description duplicates the schema's text. No extra value is provided beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Evaluate JavaScript on the page via chrome.scripting.executeScript.' It specifies the resource (page JavaScript) and the mechanism, making it distinct from sibling tools like click, type, or navigate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 needing to run custom JavaScript, but it does not explicitly state when to use this tool over alternatives or provide exclusions. With sibling tools like click and type_text, no direct comparison is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_formB
Fill multiple form fields at once
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| fields | Yes | Array of field selectors and values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives no behavioral details such as whether it simulates typing, sets values directly, clears existing content, triggers events, or handles errors. It simply restates the basic action without revealing important execution traits.
Agents need to know what a tool does to the 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 words. It efficiently conveys the core action, making it appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two parameters, one being an array of nested objects, and no annotations or output schema, the description is insufficient. It does not explain selector syntax, behavior on invalid selectors, whether events are triggered, or any return value, leaving many 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 already covers both parameters with descriptions (page and fields). The tool description adds no additional parameter semantics beyond the word 'fill', so it meets the baseline for high schema coverage without adding extra 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 states the tool fills multiple form fields at once, using the verb 'fill' and scope 'multiple form fields at once'. This distinguishes it from sibling tools like type_text, which is for single fields, and click.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'at once' implies use when needing to fill several fields in a single operation, but the description does not explicitly state when to use this tool over alternatives like type_text, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_console_messageA
Get a captured console message by ID. Console events are captured from CDP Runtime.consoleAPICalled, Log.entryAdded, and content-script interception.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The message ID | |
| page | No | Optional page/tab ID to use |
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 reveals the capture sources but does not state whether the operation is read-only, what the return object looks like, or what happens when an ID is not found. The 'get' verb implies a safe read, but this is not explicit.
Agents need to know what a tool does to the 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 primary action. The second sentence adds relevant context about the message sources without unnecessary verbosity. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 get-by-ID tool, the description is fairly complete. It explains what the tool does, how messages are captured, and has no output schema to worry about. However, without annotations or output schema, a bit more detail on the return value or error behavior would be beneficial, but it is not critical given the 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%—both 'id' and 'page' are described. The description text adds no extra meaning about the parameters beyond the capture source context, which is not directly param-specific. The baseline for high schema coverage is 3, and no additional value is provided.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Get'), the resource ('a captured console message'), and the method ('by ID'). It also specifies the sources of the messages (CDP Runtime.consoleAPICalled, Log.entryAdded, content-script interception), which helps distinguish it from sibling tools like list_console_messages or get_network_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: you need a message ID, presumably from a previous list_console_messages call. However, there is no explicit statement about when to use this vs alternatives, no mention of prerequisites, and no exclusion like 'instead of listing all messages.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_requestA
Get captured network request metadata by ID. Captures CDP Network request/response lifecycle metadata only; response bodies are not included.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The request ID | |
| page | No | Optional page/tab ID to use |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the key limitation ('response bodies are not included') and clarifies the data source ('CDP Network request/response lifecycle metadata only'). It doesn't mention error behavior or require capture state, but the main limitation is transparently stated.
Agents need to know what a tool does to the 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 core action, and no unnecessary words. Every clause adds value, including the explicit limitation on response bodies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is sufficient for a simple getter, but it leaves gaps: it doesn't specify what fields the metadata includes (e.g., status, headers, timings) or how to obtain the ID (e.g., via list_network_requests). Since there is no output schema, a bit more detail on the return shape would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters (id and page) with clear descriptions. The description adds little beyond 'by ID', which is already evident from the schema. Baseline 3 applies since schema_description_coverage is 100% and no extra nuance is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear and specific: 'Get captured network request metadata by ID.' Distinguishes from sibling list_network_requests by emphasizing retrieval by ID, and the scope is explicit (network request metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context: it retrieves previously captured metadata, and explicitly notes what it does not include (response bodies). This implies when to use it (when you need lifecycle metadata) and when not to (when you need response bodies), though it does not name alternative tools or explicitly state prerequisites like first listing requests to obtain an ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
handle_dialogC
Handle a JavaScript dialog (alert, confirm, prompt)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| accept | Yes | Whether to accept (true) or dismiss (false) the dialog | |
| promptText | No | Optional text to enter for prompt dialogs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses only the basic action of handling a dialog. It omits critical behavioral details such as what happens if no dialog is present, whether the tool waits for a dialog, how dismissal differs from acceptance, or any return values. With no annotations to provide safety or behavioral context, the description fails to convey these important traits.
Agents need to know what a tool does to the 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 main purpose. No word is wasted, but the verb 'handle' could be more precise (e.g., 'accept or dismiss'). Overall, it is appropriately sized and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 three simple parameters and no output schema, the description is minimal but still incomplete. It lacks any context about dialog interaction flow, error conditions, or how the tool integrates with page navigation. An agent would have to infer behavior from the parameter names alone, which is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter semantics beyond what the schema already explains; the accept/promptText semantics are clearly documented in the schema. The description only adds a generic mention of dialog types, which is redundant.
Input schemas describe structure but not intent. Descriptions should explain 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 it handles JavaScript dialogs (alert, confirm, prompt), which is a specific resource. Although the verb 'handle' is somewhat generic, the parenthetical list of dialog types makes the purpose unambiguous. It distinguishes from sibling tools by being the only dialog-handling 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 does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. Usage is only implied by the dialog types, with no context about dialog blocking, timing, or fallback behavior. This is minimal guidance at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
返回 MCP 服务、浏览器扩展、原生主机、浏览器访问状态和下一步操作的结构化诊断信息。Use this to check whether the browser automation bridge is ready.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description details what the tool returns (diagnostic info and next steps), which informs the agent about the tool's non-destructive, read-only nature. It adds behavioral context beyond the name, though it could explicitly state it makes no changes to the environment.
Agents need to know what a tool does to the 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 two sentences that each earn their place: the first details the returned content, the second provides usage guidance. No redundant or filler text is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 diagnostic tool with no output schema, the description provides complete context: what it checks, what it returns, and when to use it. It is fully sufficient for an agent to select and invoke this tool 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 and the schema is empty, so there is no need for parameter explanation. The baseline score for zero-parameter tools is 4, and the description adequately covers the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain 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 structured diagnostic information about specific components (MCP service, browser extension, native host, browser access status) and next steps. It uniquely identifies this as a health check tool, distinguishing it from sibling tools that perform actions like navigation or clicking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 to use this tool to check whether the browser automation bridge is ready, providing clear usage context. It does not mention when not to use it or alternatives, but given the tool's unique diagnostic role, this is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hoverC
Hover over an element
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| selector | Yes | CSS selector of the element to hover over |
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. It only states the basic action without revealing side effects, such as whether it triggers mouseover events, waits for a response, or affects page state. This is a significant gap for a user-interaction tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wordiness. It is direct and easy to read, though it could be slightly more informative without becoming verbose. Overall, it is appropriately concise for its 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?
The description is too minimal to provide adequate context. Given the lack of annotations and output schema, the description should compensate by explaining when to use the tool, potential side effects, or how it interacts with the page. None of this is present, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all parameters (page and selector), giving 100% coverage. The tool description adds no additional meaning to these parameters, so it stays at the baseline for schema-covered tools.
Input schemas describe structure but not intent. Descriptions should explain 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 (hover) and the target (an element), which distinguishes it from sibling tools like click or type_text. However, it does not add additional scope such as 'in the current page' or 'using a CSS selector', so it falls short of 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 provides no guidance on when to use hover versus alternatives like click or drag. There are no stated prerequisites, exclusions, or context for when this tool is appropriate, leaving the agent without decision-making information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_console_messagesA
List captured console messages from CDP Runtime.consoleAPICalled, Log.entryAdded, and content-script interception.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| type | No | Optional message type filter (log, error, warn, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full burden of behavioral disclosure. It mentions the action and sources but does not disclose whether messages are cleared, return order, pagination, or any side effects. This leaves the agent with an incomplete behavioral picture.
Agents need to know what a tool does to the 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, precise sentence that front-loads the action and resource, followed by relevant source details. Every word contributes meaning, and there is no redundancy or wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and sources but does not explain the return format, default behavior, or filtering nuances. Since there is no output schema, the description should ideally describe what the returned messages look like, which is a notable 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?
Both parameters have full descriptions in the schema (100% coverage), so the schema provides the necessary semantic meaning. The description adds no additional parameter context, but this is acceptable given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain 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 ('List') and the resource ('captured console messages'), and specifies the exact data sources (CDP Runtime.consoleAPICalled, Log.entryAdded, content-script interception). This distinguishes it from sibling tools like list_network_requests or get_console_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 retrieving console messages but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. Sibling tool names suggest context, but the description itself lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_network_requestsA
List captured network request metadata from CDP Network events. Returns metadata such as URL, method, headers, status, mime type, timing/status fields, and encoded data length; response bodies are not included.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| type | No | Optional CDP resource type filter, such as Document, Fetch, XHR, Script, Stylesheet, Image, Media, Font, WebSocket, or Other. | |
| status | No | Optional request lifecycle status filter. | |
| urlContains | No | Optional substring filter applied to request URLs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the key limitation that response bodies are not included and lists the metadata fields returned. While it does not explicitly state read-only behavior, 'List' strongly implies it, and the description adds context about CDP Network events. It does not contradict structured data.
Agents need to know what a tool does to the 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 action and resource, no filler. The second sentence adds a meaningful limitation without wasting 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 (4 optional filters, no output schema), the description provides essential purpose and return metadata. It doesn't detail ordering or pagination, but for a list operation with optional filters, it is adequately 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 covers 100% of parameters with descriptions, so baseline is 3. The description does not add meaning beyond the schema parameters themselves; it only mentions 'timing/status fields' and 'encoded data length' which are return fields, not 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 uses a specific verb ('List') and resource ('captured network request metadata from CDP Network events'). It clearly identifies what the tool does and distinguishes it from sibling tools like get_network_request, which retrieves a single request. The scope ('network request metadata') and exclusion of response bodies further clarify its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 does not explicitly state when to use this tool versus alternatives like get_network_request, nor does it mention when not to use it. It implies context (used for listing metadata, not bodies) but provides no direct guidance or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesA
List all open browser tabs/pages
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states the basic action. It does not mention side effects, return format, or how tabs/pages are identified.
Agents need to know what a tool does to the 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 of six words, perfectly front-loaded and free of unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless list operation, the description is mostly adequate, but it does not specify what information is returned for each tab/page (e.g., title, URL, ID), leaving a gap in expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so the baseline is 4. The description adds the qualifier 'all', which clarifies the unconditional scope of the operation, but no further parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a clear resource ('all open browser tabs/pages'), making its function unambiguous and naturally distinct from sibling tools like 'list_network_requests' 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 provided about when to use this tool versus alternatives; there is no mention of prerequisites, exclusions, or complementary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_pageB
Open a new browser tab
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional URL to navigate to in the new tab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It simply states 'Open a new browser tab' and does not disclose whether the new tab becomes the active tab, whether a page reference is returned, or any side effects such as focus changes.
Agents need to know what a tool does to the 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 concise and front-loaded with the core action. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema, but the description lacks behavioral details like active-tab semantics. For a browser automation tool, this missing context is a notable gap, though the core purpose is adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. 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 provides 100% coverage for the single optional 'url' parameter with a clear description. The tool description adds no additional meaning beyond what the schema provides, 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 'Open a new browser tab' clearly states the tool's action and resource with a specific verb. It distinguishes itself from sibling tools like navigate_page (which navigates an existing tab) and close_page (which closes 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?
No guidance is provided on when to use this tool vs alternatives such as navigate_page or ensure_active_tab. The description does not mention whether the new tab becomes active or whether it should be used before other actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_keyC
Press a keyboard key
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The key to press (e.g., Enter, Escape, ArrowUp) | |
| page | No | Optional page/tab ID to use |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It merely restates the tool name and offers no details about side effects, whether it requires an active page, how it handles focus, or what happens if 'page' is omitted. This is a tautological description that adds no behavioral insight.
Agents need to know what a tool does to the 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 redundant words. It is front-loaded and directly communicates the core action, earning a high score for conciseness even though it lacks depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is too thin. It does not explain key press behavior (e.g., whether it's a transient press or long press), how the optional 'page' parameter affects execution, or any return value. The schema describes parameters but not runtime context, leaving significant ambiguity.
Complex tools with many parameters or behaviors need more documentation. 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 provides full coverage (100%) with descriptive parameter details: 'key' includes examples and 'page' is explained. The description adds no additional meaning beyond the schema, so a 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 ('press') and the resource ('keyboard key'), making it easy to understand. It is distinct from sibling tools like 'click' and 'type_text', though it could be more specific about what kind of key (e.g., modifier keys, key combinations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 press_key versus alternatives like 'click' or 'type_text'. The description does not mention suitable scenarios or exclusions, leaving the agent to infer that it is for simple key presses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_pageB
Resize the browser window
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| width | Yes | The window width in pixels | |
| height | Yes | The window height in pixels |
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 only says 'Resize the browser window' without explaining side effects, whether it affects the current page or all pages, or if the resize is persistent. The optional 'page' parameter is not mentioned, leaving behavioral 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, concise sentence with zero waste. It is front-loaded with the key action and target, making it easy 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?
For a simple resize operation with a well-covered schema, the description is minimally viable. However, it lacks contextual details such as whether the resize applies to the viewport or the OS window, and what happens when the optional 'page' parameter is omitted. Given the tool's simplicity, this is a clear but not critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter names and units (pixels) already provided. The description adds no additional meaning beyond what the schema states, 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 'Resize the browser window' clearly states the action (resize) and the target (browser window), with a specific verb and resource. It distinguishes itself from sibling tools, none of which perform resizing, though the tool name 'resize_page' vs 'browser window' creates minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description simply states the action without context such as 'use to adjust viewport before taking a screenshot.' Usage is only implied by the nature of the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_screenshotA
Take a PNG screenshot of the current page. By default captures the visible viewport; with fullPage=true, uses CDP Page.getLayoutMetrics and Page.captureScreenshot to capture the full page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| fullPage | No | When true, capture the full page using CDP Page.captureScreenshot; when false or omitted, capture the visible viewport. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It mentions the use of CDP Page.getLayoutMetrics and Page.captureScreenshot for full-page capture, and explains the default viewport behavior. It could also state the return format (e.g., base64) but the core behaviors are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, front-loaded with the primary purpose. It avoids redundancy and every clause adds value, explaining the default and full-page modes 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 screenshot tool, the description covers the main actions and behavioral nuances. It does not mention the return value format or whether the page must be active, but given the low complexity and helpful sibling context (e.g., ensure_active_tab), it is reasonably complete. A 4 reflects the minor gap around output specifics.
Complex tools with many parameters or behaviors need more documentation. 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 provides complete descriptions for both parameters (page and fullPage), including the key distinction for fullPage. The description essentially repeats the fullPage behavior but adds no new meaning beyond what the schema already specifies, so a 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 clearly states the tool's purpose: 'Take a PNG screenshot of the current page.' It specifies the output format (PNG) and the resource (current page). It also distinguishes between default viewport capture and full-page capture, which differentiates it from any potential 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?
The description provides clear usage context by explaining the default behavior (visible viewport) and when to use fullPage=true. It does not explicitly mention alternatives or when not to use the tool, but the context is sufficient for straightforward usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
type_textC
Type text into an input field
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| text | Yes | The text to type | |
| selector | No | CSS selector of the input field |
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 only states the basic action of typing text, but fails to mention important behavior such as whether it replaces existing content, fires events, or requires a focused element. This is insufficient for an agent to predict 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 conveys the core action without any filler. It is appropriately sized and front-loaded, making it easy 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?
Given the tool's simplicity (3 parameters, no output schema), the description is still too sparse. It lacks any behavioral context, such as how the selector optional is handled or what happens if no selector is provided, and does not differentiate from sibling tools. This leaves the agent with uncertainty about correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning every parameter has a meaningful description in the schema. The tool's description adds no extra parameter information, but the schema itself is sufficient, 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 'Type text into an input field' clearly states the verb (type) and resource (input field), giving a specific action. However, it does not differentiate from sibling tools like fill_form or press_key, so it does not fully meet the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as fill_form or press_key. The description provides no context about prerequisites, selection of the target element, or when other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_forA
Wait for a visible element matching a CSS selector. JavaScript conditions are not supported; use evaluate_script explicitly when script execution is intended.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional page/tab ID to use | |
| timeout | No | Timeout in milliseconds (default: 30000) | |
| selector | Yes | CSS selector to wait for; required because condition-based waiting is not supported. | |
| condition | No | Unsupported. Passing a condition will make the extension reject the request; use evaluate_script explicitly instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses that condition-based waiting is unsupported and rejects requests, but does not describe timeout behavior, return values, or side effects beyond waiting.
Agents need to know what a tool does to the 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 focused sentences front-load the core action, immediately state the key restriction, and point to the alternative without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a wait tool with fully described parameters, the description covers the essential behavior and constraint. It lacks explicit timeout outcome details but is otherwise sufficient given schema richness.
Complex tools with many parameters or behaviors need more documentation. 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 descriptions already cover all parameters (100% coverage), including the condition constraint. The description reinforces the unsupported condition but adds little 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 identifies the tool's action: waiting for a visible element matching a CSS selector. It also distinguishes itself from evaluate_script by stating JS conditions are not supported, which differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when not to use it (for JavaScript conditions) and provides the alternative (evaluate_script), giving clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes, but close_page and close_managed_tabs overlap in function, and new_page vs ensure_active_tab could cause selection ambiguity. Descriptions help mitigate confusion.
The majority follow a clear verb_noun pattern (list_pages, navigate_page, type_text). However, a few single-word verbs (click, hover, drag) and health_check break the pattern, creating minor inconsistency.
At 22 tools, the surface is on the heavy side and includes some redundancy (close_page vs close_managed_tabs). The browser automation domain is broad, so most tools are justified, but a few could be consolidated.
Core browser automation operations are covered: navigation, tab management, interaction, screenshots, network/console inspection, and dialog handling. Minor gaps like direct content extraction exist but can be addressed via evaluate_script.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseBqualityDmaintenanceA browser automation agent that enables Claude to interact with web browsers through the Model Context Protocol, allowing for actions like navigating websites, manipulating elements, and managing browser state.29MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to control a browser through Playwright automation tools, allowing them to perform web tasks like navigation, typing, clicking, and taking screenshots. Deployed on Cloudflare Workers and compatible with various AI platforms including Claude Desktop and VS Code.
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to control a web browser via Playwright on Cloudflare Workers for automated tasks like navigation, clicking, typing, and taking screenshots. It integrates with platforms like Claude Desktop and GitHub Copilot to perform web automation through a standardized toolset.
- AlicenseNot gradedqualityAmaintenanceBrowser automation for AI agents via the Model Context Protocol, enabling web navigation, form filling, screenshots, and more using Chromium.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sept-7-Qi/BrowserPilot-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server