chrome-bridge-mcp
Allows AI agents to perform Google searches and engage in Google AI Mode multi-turn conversations through a real Chrome browser session, leveraging Chrome DevTools Protocol for automation.
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., "@chrome-bridge-mcpSearch Google for 'MCP server overview'"
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.
chrome-bridge-mcp
本地 MCP 桥接服务,连接 Codex / Claude Code 与真实 Chrome 会话,让 AI agent 能通过 Chrome 浏览器使用 Google Search 和 Google AI。
它通过 127.0.0.1:9222 上的 Chrome DevTools Protocol 连接 Chrome。登录、验证码、授权确认等动作仍然在真实 Chrome 里完成;AI 助理负责打开或复用任务标签页、执行 Google 搜索、读取当前页面、读取选中文本,以及运行少量页面内 JavaScript。
启动 Chrome
使用独立 Chrome profile,让调试端口和日常浏览器配置隔离:
$HOME/ai/chrome-bridge-mcp/scripts/start-chrome-bridge-profile.sh可以在这个 Chrome 窗口里正常登录、验证和授权。
profile 路径:
~/runtime/.chrome-bridge-mcp/ChromeProfileRelated MCP server: BrowserPilot MCP
运行 MCP Server
本项目没有 npm 依赖。使用 Node.js 22+ 运行:
node $HOME/ai/chrome-bridge-mcp/src/server.js在当前 Codex 环境里,即使 Homebrew Node 损坏,也可以使用 Codex bundled Node:
$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
$HOME/ai/chrome-bridge-mcp/src/server.jsClaude Code
添加到 Claude Code 用户级配置,让所有 Claude Code 工作目录都可用:
claude mcp add -s user --transport stdio chrome-bridge \
--env CHROME_BRIDGE_PORT=9222 \
--env CHROME_BRIDGE_AUTO_START=1 \
--env CHROME_BRIDGE_RUNTIME=$HOME/runtime/.chrome-bridge-mcp \
-- $HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
$HOME/ai/chrome-bridge-mcp/src/server.js然后检查 MCP 连接:
/mcp本机还提供了 Claude Code 自定义命令:
/google命令文件位于 ~/.claude/commands/google.md,用于提醒 Claude 使用 chrome-bridge 工具执行 Google 搜索、Google AI 多轮讨论、#g 前缀、当前 Google task tab 复用和 #g end 关闭规则。
Codex
已在本机 Codex 配置中加入:
[mcp_servers.chrome_bridge]
command = "$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node"
args = ["$HOME/ai/chrome-bridge-mcp/src/server.js"]
startup_timeout_sec = 30
[mcp_servers.chrome_bridge.env]
CHROME_BRIDGE_PORT = "9222"
CHROME_BRIDGE_AUTO_START = "1"
CHROME_BRIDGE_RUNTIME = "$HOME/runtime/.chrome-bridge-mcp"Codex 需要新开会话或重启后才会加载新 MCP server。加载后可以直接在对话里说:
用 Google AI 多轮讨论“……”,先问第一轮,然后根据回答继续追问。助理应优先使用会话层工具 start_google_ai_session、continue_google_ai_session、read_google_ai_session 和 end_google_ai_session,而不是让你手工复制粘贴浏览器内容。
pi / raft pi
本机 pi 使用全局 extension 接入 Google 能力。真实配置目录放在:
~/runtime/.pi/agent为了兼容 pi 默认读取 ~/.pi/agent 的行为,本机建立了软链接:
~/.pi -> ~/runtime/.piextension 文件:
~/runtime/.pi/agent/extensions/chrome-bridge-google.ts它把本项目 CLI 包装成 pi 工具:
google_search:真实 Chrome 中搜索 Google,并返回结构化结果;同一件事优先复用当前 Google task tabgoogle_ai_start:新开 Google AI Mode 会话,返回sessionIdgoogle_ai_continue:继续追问;可省略sessionId,默认使用当前活跃会话google_ai_read:读取已有 Google AI 会话;可省略sessionIdgoogle_ai_end:结束当前或指定会话,导出 Markdown,并默认关闭对应 Chrome 标签页google_ai_export:导出 Google AI 会话 Markdown
底层 CLI 可直接测试:
$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
$HOME/ai/chrome-bridge-mcp/bin/chrome-bridge-cli.js \
search "Chrome DevTools Protocol" --max-results 3raft 的 pi runtime 通过 pi SDK 创建 session,会读取同一个 pi agent 目录。新启动的 raft pi session 应能看到这些工具;如果已有 pi session 在配置前已经启动,需要重开该 session。
部署约定
开发文件留在项目目录下。运行态统一使用本机 AI runtime 约定:
应用运行态根目录:
~/runtime/.chrome-bridge-mcpChrome profile:
~/runtime/.chrome-bridge-mcp/ChromeProfile日志:
~/runtime/.chrome-bridge-mcp/logs可选 LaunchAgent 描述文件:
~/Library/LaunchAgents/com.chrome-bridge.mcp.plist
多台 Mac 推广部署见 docs/MULTI_MACHINE_DEPLOYMENT.md。常用安装脚本:
scripts/install-claude-mcp.sh:安装 Claude Code user-scope MCP 和/google命令。scripts/install-pi-extension.sh:安装 pi/raft pi extension。scripts/print-codex-mcp-config.sh:打印当前机器适用的 Codex MCP 配置片段。scripts/install-launch-agent.sh:安装当前用户的 Chrome profile LaunchAgent。
安全说明
独立 Chrome profile:使用
~/runtime/.chrome-bridge-mcp/ChromeProfile,不操作用户主 profile,不影响日常浏览器数据。仅绑定本地:Chrome debug port 只绑定
127.0.0.1,不暴露到局域网或公网。不提交敏感数据:不提交 cookie、profile、logs、agent MEMORY 到版本库。
人工介入边界:
needsUser标记和登录墙、验证码、条款同意属于显式人工介入边界,工具不会自动跳过。浏览器依赖:Google Search / Google AI 使用真实浏览器,会受账号状态、页面变化、服务条款和地区网络影响。
工具
chrome_status:检查 Chrome CDP 是否可连接list_tabs:列出 Chrome 标签页open_url:在新标签页打开 URLgoogle_search:在当前 Google task tab 中打开 Google 搜索;没有可复用 tab 时才新开search_google_and_extract:从 AI 助理输入搜索词,打开或复用 Google task tab,并返回结构化结果;遇到登录/验证码时返回needsUser=true和tabIdopen_google_ai:打开 Google AI Mode,提交第一轮问题,并读取可见对话文本google_ai_ask:在已有 Google AI Mode 标签页中提交追问,并读取更新后的对话文本google_ai_read:读取 Google AI Mode 当前可见对话状态start_google_ai_session:从 Codex/Claude 对话入口开始一个持久化 Google AI 会话continue_google_ai_session:向已有 Google AI 会话继续追问;未传sessionId时使用当前活跃会话read_google_ai_session:读取已有 Google AI 会话状态;未传sessionId时使用当前活跃会话end_google_ai_session:结束会话,导出 Markdown,并默认关闭 bridge 创建的 Google AI 标签页export_google_ai_session:导出 Google AI 会话记录到 Markdownget_current_page:提取页面标题、URL、选中文本和可见正文get_selection:提取当前选中文本extract_google_results:从 Google 搜索结果页结构化抽取标题、链接和摘要detect_human_intervention:检测页面是否需要登录、验证码、授权或人工处理fill_text:向输入框、textarea 或 contenteditable 元素填入文本click_selector:点击指定 CSS selector 对应的元素ask_ai_page:向通用 AI 网页提交问题并读取回答;遇到登录/验证码时返回needsUser=truerun_js:在页面中运行 JavaScript 表达式wait_for_user:让 AI 暂停,等待人类在 Chrome 中完成登录、验证码或授权
自动化测试
测试计划见 docs/TEST_PLAN.md。
单元测试:
$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
--test $HOME/ai/chrome-bridge-mcp/test/unit.test.js白盒覆盖率测试:
cd $HOME/ai/chrome-bridge-mcp
$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
--test \
--experimental-test-coverage \
--test-coverage-include=src/server.js \
--test-coverage-lines=80 \
--test-coverage-functions=80 \
--test-coverage-branches=70 \
./test/unit.test.jsE2E 测试框架位于 test/run-e2e.js。默认测试使用本地 data: 页面,不依赖外网,不需要登录。
$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
$HOME/ai/chrome-bridge-mcp/test/run-e2e.js测试会自动启动独立 Chrome,运行 MCP 协议和 CDP 集成用例,然后输出报告到:
$HOME/ai/chrome-bridge-mcp/reports可选 Google 外网测试:
RUN_GOOGLE_TEST=1 $HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
$HOME/ai/chrome-bridge-mcp/test/run-e2e.js真实 Google 人工验收:
$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
$HOME/ai/chrome-bridge-mcp/scripts/manual-google-flow.js \
"Chrome DevTools Protocol"这个验收脚本会使用真实运行态:
~/runtime/.chrome-bridge-mcp/ChromeProfile流程是:脚本从命令行接收搜索词,调用 MCP 工具打开 Google 并抽取结果。如果 Google 要求登录、验证码、同意条款或人工确认,脚本会停住;你在打开的 Chrome 窗口里处理完成后,回到终端按 Enter,脚本继续读取同一个标签页。报告会写入:
$HOME/ai/chrome-bridge-mcp/reports/manual-google-*.json
$HOME/ai/chrome-bridge-mcp/reports/manual-google-*.md真实 Google AI 多轮讨论:
$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
$HOME/ai/chrome-bridge-mcp/scripts/manual-google-ai-chat.js \
"用中文解释 Chrome DevTools Protocol,并给出三个适合自动化测试的应用场景"脚本会打开真实 google.com 的 AI Mode。之后你可以在终端继续输入追问;如果页面要求登录、验证码、同意条款,或者需要你手动点进输入框,脚本会停住,等你在 Chrome 里处理后继续。报告会写入:
$HOME/ai/chrome-bridge-mcp/reports/manual-google-ai-chat-*.json
$HOME/ai/chrome-bridge-mcp/reports/manual-google-ai-chat-*.md通过 Codex/Claude 界面和 Google AI 对话
面向日常使用时,不需要你记住标签页 ID。助理应该使用会话层工具:
start_google_ai_session -> continue_google_ai_session -> read_google_ai_session -> end_google_ai_session你可以直接在 Codex 或 Claude Code 里说:
开一个 Google AI 会话,我们讨论“如何设计个人 AI 助理和 Chrome 的协作工作流”。我会逐轮追问,你负责把我的话转给 Google AI,再把它的回答带回来。在 Codex 中不要使用 @ 作为前缀,因为它会触发 Codex 的文件/插件选择器。试行前缀改为 #g:
#g new <话题> 新开 Google AI 会话
#g <内容> 继续当前 Google AI 会话;没有会话则自动新开
#g 查看当前 Google AI 会话提示
#g read 读取当前会话状态
#g export 导出当前会话记录
#g end 导出当前会话记录并关闭对应 Chrome 标签页示例:
#g new 我们讨论一下 Chrome bridge 的交互层设计
#g 第一版先不要做 UI,只做 CLI/MCP,会少哪些能力?
#g 把方案分成本周能做和以后再做如果页面要求登录、验证码或同意条款,助理会告诉你去真实 Chrome 里处理。处理完后,你在 Codex/Claude 里说“继续”,助理继续同一个 Google AI 会话。
示例提示词
使用 chrome_status 和 list_tabs,然后总结当前 Chrome 页面。用 search_google_and_extract 搜索“Claude Code MCP docs”;如果出现登录或验证码就等我处理,然后继续读取结果页。读取我在 Chrome 中选中的文字,并整理成简洁的问题摘要。Development
Directory Structure
Runtime root:
~/runtime/.chrome-bridge-mcpChrome profile:
~/runtime/.chrome-bridge-mcp/ChromeProfileLogs:
~/runtime/.chrome-bridge-mcp/logsReports:
reports/
Testing
# Unit tests
node --test test/unit.test.js
# E2E tests (default)
node test/run-e2e.js
# E2E tests with live Google search
RUN_GOOGLE_TEST=1 node test/run-e2e.js
# Manual Google flow
node scripts/manual-google-flow.js
# Manual Google AI chat
node scripts/manual-google-ai-chat.jsCoverage targets: line 80%, function 80%, branch 70%.
Latest test results: unit 32/32 (100%), E2E 13/13 (100%).
Multi-Machine Deployment
See docs/MULTI_MACHINE_DEPLOYMENT.md for deploying across multiple machines.
AI Client Integration
Claude Code:
scripts/install-claude-mcp.sh— registers MCP at user scopeCodex:
scripts/print-codex-mcp-config.sh— prints config for~/.codex/config.tomlPi:
scripts/install-pi-extension.sh— deploys extension to Pi runtime
Available Tools
22 toolsask_ai_pageA
Submit a prompt to a generic browser AI page and read the response. Login/CAPTCHA pages return needsUser=true.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Prompt to submit. | |
| inputSelector | Yes | CSS selector for the prompt input. | |
| submitSelector | Yes | CSS selector for the submit button. | |
| responseSelector | Yes | CSS selector for the answer container. | |
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. | |
| timeoutMs | No | Maximum time to wait for the response. | |
| blockedSelectors | No | Selectors that mean human intervention is needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that login/CAPTCHA pages return needsUser=true, a key behavioral trait. However, it does not explain other behaviors like whether the tool modifies the page or waits for a response beyond timeoutMs.
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 packed with essential information: core function and a critical conditional return behavior. No fluff, 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 7 parameters (4 required) and no output schema, the description is minimal. It fails to explain the normal response format (likely text from responseSelector) or what happens on success vs failure beyond needsUser. More detail is needed for a tool with this complexity.
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% (all 7 parameters have descriptions). The tool description adds no additional meaning beyond the schema, so 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 'Submit a prompt to a generic browser AI page and read the response.' This distinguishes it from sibling tools like google_ai_ask, which is specific to Google AI. The mention of login/CAPTCHA pages adds specific use-case differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for generic AI pages and mentions login/CAPTCHA conditions, but does not explicitly state when to use this tool versus alternatives like google_ai_ask, fill_text, or detect_human_intervention. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chrome_statusB
Check whether a Chrome DevTools Protocol endpoint is reachable.
| 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 disclose all behavioral traits. It only says it 'checks' reachability, but omits details like timeout behavior, error handling, whether it is a read-only operation, or if it requires any network access. The agent lacks key information to anticipate outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly communicates the tool's function. Every word is necessary and there is 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?
While the tool is simple with no parameters, the description lacks details about the return value or outcome. With no output schema, the description should clarify what the agent can expect (e.g., boolean, error codes). This makes it feel incomplete for an agent making decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the input schema is fully covered. The description does not need to explain parameters, and the baseline score is 4. No additional parameter semantics are necessary.
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: checking reachability of a Chrome DevTools Protocol endpoint. It is a specific verb and resource, and it distinguishes itself from sibling tools that perform actions on pages rather than diagnostics.
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 prerequisites, typical use cases, or when not to use it, leaving the agent to infer its necessity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
click_selectorB
Click an element by CSS selector.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element to click. | |
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It fails to indicate what happens on failure (e.g., element not found), whether it waits, scrolls, or has 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?
Single sentence is concise and front-loaded with the action. Could potentially include more context without being verbose.
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 output schema, the description should provide more behavioral context. It covers the basic purpose but lacks details needed for reliable invocation in a browser environment.
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 clear descriptions for both parameters. Description adds no additional meaning beyond the schema, so 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 'Click an element by CSS selector' clearly identifies the verb (click) and resource (element by CSS selector). It distinguishes from sibling tools like fill_text or run_js.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like run_js for clicking, or prerequisites. The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_google_ai_sessionA
Send a follow-up message to a persisted Google AI conversation session and return the updated visible conversation. Defaults to the active session.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session id returned by start_google_ai_session. Defaults to the active session. | |
| message | Yes | Follow-up message to send to Google AI. | |
| timeoutMs | No | Maximum time to wait for the conversation to change. | |
| maxChars | No | Maximum visible conversation text characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It mentions returning updated conversation and defaulting to active session, but omits key details: it modifies session state, may consume API quota, and likely requires prior session creation. No mention of side effects, error conditions, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the essential information without extra words. It is front-loaded with the core action and resource.
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?
While the tool is simple and the schema covers parameters, the description misses behavioral context such as error handling, side effects (e.g., modifying session state), and return format details. Without an output schema, the description should clarify what 'updated visible conversation' entails, but it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 4 parameters. The description adds minimal extra value: 'Defaults to the active session' for sessionId is redundant with the schema. No additional meaning beyond schema 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 ('Send a follow-up message'), the resource ('persisted Google AI conversation session'), and the return value ('updated visible conversation'). It distinctly differentiates from sibling tools like 'start_google_ai_session' and 'end_google_ai_session'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after starting a session with 'Defaults to the active session', providing clear context. However, it lacks explicit exclusions or when-not-to-use guidance, and does not mention alternatives like 'google_ai_ask' for non-persistent conversations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_human_interventionB
Detect whether the current page appears to require login, CAPTCHA, consent, or manual verification.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. | |
| readySelector | No | Selector that means the page is ready for automation. | |
| blockedSelectors | No | Selectors that mean human intervention is needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states detection of intervention types but does not explain the detection mechanism (e.g., use of selectors), potential fallibility, or side effects. This leaves uncertainty about how the tool operates and what it guarantees.
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 of 15 words, which is appropriately sized for a simple tool. However, it omits important behavioral details, slightly reducing its effectiveness. Still, it earns a 4 for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description should clarify the return value (e.g., boolean, object) and edge cases. It does not, leaving the agent without critical information to interpret results. For a tool with 3 parameters and no annotations, this 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 adds no additional meaning beyond the schema—it does not explain how parameters like 'readySelector' or 'blockedSelectors' are used in detection. The value is sufficient but not enhanced.
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 detects whether a page requires login, CAPTCHA, consent, or manual verification, using a specific verb ('detect') and resource ('current page'). It distinguishes itself from siblings like 'wait_for_user' and 'chrome_status' by focusing on page intervention detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking page intervention status, but it provides no explicit guidance on when to use it versus alternatives like 'wait_for_user' or 'chrome_status'. It lacks when-not-to-use or prerequisite information, making it average.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_google_ai_sessionB
End a Google AI conversation session: export it, close the Chrome tab, and clear the active session if it matches.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session id returned by start_google_ai_session. Defaults to the active session. | |
| closeTab | No | Whether to close the Chrome tab. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes main actions but lacks disclosure of destructive behavior (closing tab may lose unsaved data) or side effects. No annotations exist to compensate. The 'if it matches' condition is vague.
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?
Single sentence is concise and front-loaded with purpose. Could be slightly clearer with separate actions, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with two optional params and no output schema. Missing edge cases (session mismatch, error handling) and doesn't restate defaults from 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 covers both parameters fully (100%), so baseline is 3. Description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool ends a Google AI session by exporting, closing the tab, and clearing the active session if it matches. It distinguishes from sibling tools like start_google_ai_session and continue_google_ai_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like continue_google_ai_session or export_google_ai_session. Does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_google_ai_sessionA
Export a persisted Google AI conversation session to Markdown in the project reports directory. Defaults to the active session.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session id returned by start_google_ai_session. Defaults to the active session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It fails to mention whether the directory is created automatically, what the filename is, whether overwrites occur, what is returned (e.g., path), or error handling for missing session. The phrase 'persisted session' is ambiguous regarding state requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It efficiently conveys the core action, target format, and default behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 optional param, no output schema), the description is partially complete but lacks behavioral details like success indication, output handling, and failure modes. It minimally covers the essential action but leaves agent guessing about post-export 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?
Schema description coverage is 100% for the single parameter sessionId. The description adds no new information beyond the schema's 'Defaults to the active session.' Baseline of 3 is appropriate as schema covers the parameter fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'export' and the resource 'persisted Google AI conversation session' to Markdown format in a specific directory. It differentiates from sibling tools like read_google_ai_session and google_ai_read by specifying the output format and destination.
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 by noting it defaults to the active session, providing context on when to omit sessionId. However, it does not explicitly state when to use this tool versus alternatives (e.g., read_google_ai_session) or what prerequisites exist (e.g., session must be persisted).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_google_resultsA
Extract structured organic search results from a Google search results page.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. | |
| maxResults | No | Maximum number of results to return. |
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. It states the core behavior but omits details like read-only nature, required permissions, or behavior when no results are present. For a straightforward extraction tool, this is a minimal but acceptable disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 10 words, no wasted language, and front-loads the action. Extremely 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?
Without an output schema, the description could explain what 'structured' results include (e.g., titles, links, snippets). It is adequate for a simple tool but leaves some ambiguity about the output format.
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?
Input schema coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond the schema, 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 verb 'extract' and the resource 'structured organic search results from a Google search results page'. It distinguishes from siblings like 'search_google_and_extract' which combines search and extraction, and 'google_search' which performs the search only.
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 on an already loaded Google search results page, but does not explicitly contrast with sibling tools or provide when-to-use guidance. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_textB
Fill an input, textarea, or contenteditable element.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the editable element. | |
| text | Yes | Text to fill. | |
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior but only says 'Fill'. It does not explain whether existing text is cleared, whether it supports paste, or error handling (e.g., if element is not found). This lack of detail reduces transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, to the point, with no extraneous words. Efficient and clear.
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 output schema and no annotations, the description lacks context on behavior (e.g., does it wait for element? is it synchronous?). It is too minimal for a tool that interacts with the page.
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 baseline is 3. The description does not add meaning beyond what the schema provides for 'selector', 'text', and 'tabId'. No enums or nested objects, so minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fill' and specifies the target types: input, textarea, or contenteditable element. It precisely identifies the action and resource, distinguishing it from sibling tools like click_selector (clicking) or get_current_page (reading).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as click_selector or run_js. There are no prerequisites or context for when not to use it (e.g., disabled elements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_pageB
Extract title, URL, selected text, and visible page text from a Chrome tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. | |
| maxChars | No | Maximum body text characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It lacks details on behavior when tab not found, page not loaded, permissions required, output format, or error handling. Basic extraction is stated but not behavioral nuances.
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?
Single sentence, front-loaded with key outputs, no wasted words. Efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple extraction tool with optional params and no output schema. Could be improved by describing return format, error scenarios, or distinguishing from similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and parameter descriptions in schema are clear. The description does not add extra meaning beyond the schema, so 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 tool extracts title, URL, selected text, and visible page text from a Chrome tab. It specifies the resource (Chrome tab) and action (extract), and distinguishes it from sibling tools like get_selection which only gets selected text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_selection or read_google_ai_session. No prerequisites or context for usage are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selectionC
Return the selected text from a Chrome tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the basic function. No annotations are provided, and the description fails to mention whether the tool is read-only, if it requires the page to have focus, or any 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 very short and concise, with no wasted words. However, it is overly terse and lacks important details, making it less informative 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 the tool's low complexity and full schema coverage, the description provides the minimum viable information. It explains the purpose but does not address return format or any constraints, leaving some 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%, with one parameter fully described in the schema. The description adds no additional semantic value beyond the schema's description of the optional tabId and its default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns the selected text from a Chrome tab, using the specific verb 'return' and specifying the resource. It distinguishes itself from sibling tools that perform different actions like clicking or filling text, though it could explicitly mention the context of page selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as 'read_google_ai_session' or 'get_current_page'. There is no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ai_askB
Send a follow-up prompt to an existing Google AI Mode tab and read the updated conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Follow-up prompt to send. | |
| tabId | No | Google AI Mode tab id. Defaults to the first page tab. | |
| timeoutMs | No | Maximum time to wait for the conversation to change. | |
| maxChars | No | Maximum visible conversation text characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions both sending a prompt and reading the conversation, but does not disclose details like side effects, waiting behavior, or required permissions.
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, clear sentence with no extraneous words. It efficiently conveys the primary function.
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 output schema and no annotations, the description should provide more detail on return values, behavior (e.g., does it wait for completion?), and the meaning of 'read the updated conversation.' It is insufficient for an AI agent to fully understand the tool's effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the tool already documents all parameters. The description adds minor context ('follow-up', 'existing') but no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (send a follow-up prompt) and resource (existing Google AI Mode tab) with a specific verb. However, it does not explicitly distinguish from sibling tools like continue_google_ai_session, which may serve a similar 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?
No guidance on when to use this tool versus alternatives such as ask_ai_page or continue_google_ai_session. The description lacks context for prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ai_readA
Read visible text and detected state from a Google AI Mode tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Google AI Mode tab id. Defaults to the first page tab. | |
| maxChars | No | Maximum visible conversation text characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. 'Read' implies non-destructive behavior, but it does not disclose side effects, required permissions, or error scenarios. Minimal transparency beyond the stated 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?
Single sentence that is front-loaded and contains no extraneous information. Every word is necessary and contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description is adequate but leaves 'detected state' undefined. Could clarify what state includes or any limitations, but not strictly necessary. Sibling tools add some 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 covers 100% of parameters with adequate descriptions. The tool description adds no extra meaning beyond what the schema already provides. Baseline score of 3 is appropriate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool reads visible text and detected state from a Google AI Mode tab. This distinguishes it from siblings like ask_ai_page (which sends a question) and read_google_ai_session (which likely reads session data). Verb+resource is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. With sibling tools like ask_ai_page, google_ai_ask, and read_google_ai_session, an agent lacks direction on which to choose. Missing explicit 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.
google_searchC
Open a Google search query in Chrome.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only says 'Open a Google search query in Chrome.' It does not disclose whether a new tab is opened, if the tool waits for page load, or any side effects, leaving the agent uncertain about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it could be slightly more informative without being verbose, e.g., specifying whether it opens in the current tab or new tab.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a single parameter, the description is minimally complete but lacks important context about the tool's behavior (e.g., return value, side effects, prerequisites). It fails to fully inform an AI agent about how to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the single parameter 'query' with a description. The tool description adds no additional parameter guidance beyond the schema, so it meets the baseline for a fully covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (open), resource (Google search query), and context (in Chrome). It distinguishes from siblings like search_google_and_extract by focusing on 'open' rather than extracting results.
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 like search_google_and_extract or google_ai_ask. There is no mention of prerequisites, limitations, or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tabsB
List open Chrome tabs exposed by the DevTools endpoint.
| 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 full burden. It lacks details on side effects, required permissions, or output format, leaving critical behavioral traits undisclosed.
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, clear sentence without waste. It could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool, the description is adequate but lacks detail on the output format (e.g., list of URLs or titles), which may hinder the agent's ability to process results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, schema coverage is 100%. The description adds no param info, but the baseline is 4 per rules for no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (list) and resource (open Chrome tabs), and mentions the endpoint (DevTools), making it distinct from siblings like get_current_page which gets only the current 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?
No usage guidance is provided; the description does not indicate when to use this tool versus alternatives like get_current_page or run_js, nor does it mention any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_google_aiC
Open Google AI Mode with an initial prompt and read the visible AI conversation state.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Initial prompt for Google AI Mode. | |
| waitMs | No | Milliseconds to wait after opening Google AI Mode. | |
| maxChars | No | Maximum visible conversation text characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses it opens and reads state, but does not mention side effects, permissions, or whether it is destructive. The behavior beyond the basic action is opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and concise, containing no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no annotations, and no output schema, the description is too brief. It does not explain what the return value looks like or provide enough context for an agent to use it effectively without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add meaning beyond what the schema provides for 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 clearly states the tool opens Google AI Mode with an initial prompt and reads the state. However, it does not differentiate from sibling tools like 'start_google_ai_session' or 'google_ai_ask', which may have overlapping functionality.
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. The description does not mention prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_urlB
Open a URL in a new Chrome tab.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to open. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is straightforward but lacks details beyond the basic action. It does not explain behavior for invalid URLs, whether the tab opens in the foreground, or any side effects. Since no annotations exist, the description should ideally provide more 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 a single sentence with no extraneous words, achieving high conciseness. However, it could be slightly more informative without sacrificing 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 tool with one parameter and no output schema, the description is minimally sufficient. However, it lacks details about URL format or behavior that could be important for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'url' described as 'URL to open.' The description adds no extra meaning beyond the schema, 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 explicitly states the action 'Open' and the resource 'a URL in a new Chrome tab', leaving no ambiguity about the tool's function. It clearly distinguishes from sibling tools like list_tabs or click_selector.
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 chrome_status or get_current_page. There is no mention of prerequisites, context, or restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_google_ai_sessionA
Read persisted metadata and current visible text for a Google AI conversation session. Defaults to the active session.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session id returned by start_google_ai_session. Defaults to the active session. | |
| maxChars | No | Maximum visible conversation text characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior fully. It states it reads data and defaults to active session, but does not mention error handling (e.g., session not found) or any potential side effects. Adequate for a read operation but could be more detailed.
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?
Single sentence with no redundant information. Efficiently conveys the purpose and key behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two optional parameters, but there is no output schema. The description omits what the returned data looks like (e.g., format of metadata and text). A brief mention of return structure 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?
Both parameters are fully described in the schema, so the description adds little new information beyond noting the default for sessionId (which is already in the schema). The description does not compensate for schema coverage since coverage is 100%.
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 reads 'persisted metadata and current visible text' for a Google AI session, and notes it defaults to the active session. This is specific and distinguishes it from sibling tools like start, continue, end.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given. The usage is implied from the description, but alternatives like 'google_ai_read' or 'ask_ai_page' are not mentioned, so the agent lacks comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_jsB
Run JavaScript in a Chrome tab and return the JSON-serializable result.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | JavaScript expression to evaluate. | |
| tabId | No | Optional Chrome tab id. Defaults to the first page tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states it returns a JSON-serializable result, but does not mention side effects, execution context (page or background), or potential risks like page modification or security implications.
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 directly states the purpose and result. It is front-loaded with the core action and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description is adequate but lacks details on error handling (e.g., non-serializable results) or behavior when tabId is invalid. The minimal info is sufficient for basic understanding but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes both parameters well (expression and tabId). The description does not add any additional meaning beyond what is in the schema, thus meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run', the resource 'JavaScript in a Chrome tab', and the outcome 'return the JSON-serializable result'. It distinguishes itself from sibling tools like click_selector and fill_text by specifying arbitrary JS execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as ask_ai_page or get_selection. There is no mention of prerequisites, best practices, or scenarios where another tool 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.
search_google_and_extractA
Search Google in Chrome and return structured results. If login/CAPTCHA is detected, returns needsUser=true with tabId for manual continuation.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. | |
| maxResults | No | Maximum number of results to return. | |
| waitMs | No | Milliseconds to wait after opening Google before extraction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes search, extraction, and handling of login/CAPTCHA, but lacks details on rate limits, permissions, or failure modes.
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 (two sentences) and front-loaded with the primary purpose. Minor room for improvement in structuring usage details.
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 output schema, the description covers core functionality and a key exception, but does not specify the return format beyond 'structured results'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond parameter names; 'query', 'maxResults', and 'waitMs' are self-explanatory.
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 searches Google in Chrome and returns structured results, distinguishing it from sibling tools like 'google_search' and 'extract_google_results'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key condition (login/CAPTCHA detection) but does not explicitly guide when to use this tool versus alternatives like 'google_search' or 'extract_google_results'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_google_ai_sessionB
Start a persisted Google AI Mode conversation session for chat-through-Codex/Claude workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | First user message to send to Google AI. | |
| title | No | Optional human-readable session title. | |
| waitMs | No | Milliseconds to wait after opening Google AI Mode. | |
| maxChars | No | Maximum visible conversation text characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It mentions 'persisted session' but omits critical details like whether the tool opens a new browser tab, requires existing page state, involves user interaction, or has side effects (e.g., navigation). The lack of transparency could lead to misuse.
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 16 words, efficiently conveying the core purpose. It is front-loaded and straightforward. The slight deduction is for the jargon 'chat-through-Codex/Claude workflows', which may be unfamiliar to some agents and could be rephrased for broader clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description is too brief. It fails to explain how this tool relates to siblings like 'open_google_ai' or what typical workflow involves (e.g., must be followed by 'continue_google_ai_session'). This lack of context may lead to incorrect sequencing or 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 covers 100% of parameters with descriptions, so the baseline is 3. The tool description adds no additional parameter semantics; it does not explain how parameters interact or constraints beyond what the schema already provides. Thus, it does not improve or worsen the parameter 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 defines the tool as starting a persisted Google AI Mode conversation session. It distinguishes itself from sibling tools like 'continue_google_ai_session' and 'end_google_ai_session' by specifying 'start' and 'persisted', and it mentions the workflow context ('chat-through-Codex/Claude'), making the purpose 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 explicit guidance on when to use this tool versus alternatives such as 'google_ai_ask' (one-off question) or 'open_google_ai' (just opening the interface). There is no mention of prerequisites or context where this tool is preferred, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_userB
Return instructions for the human to complete login, CAPTCHA, consent, or other browser-only actions.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | What the user should do in Chrome before asking the assistant to continue. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description says 'return instructions' but tool name 'wait_for_user' suggests blocking behavior. Missing disclosure on whether tool waits, how to proceed after user completes, or any timeout/status. This is a significant gap for a tool with no annotations.
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?
Single sentence, front-loaded with purpose, very efficient. However, lacks structure for usage guidelines or behavioral details beyond the core purpose.
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 1 optional parameter and no output schema, the description covers basic purpose and examples. However, it fails to clarify the apparent discrepancy between name (wait) and description (return instructions), leaving behavioral completeness incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. Tool description adds no new semantic meaning beyond the schema. Baseline 3 is appropriate as the schema alone is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states the tool returns instructions for human to complete browser-only actions like login, CAPTCHA, consent. This clearly distinguishes it from sibling automation tools (e.g., click_selector, fill_text) which perform actions directly.
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?
Description implies usage when browser-only actions are needed but does not explicitly state when not to use or mention alternatives. It lacks guidance on distinguishing from related tools like detect_human_intervention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
There are multiple tools for interacting with Google AI (e.g., ask_ai_page, google_ai_ask, open_google_ai) that could confuse an agent about which to use. Also, detect_human_intervention and wait_for_user serve similar purposes. However, most tools for general browser control are distinct.
Most tools follow a verb_noun pattern (e.g., click_selector, open_url), but several start with the noun (e.g., google_ai_ask, google_search) breaking consistency. Additionally, names like search_google_and_extract are overly verbose.
With 22 tools, the server covers both general browser automation and Google AI interactions. This is slightly high but still reasonable; each tool has a clear purpose, though some duplication could be consolidated.
The general browser tools cover core actions like open, click, fill, and get page info. Google AI session management is thorough. However, missing tools for closing tabs, keyboard input, or screenshots create minor gaps.
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
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Web search and page-reading for AI agents. One-click OAuth connect, or a Caesar API key.
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
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools for automation, debugging, and performance analysis.3,288,165Apache 2.0
- AlicenseBqualityCmaintenanceA local browser automation bridge that connects AI agents like Claude to Chromium-based browsers, enabling web navigation, clicking, input, screenshots, and tab management.22GPL 3.0
- AlicenseNot gradedqualityAmaintenanceBridges AI agents to a real browser using a persistent daemon and Chrome extension for driving actual login sessions, cookies, and tabs.MIT
- AlicenseNot gradedqualityDmaintenanceLets AI coding assistants control and inspect a live Chrome browser using full Chrome DevTools capabilities for browser automation, debugging, and performance analysis.3,288,165Apache 2.0
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/deng1986/chrome-bridge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server