BrowserPilot
Enables AI agents to control Brave browser for web automation, including navigation, clicking, typing, form filling, screenshots, and debugging.
Enables AI agents to control Firefox browser (support under development) for web automation, including navigation, clicking, typing, form filling, screenshots, and debugging.
Enables AI agents to control Google Chrome browser for web automation, including navigation, clicking, typing, form filling, screenshots, and debugging.
Enables AI agents to control Opera browser for web automation, including navigation, clicking, typing, form filling, screenshots, and debugging.
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., "@BrowserPilotNavigate to example.com and click the 'Get Started' button"
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
让 AI 接管你的浏览器
基于 MCP 协议,让任何 AI 工具通过自然语言控制浏览器,实现网页自动化、测试和数据抓取。
中文 | English
📖 项目简介
BrowserPilot 是一个基于 Model Context Protocol (MCP) 的浏览器控制工具,让 AI 应用能够通过自然语言控制浏览器。非常适合网页自动化、测试、数据抓取和调试场景。
🎯 核心优势
🌐 通用 MCP 支持 - 兼容所有支持 MCP 的 AI 工具(Cursor、Claude Desktop 等)
🔌 多浏览器支持 - 支持所有 Chrome 内核浏览器(Chrome、Edge、Brave 等),Firefox 支持开发中
📦 开箱即用 - 提供打包好的可执行文件,无需安装 Node.js
🎯 15+ 浏览器工具 - 导航、点击、输入、截图、调试等全覆盖
🚀 实时控制 - AI 指令即时响应,无延迟
🛡️ 100% 本地运行 - 无需外部 API,数据完全私密
📦 轻量级设计 - 仅依赖 WebSocket (ws) 库
🎨 可访问性优先 - 使用浏览器无障碍树实现可靠的元素定位
Related MCP server: Webpage MCP
🏗️ 架构设计
┌─────────────────────────────────────────────────────────────────────────┐
│ BrowserPilot 架构 │
└─────────────────────────────────────────────────────────────────────────┘
┌──────────────────┐ ┌──────────────────┐
│ MCP 客户端 │ │ MCP 服务器 │
│ │ │ │
│ 🤖 Cursor │ ① STDIO │ 📡 Node.js │
│ 🤖 Claude │ ◄──────────────► │ 📡 WebSocket │
│ 🤖 其他AI工具 │ (命令/响应) │ 📡 HTTP Server │
└──────────────────┘ └──────────────────┘
▲ │
│ │ ② WebSocket
│ │ ws://localhost:9222
│ ▼
│ ┌──────────────────┐
│ │ 浏览器扩展 │
│ │ │
│ │ 🔧 Service │
│ │ Worker │
│ │ 🔧 Tools │
└────────────────────────────────│ Registry │
Result │ 🔧 MCP Client │
└──────────────────┘
│
│ ③ 执行操作
│ (chrome API)
▼
┌──────────────────┐
│ 浏览器标签页 │
│ │
│ 🌐 DOM │
│ 🌐 Console │
│ 🌐 Network │
└──────────────────┘
💿 安装方式
方式 1:使用打包版本(推荐)
无需安装 Node.js,直接使用预编译的可执行文件:
方式 2:从源码运行
需要 Node.js ≥ 18.0.0:
git clone https://github.com/YOUR_USERNAME/BrowserPilot.git
cd BrowserPilot
npm install🚀 快速开始
1. 安装浏览器扩展
支持所有 Chrome 内核浏览器:Chrome、Edge、Brave、Opera 等
打开扩展管理页面:
Chrome:
chrome://extensions/Edge:
edge://extensions/Brave:
brave://extensions/
启用开发者模式
点击加载已解压的扩展程序
选择
chrome-extension文件夹
🦊 Firefox 支持:Firefox 版本正在开发中,敬请期待
2. 启动 MCP 服务器
注意,在实际使用中,不需要你手动打开,MCP调用方会自行打开。
使用打包版本:
# Windows
.\MCP-Browser-Win.exe
# Mac
./MCP-Browser-Mac
# Linux
./MCP-Browser-Linux从源码运行:
npm start访问 http://localhost:3000 查看控制面板(可选)。
3. 连接浏览器扩展
点击浏览器工具栏的扩展图标,连接到 ws://localhost:9222
4. 配置 MCP 客户端
在 Cursor 中配置
项目包含 .cursor/mcp.json 配置,重启 Cursor 使配置生效。
在 Claude Desktop 中配置
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(Mac)或对应的配置文件:
{
"mcpServers": {
"browser-pilot": {
"command": "/path/to/MCP-Browser",
"args": ["--stdio-only"]
}
}
}在其他 MCP 客户端中配置
参考对应客户端的 MCP 配置文档,关键参数:
command: MCP 服务器路径
args:
["--stdio-only"]protocol: stdio
✨ 核心特性
🧭 导航与快照
工具 | 描述 |
| 导航到指定 URL |
| 返回上一页 |
| 捕获页面可访问性树,用于元素定位 |
| 截取全页或指定元素的截图 |
🖱️ 交互操作
工具 | 描述 |
| 点击元素(支持双击、修饰键) |
| 在输入框输入文本 |
| 鼠标悬停在元素上 |
| 按下键盘按键(Enter、Escape 等) |
| 拖拽元素到指定位置 |
| 选择下拉菜单选项 |
| 批量填写多个表单字段 |
| 等待条件满足(文本出现/消失、延迟) |
🐛 调试与分析
工具 | 描述 |
| 获取浏览器控制台日志 |
| 获取网络请求记录 |
| 在页面上下文执行 JavaScript |
🗂️ 标签页管理
工具 | 描述 |
| 管理标签页(列出、创建、关闭、切换) |
| 调整浏览器窗口尺寸 |
💬 使用场景
在支持 MCP 的 AI 工具中,用自然语言下达指令:
网页自动化:
"打开 https://example.com,填写登录表单,用户名是 demo@example.com,密码是 demo123,然后点击登录"
数据抓取:
"访问 https://news.ycombinator.com,提取前 10 条新闻的标题和链接"
自动化测试:
"打开我们的产品页面,点击购买按钮,填写测试数据,截图结账页面"
网页调试:
"执行 console.log(document.title),然后显示控制台消息和最近的网络请求"
📡 API 调用
通过 MCP 客户端调用
所有工具都通过 MCP 协议自动暴露,AI 会根据自然语言自动选择和调用。
直接调用(编程方式)
如果你想在代码中直接使用,可以通过 WebSocket 与 MCP 服务器通信:
const WebSocket = require('ws');
// 连接到 MCP 服务器
const ws = new WebSocket('ws://localhost:9222');
ws.on('open', () => {
// 调用浏览器工具
const request = {
type: 'navigate',
url: 'https://github.com'
};
ws.send(JSON.stringify(request));
});
ws.on('message', (data) => {
const response = JSON.parse(data);
console.log('结果:', response);
});工具参数示例
{
"url": "https://example.com"
}{
"element": "button#submit",
"ref": "12345",
"button": "left",
"modifiers": ["Control"]
}{
"element": "input[name='username']",
"ref": "67890",
"text": "demo@example.com",
"submit": false
}{
"function": "() => document.title"
}{
"fields": [
{
"name": "用户名",
"type": "textbox",
"ref": "12345",
"value": "demo@example.com"
},
{
"name": "密码",
"type": "textbox",
"ref": "67890",
"value": "demo123"
}
]
}更多工具参数请参考 API 文档(开发中)。
📁 项目结构
BrowserPilot/
├── .cursor/
│ └── mcp.json # Cursor MCP 配置
├── chrome-extension/ # 浏览器扩展源码
│ ├── background/
│ │ ├── service-worker.js # 主服务 Worker
│ │ ├── mcp-client.js # WebSocket 客户端
│ │ └── tools/ # 工具实现
│ │ ├── navigation.js # 导航工具
│ │ ├── interaction.js# 交互工具
│ │ ├── snapshot.js # 快照工具
│ │ ├── debug.js # 调试工具
│ │ ├── tabs.js # 标签页工具
│ │ └── registry.js # 工具注册表
│ ├── content/ # 内容脚本
│ ├── injected/ # 页面注入脚本
│ └── ui/ # 弹出界面
├── simple-server/
│ ├── server.js # MCP 服务器
│ └── update-checker.js # 更新检查器
├── scripts/
│ └── create-release.js # 构建脚本
├── dist/ # 构建输出
│ ├── MCP-Browser-Win.exe # Windows 版本
│ ├── MCP-Browser-Mac # macOS 版本
│ └── MCP-Browser-Linux # Linux 版本
├── package.json
└── README.md📖 文档
BUILD_GUIDE.md - 如何构建可执行文件
QUICK_BUILD.md - 快速构建参考
chrome-extension/README.md - 扩展开发文档
🔧 故障排查
MCP 客户端看不到工具?
确认 MCP 服务器正在运行
检查 MCP 配置文件路径和参数
完全重启 MCP 客户端
查看客户端的 MCP 日志
浏览器扩展无法连接?
确保 MCP 服务器正在运行
访问 http://localhost:3000 检查状态
在浏览器扩展管理页面检查扩展控制台
确认 WebSocket URL 为
ws://localhost:9222检查防火墙是否阻止连接
端口被占用?
# Windows
netstat -ano | findstr :9222
taskkill /PID <PID> /F
# Mac/Linux
lsof -i :9222
kill -9 <PID>指令不生效?
先执行
browser_snapshot获取页面结构使用快照中的
ref引用元素尝试更具体的元素描述
检查浏览器控制台是否有错误
🔒 安全说明
✅ 完全本地运行 - 无外部 API 调用
✅ 仅限本地主机 - 所有通信都在 127.0.0.1 上
✅ 无遥测数据 - 不收集或跟踪任何数据
✅ 开源透明 - 完全透明,可审计代码
⚠️ 开发工具 - 不适用于生产环境
最佳实践:
仅在可信网站上使用
执行前检查生成的脚本
不使用时禁用扩展
不要将 WebSocket 端口暴露到公网
🛠️ 开发指南
添加新工具
在
chrome-extension/background/tools/创建工具文件在
chrome-extension/background/tools/registry.js注册在
simple-server/server.js的 TOOLS 数组添加工具定义测试工具功能
运行模式
# 开发模式(带 Web UI)
npm start
# STDIO 模式(供 MCP 客户端使用)
npm run start:stdio
# 构建可执行文件
npm run build构建打包版本
详细构建说明请查看 BUILD_GUIDE.md
# 构建所有平台
npm run build:all
# 构建 Windows
npm run build:win
# 构建 macOS
npm run build:mac
# 构建 Linux
npm run build:linux🤝 贡献
欢迎贡献!你可以这样帮助我们:
🐛 报告 Bug - 提交 Issue 并附上复现步骤
💡 建议功能 - 分享你对改进的想法
📖 改进文档 - 帮助使文档更清晰
🔧 提交 PR - 修复 Bug 或添加功能
🌍 翻译 - 帮助翻译文档到更多语言
🌐 支持的平台
MCP 客户端
✅ Cursor - AI 代码编辑器
✅ Claude Desktop - Anthropic 官方桌面应用
✅ 任何支持 MCP 协议的客户端
浏览器
✅ Chrome - Google Chrome
✅ Edge - Microsoft Edge
✅ Brave - Brave 浏览器
✅ Opera - Opera 浏览器
✅ 其他 Chromium 内核浏览器
🔜 Firefox - 开发中
操作系统
✅ Windows - Windows 10/11
✅ macOS - macOS 10.15+
✅ Linux - Ubuntu 20.04+, Debian, Fedora 等
📊 与其他工具对比
特性 | BrowserPilot | Puppeteer | Playwright | Selenium |
MCP 原生支持 | ✅ | ❌ | ❌ | ❌ |
AI 自然语言控制 | ✅ | ❌ | ❌ | ❌ |
真实浏览器交互 | ✅ | ⚠️ 主要无头 | ⚠️ 两者 | ✅ |
无需编程 | ✅ | ❌ | ❌ | ❌ |
配置复杂度 | 🟢 低 | 🟡 中 | 🟡 中 | 🔴 高 |
多浏览器支持 | 🟡 Chrome 内核 | 🟡 Chromium | ✅ 全部 | ✅ 全部 |
轻量级 | ✅ | ✅ | ❌ | ❌ |
🗺️ 路线图
Firefox 浏览器支持
Safari 浏览器支持(macOS)
录制模式(录制操作序列,稍后重放)
可视化元素选择器
多标签页协调和同步
会话持久化和恢复
浏览器配置文件管理
代理和网络配置
移动端浏览器支持
Docker 容器化部署
插件市场(社区工具)
📜 许可证
MIT License - 详见 LICENSE 文件。
🙏 致谢
Model Context Protocol (MCP) - 协议规范
Cursor - AI 优先的 IDE
Anthropic - Claude 和 MCP 协议
Chrome Extensions API - 扩展平台
WebSocket (ws) - WebSocket 实现
📬 联系与支持
🐛 问题反馈:GitHub Issues 💬 讨论交流:GitHub Discussions ⭐ 点个星:如果觉得有用,请给我们点个星!
Available Tools
17 toolsbrowser_clickC
Click element
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Element reference | |
| button | No | Mouse button | |
| element | Yes | Element description | |
| modifiers | No | ||
| doubleClick | No | Perform double click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but 'Click element' only names the action. It does not disclose that clicking may trigger navigation, page changes, or side effects, nor does it mention waiting behavior, prerequisites, or result of the click. It supplies almost no behavioral context beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two words, so it has no fluff, but it is under-specified rather than efficiently concise. It front-loads nothing of substance beyond repeating the tool name and object. A genuinely effective description would pack at least usage or behavioral guidance into the 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?
For a browser interaction tool with five parameters, no annotations, and no output schema, this description is inadequate. The schema covers parameter names but not when to use the tool, what happens after the click, or how to handle clicks that cause navigation. It leaves the agent to guess important invocation 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?
With 80% schema description coverage, the schema already explains most parameters (ref, button, element, doubleClick). The description adds nothing about how parameters interact, but the high schema coverage means this is acceptable at baseline. It does not compensate for the one parameter without a description (modifiers), but the enum values provide some 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 states a clear verb ('Click') and resource ('element'), so an agent knows the tool performs a click action. However, it does not mention optional behaviors like double-click or button choice, and it does nothing to distinguish itself from sibling interaction tools like browser_hover, so it misses the specificity needed for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage context is provided. The description does not state when clicking is appropriate versus hovering, typing, pressing a key, or filling a form, and it offers no alternatives or exclusions. An agent must 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.
browser_console_messagesC
Get console messages
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. 'Get console messages' only restates the tool's name and offers no information about side effects, whether messages are cleared, whether this requires a loaded page, or what the returned messages look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short phrase with no filler, and it front-loads the operation. It is not verbose, though it is somewhat under-specified; still, for a zero-parameter tool, this level of brevity is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotation, so the description must compensate, but it only says 'Get console messages.' It does not explain return format, when the tool is appropriate, or how it relates to browser_navigate, browser_evaluate, or browser_network_requests. This is insufficient context for reliable agent decision-making.
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 is an empty object with zero parameters, so the schema already fully defines the parameter surface. With 0 params, the description need not add parameter semantics, and the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Get console messages' states a clear verb and resource, and the resource is distinct from sibling tools like browser_network_requests and browser_snapshot. It does not explicitly differentiate itself from potential alternatives such as browser_evaluate, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus sibling browser tools, no exclusions, and no context such as 'use after navigation' or 'use when debugging.' The only implied usage is the tautological 'get console messages when you need console messages,' which is not actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dragC
Drag and drop element
| Name | Required | Description | Default |
|---|---|---|---|
| endRef | Yes | End element reference | |
| startRef | Yes | Start element reference | |
| endElement | Yes | End element description | |
| startElement | Yes | Start element description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of disclosing behavior. It does not mention whether this performs a single composed gesture, whether the drop triggers events, whether the browser waits for transitions, or what side effects may occur. The description simply restates the action without adding meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core action, with no filler words. However, it is under-specified rather than usefully concise: key aspects like the start/end element relationship, reference semantics, and behavior are missing, making the brevity less helpful than it could be.
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 that this is an interactive browser tool with four required parameters, no annotations, and no output schema, the description is far too minimal. An agent would not know from the description how to structure the drag operation, what qualifies as a valid start or end element, or what outcome to expect, so the contextual information is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all four parameters with basic labels such as 'Start element description', 'Start element reference', and their end counterparts, so schema coverage is 100%. The tool description adds no additional parameter meaning, such as how descriptions and references should be paired or what format is expected, 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 states a clear verb action ('drag and drop') and a resource ('element'), which identifies the tool's basic purpose and distinguishes it from sibling tools like click, hover, and type. However, it is still quite terse and does not indicate that the operation involves both a start element and an end element, so it lacks specificity about the drag relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus alternatives such as browser_click, browser_hover, or browser_evaluate. The appropriate use case is only vaguely implied by the phrase 'drag and drop' and no exclusions, prerequisites, or fallback guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluateB
Execute JavaScript in page context. Supports both function form "() => expression" and direct expression "document.title". Returns the evaluation result.
| Name | Required | Description | Default |
|---|---|---|---|
| function | Yes | JavaScript code to execute. Can be a function like "() => document.title" or a direct expression like "document.title". For complex logic, use function form like "() => { const x = 1; return x + 1; }" |
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 mentions that execution happens 'in page context' and that the result is returned, but it fails to disclose potential side effects (e.g., page mutation), support for async expressions, error behavior, or result serialization limits. For arbitrary JS execution, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant filler. It front-loads the core purpose, then immediately provides the two accepted input forms. Every sentence adds value and 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?
Although the tool has only one parameter and no output schema, the description does not explain important execution details: whether promises are awaited, how complex return values are serialized, whether the code can modify the page, or how errors are surfaced. For a JS evaluation tool with no annotations, this leaves an agent uncertain about critical behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description already covers the 'function' parameter thoroughly, including examples of both function and expression forms, giving 100% schema coverage. The tool description repeats that same information and adds little beyond 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 uses a specific verb and resource: 'Execute JavaScript in page context.' It clearly distinguishes itself from all sibling browser tools, which handle navigation, clicks, screenshots, etc., so an agent can immediately tell this is the tool for running JS in the 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 implies that this tool is for executing JavaScript, but it does not explicitly state when to use it over alternatives like browser_snapshot or browser_console_messages. It provides no when-not-to-use guidance or prerequisites, relying on the reader to infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_fill_formB
Fill multiple form fields at once
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Array of form fields to fill |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'fill' without revealing whether the tool submits the form, clears existing values, dispatches events, waits for navigation, or has any side effects. This is a significant gap for a mutating browser action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence with no filler words. The core action and scope are front-loaded, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser automation tool with no annotations and no output schema, the description is too thin. It doesn't mention prerequisites (e.g., must be on a page with a form), return values, error cases, or whether the operation is atomic. An agent lacks enough context to invoke 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 description coverage is 100%, so the schema already documents each property thoroughly. The description adds only a high-level 'multiple form fields at once' statement and no extra detail beyond the schema, which meets the baseline but doesn't elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('fill') and resource ('multiple form fields at once'), clearly distinguishing it from sibling tools like browser_type (single field) and browser_select_option (single dropdown). An agent can immediately tell this is a batch operation for form inputs.
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 batch usage, contrasting with single-field siblings, but there is no explicit guidance on when to choose this over browser_type or how it differs in behavior. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hoverC
Hover over element
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Element reference | |
| element | Yes | Element description |
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 disclosing behavior, but it only restates the action in four words. It does not mention side effects like CSS hover states or UI changes, failure conditions, or whether the pointer remains positioned afterward.
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 free of fluff, but it is more under-specified than concise, providing only a single sentence that states the action. It is usable but lacks the richness expected for a browser automation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter browser tool with no annotations and no output schema, this description is insufficient: it does not explain how to identify the element, when hovering is appropriate, or what observable effect the hover produces. An agent must infer these details from parameter names or sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; however, the schema descriptions ('Element reference', 'Element description') are thin, and the tool description adds no clarification on how to populate or relate the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action, 'Hover over element', with a specific verb and resource. It does not explicitly contrast with sibling tools like browser_click or browser_drag, but 'hover' is a distinct operation, so the purpose is 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 description offers no guidance on when to use hover versus click, drag, or other sibling tools. It does not mention typical use cases such as revealing tooltips or hover states, nor any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_requestsC
Get network requests
| 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 must carry the full burden of behavioral disclosure. 'Get network requests' only implies a read operation and does not explain whether it covers the current page, all tabs, or a session, nor how results are returned or whether any state is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise and front-loaded, with no filler or redundant detail. It is terse, but for the amount of content provided, every word is used 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?
With no annotations, output schema, or parameters, this description is the only source of context. A three-word phrase does not adequately specify what 'network requests' means in this browser context, what the agent should expect as a result, or how the tool relates to sibling browser tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is an empty object, so schema coverage is 100%. With no inputs to document, the baseline of 4 applies; the description does not need to add parameter 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 states the action 'Get' and the resource 'network requests', which is a clear verb+resource pairing. However, it is nearly identical to the tool name, lacks scope (e.g., current page, all tabs, session), and does not explicitly differentiate itself from sibling browser diagnostic tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of browser_console_messages or browser_snapshot. No conditions, prerequisites, or exclusions are provided, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_press_keyC
Press keyboard key
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to press (e.g., Enter, Escape, Tab) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and states only the literal action. It fails to disclose that pressing a key can trigger side effects (e.g., Enter submitting forms, Escape closing dialogs), whether the event targets the focused element, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The four-word description has zero wasted words and is appropriately sized for a single-parameter tool. 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?
Despite being a simple one-parameter tool, the description omits selection-critical context: when to choose this over browser_type, whether the key activates the focused element or the page, and what observable effects to expect after the press. The large 16-tool sibling set increases the risk of confusion.
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% — the key parameter is already documented with examples (Enter, Escape, Tab). The description adds nothing beyond what the schema provides, 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 states a clear verb and resource ('Press keyboard key'), which identifies the core action unambiguously. However, it does not differentiate from siblings like browser_type (text input) or browser_click, leaving the distinction between pressing a key and typing text implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention that browser_type is for entering text, whether the press targets the focused element, or whether this is appropriate for shortcuts and navigation keys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_resizeC
Resize browser window
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Window width in pixels | |
| height | Yes | Window height in pixels |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It only states the primary action and does not mention side effects such as viewport changes, page reloads, or responsive-layout impacts. The agent is left to infer the operational consequences.
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 at six words with no filler or repetition. It is easy to scan and front-loads the action and target resource, though it sacrifices behavioral detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the schema covers the inputs and the description names the target resource. However, with no annotations and no output schema, the description does not fully convey the tool's scope or side effects, making it minimally viable but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters with descriptions and pixel units, so schema coverage is 100%. The tool description adds no parameter meaning beyond what the schema provides, which 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 a specific verb and resource: resize the browser window. It is distinct from the sibling browser tools, which focus on navigation, input, and inspection, so an agent can recognize the intended operation. It stops short of clarifying whether the viewport or the entire OS window is resized, but the core 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 or when an alternative would be more appropriate. The intended use is implied by the name, but no context, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_select_optionB
Select option(s) in dropdown
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Select element reference | |
| values | Yes | Option values to select (can match value, text, or label) | |
| element | Yes | Select element description |
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 disclosure burden. It only states the action without detailing behavior such as handling of multi-select, whether previous selections are cleared, or whether the dropdown must be visible/interactive. This is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler. It communicates the core purpose efficiently and front-loads the verb and object.
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 all three parameters are described in the schema. However, with no annotations and no usage guidance, the description leaves gaps around when to use it and what observable effects to expect, making it minimally viable 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%, so the input schema already documents what each parameter means. The tool description adds no additional meaning beyond the schema, but the schema 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 states a specific action ('Select') and resource ('dropdown'), making the tool's function immediately clear. It is distinct from sibling tools like browser_click or browser_type, though it does not explicitly differentiate itself from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternative browser interaction tools like browser_click, browser_type, or browser_fill_form. The usage context is only implied by the tool's name and description rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotB
Capture page accessibility snapshot
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of disclosing behavior. It does not state whether the operation is read-only, what the return value looks like, whether it is blocking, or what the accessibility snapshot contains. 'Capture' hints at non-mutating behavior but does not confirm it.
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 filler or redundant phrasing. It is front-loaded and 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?
Given no annotations, no output schema, and no parameter structure to rely on, the description leaves too much unspecified. An agent cannot predict the return format, whether the page is modified, or exactly what information the accessibility snapshot will provide. It is sufficient for initial selection but not for confident 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 tool has zero parameters and schema coverage is 100%, so there is nothing for the description to add about parameter meaning. Per the baseline for a no-parameter tool, this is adequate.
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 ('Capture') and names a clear resource ('page accessibility snapshot'). It is distinguishable from browser_take_screenshot by the 'accessibility' qualifier, though it does not explicitly state what the snapshot contains or how it differs beyond that word.
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 like browser_take_screenshot or browser_evaluate. The intended use case is only implied by the phrase 'accessibility snapshot', not stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tabsD
Manage browser tabs
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Tab index (for close/select actions) | |
| action | Yes | Tab action to perform |
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 disclosing behavior. It does not state that closing tabs is destructive, that selecting changes the active tab, that new opens a blank tab, or what list returns. The description is behaviorally 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 short, but shortness here is under-specification rather than effective conciseness. It conveys almost no operational information and does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a multi-action tool, the description is critically incomplete. An agent cannot determine return behavior, side effects, or preconditions, and the tool is not distinguishable from its many siblings based on this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents both parameters, including the action enum and the index description, so the schema covers the semantic baseline. However, the description itself adds no parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Manage browser tabs' is essentially a restatement of the tool name and provides no specific verb or scope. It does not mention the distinct actions (list, new, close, select) or how this tool differs from browser navigation or snapshot tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus browser_navigate, browser_snapshot, or other sibling tools. The description gives no context about tab management being the right choice for opening, closing, switching, or listing tabs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_take_screenshotB
Take screenshot of page or element
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Element reference | |
| type | No | Image format | |
| element | No | Element description | |
| filename | No | Output filename | |
| fullPage | No | Capture full page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It only states the action and does not explain whether the screenshot is returned as data, saved to a file using 'filename', or how 'fullPage' affects capture. There is no mention of side effects, output format, or element selection semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with no wasted words, which is good. However, it is so minimal that it sacrifices useful context, making it more under-specified than 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?
For a tool with five parameters, no annotations, and no output schema, the description is insufficient. It does not explain what the tool returns, whether it saves a file, how to target an element versus a page, or how the sibling browser_snapshot relates to it. An agent would need to open the schema and guess at behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal semantic value by indicating that capture can target 'page or element', which loosely maps to 'fullPage' and 'element'/'ref', but it does not clarify the relationship between 'ref' and 'element' or how 'filename' is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource, 'Take screenshot of page or element', which clearly identifies the tool's function. It is distinct from all sibling browser tools, none of which perform screenshot capture.
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. Notably, browser_snapshot could be confused with it, but the description does not explain that screenshots are for visual capture while snapshots are for accessibility/DOM state. The intended use context is only implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeC
Type text into element
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Element reference | |
| text | Yes | Text to type | |
| slowly | No | Type character by character | |
| submit | No | Submit form after typing | |
| element | Yes | Element description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure, but it only states the literal action. It does not say whether existing element text is replaced or appended, whether the element must already be focused, or what happens when 'submit' is true. There is no contradiction with annotations because none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the core action and target. It contains no filler, though its brevity means some behavioral nuance is sacrificed; it is efficient rather than bloated.
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 fully documented parameters, the minimal description is somewhat usable. However, with no annotations, no output schema, and no guidance on behavior or alternatives, the description leaves important context undisclosed for an agent to call it well.
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 parameters are already self-explanatory in the schema. The description adds no extra semantic detail about parameters, but the baseline score of 3 is appropriate because the schema carries the load.
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 (type) and target (text into element), so an agent understands the basic operation. It is differentiated from navigation, screenshots, and clicking, though it does not explicitly distinguish itself from sibling input tools like browser_fill_form or browser_press_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of alternatives. The description does not mention that browser_fill_form may be better for form-like interactions or that browser_press_key handles key presses, so the agent is left without routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_forD
Wait for condition
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Text to wait for to appear | |
| time | No | Time to wait in seconds | |
| textGone | No | Text to wait for to disappear |
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, and 'Wait for condition' discloses nothing: no blocking semantics, no timeout behavior, no error handling when the condition is never met, and no polling explanation. An agent cannot predict what happens when time and text are combined or when no parameters are supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words is under-specification rather than conciseness. The single sentence fragment does not earn its place because it conveys no actionable information beyond what the tool name already implies.
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 optional parameters, no output schema, and no annotations, the description should clarify behavior with no arguments, how time interacts with text/textGone, and timeout/failure semantics. All of this is absent, leaving a browser automation agent unable to call the tool reliably or interpret its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is individually documented in the schema, which sets the baseline at 3. The description adds no parameter-level meaning beyond what the schema already provides, but it also does not need to compensate for any 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 'Wait for condition' is nearly a restatement of the tool name and adds no specificity about what conditions are supported. The schema reveals three distinct condition types (text appearance, text disappearance, fixed time), but the description leaves all of that implicit. It sits just above a pure tautology because it introduces the vague notion of a 'condition'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like browser_snapshot (for manual polling) or browser_evaluate (for custom wait logic). There is no mention of expected context, exclusions, or conditions under which a sibling tool would be preferable.
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.
17 tool updates
v1.1.0- First observed
browser_click - First observed
browser_console_messages - First observed
browser_drag - First observed
browser_evaluate - First observed
browser_fill_form - First observed
browser_hover - First observed
browser_navigate - First observed
browser_navigate_back - First observed
browser_network_requests - First observed
browser_press_key - First observed
browser_resize - First observed
browser_select_option - First observed
browser_snapshot - First observed
browser_tabs - First observed
browser_take_screenshot - First observed
browser_type - First observed
browser_wait_for
TDQS
Scored across 17 tools
Each tool targets a distinct browser action or data source: navigation, input, state capture, console/network inspection, tab management, and waiting. Even similar-looking tools like browser_snapshot and browser_take_screenshot are clearly separated by accessibility tree vs visual image.
All tools share a consistent browser_ prefix and snake_case style, which makes the set feel uniform. However, naming mixes verb-phrases like browser_navigate and browser_click with noun-phrases like browser_console_messages, browser_snapshot, and browser_tabs.
At 17 tools, the set is slightly above the typical 3-15 sweet spot, but the breadth is justified by browser automation needs: navigation, mouse/keyboard input, form handling, screenshots, network/console inspection, and tab management all require separate primitives.
The tool surface covers the core browser automation lifecycle well: navigate, interact, inspect, wait, and manage tabs. Obvious gaps like browser_reload, browser_close, or cookie management are minor because they can be worked around with browser_evaluate or the existing tab management tools.
Maintenance
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
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables real browser automation as tools in Cursor, Claude Desktop, Windsurf, and any MCP-compatible client, allowing AI agents to interact with web pages through natural language.5 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control your webpage via MCP, allowing navigation, screenshots, clicks, content reading, and more through a Chrome extension.20MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to control a Chrome browser through natural language, supporting navigation, interaction, tab management, and data extraction.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control your existing Chrome browser via MCP, using your logged-in sessions for automation on authenticated sites. Provides high-level browser tools plus raw CDP and Chrome API access.MIT