browser-mcp
Browser MCP lets AI assistants drive your real, logged-in Chrome to search, read, extract, and automate arbitrary websites through MCP tools.
Connect/check status:
browser_status,site_login_statusfor Zhihu/Xiaohongshu/X/Reddit.Read any webpage:
browser_read,browser_read_page,site_read_pagefor rendered/readability/text/raw/XHR content.Visually interact with pages:
browser_snapshot,browser_click,browser_scroll,browser_type,browser_press,browser_select,browser_dialog.Search platforms with logged-in state: Zhihu, Xiaohongshu, Douyin, Bilibili, X, Reddit, Google, Bing, Sogou.
Retrieve platform content and metadata: notes, posts, videos, comments, user note lists, invitations, Bilibili video/audio download.
Download media with validation and SHA-256: Xiaohongshu and Douyin images/videos, Bilibili video/audio.
Perform social actions with confirmation: like/collect Xiaohongshu notes and Douyin works.
Provides web search using Google, returning titles, target URLs, sites, and content snippets.
Enables searching Reddit posts by relevance, popularity, top, new, or number of comments, and reading post details and comments.
Provides web search using Sogou, returning original website links, titles, sites, and snippets while excluding ads and navigation results.
Allows searching Zhihu for content, answers, articles, or questions; reading question, answer, and article content; and viewing current login account's invitation answers.
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., "@browser-mcpOpen https://news.ycombinator.com and summarize the top 5 stories"
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.
Browser MCP
让你的 AI 真正能搜遍全网。 所有你能登录访问的站点——小红书、知乎、X、抖音、B 站、Reddit 乃至任意登录态站点——内容都能抓下来,还能在后台替你自动化操作:不无头、不逆向、不偷 Cookie。
Browser MCP 是一个本地 MCP server。它让任何支持 MCP 的 AI 助手,在你真实 Chrome 的登录态里:
搜遍并抓取全网任意站点的内容——公开页面、JavaScript 渲染页面,以及登录后才看得到的页面;
在后台 Chrome 窗口里自动化操作——点击、滚动、输入、按键、下拉,全程不切走你当前正在看的页面。
内置搜索 / 爬虫 | Browser MCP |
搜索引擎有的、能公开爬到的才拿得到 | 全网——只要能登录访问,内容都抓得到 |
登录态内容搜不到、进不去 | 用你已登录的状态,直接取 |
大多只能读 | 能点击、滚动、输入、按键、下拉 |
逆向接口,平台一改版就崩 | 驱动真实 UI、读真实渲染 DOM,改版也不怕 |
易被反爬拦截、易泄漏 Cookie | 不逆向、扩展零 |
只适配个别 Agent | 标准 MCP:Codex / Claude Desktop / Cursor / Claude Code…都能接 |
本地运行,数据不出本机:MCP server 与 Chrome 扩展都在你本机运行,只走 localhost(127.0.0.1),
没有额外远程服务器,也不会上传你的会话。
登录态不泄露:扩展不申请
cookies权限,不返回、不持久化 Cookie——登录态只在你自己的 Chrome 里被页面正常使用,从不经 MCP 传出。记录与产物留本地:连接、工具调用与媒体下载状态都保存在本地;下载落盘并记录 SHA-256,不对外上报。
完全合规:不逆向内部接口、不绕过验证码、不窃取 Cookie、不批量抓取——行为就是一个普通登录用户 在浏览。
边界说明:你让 AI 读取的页面内容会作为工具结果返回给 AI 助手(这正是它的用途);若该助手 连接的是模型 API,那部分内容会进入模型服务。但登录态与 Cookie 永不随之外泄——这点与「把内容 交给 AI」是两回事。
你能用它做什么
一句话:只要能登录访问,就都能抓。 你的 AI 可以直接在知乎、小红书、X、抖音、B 站、Reddit 乃至 任意站点里搜索、抓内容、做操作——用你已登录的状态拿到平台本身的数据。
直接在真实平台里搜:知乎、小红书、X、抖音、B 站、Reddit —— 用你已登录的状态,取到平台本身的数据,不靠 agent 内置搜索。
读任意网页:正文、页面可见文本、JavaScript 渲染内容、页面请求返回的数据,以及登录后才看得到的内容。
后台操作网页:在共享登录态的后台 Chrome 窗口里返回截图 + 编号可操作元素,继续点击、滚动、输入、按键、下拉;不切走你当前的页面。
知乎:搜索、问题、回答、文章、邀请回答。
小红书:搜索、账号发布列表、笔记详情、完整评论(断点续抓)、点赞/收藏、图片/视频下载。
抖音:搜索、视频/图文详情、完整评论(断点续抓)、点赞/收藏、图片/视频下载。
B 站:视频搜索、内容 meta、分 P 信息、视频或纯音频下载。
X:帖子搜索、帖子详情。
Reddit:帖子搜索、帖子详情、评论。
搜索:Google、必应、搜狗网页搜索。
当前版本为 0.12.1,版本变更见 CHANGELOG.md。
点赞、收藏、发布、发送、购买、删除等会产生外部影响的最终操作,应在执行前向用户确认。 扩展会使用当前 Chrome Profile 的登录状态访问页面,但不会向 MCP 返回或持久化 Cookie。
Related MCP server: Chrome MCP Server
快速开始
1. 环境要求
Python 3.12+
Google Chrome
2. 安装
方式一:pip(已发布,推荐)
pip install ai-browser-mcp装完即可直接运行 browser-mcp(Chrome 扩展已打包在安装内;扩展目录取 browser_status 返回的
extension_dir,加载方式不变)。要临时开一个指定版本,可用 uvx ai-browser-mcp。
方式二:从源码
git clone https://github.com/ywleeo/browser-mcp.git
cd browser-mcp
uv sync下文中的 /path/to/browser-mcp 表示源码方式下本项目在本机的绝对路径;pip 安装时无需指定路径,
直接使用 browser-mcp 命令即可。
3. 加载 Chrome 扩展
调用
browser_status,获取返回结果中的extension_dir。打开
chrome://extensions。开启“开发者模式”。
点击“加载已解压的扩展程序”。
选择
extension_dir对应的目录。再次调用
browser_status。
连接成功时会返回:
{
"state": "connected",
"connected": true,
"bridge_port": 17880,
"server_version": "0.12.1",
"install_mode": "source",
"project_root": "/path/to/browser-mcp",
"source_commit": "<git-commit>",
"upgrade_check_command": "uv --directory /path/to/browser-mcp run browser-mcp upgrade --check --json",
"upgrade_apply_command": "uv --directory /path/to/browser-mcp run browser-mcp upgrade --apply --json"
}bridge_port 也可能是 17880..17889 中的其他端口。扩展通常只需加载一次,之后会在 MCP
server 启动时自动重新连接。更新扩展后若没有自动生效,请在 chrome://extensions 中点击
“重新加载”。
4. 接入你的 AI 客户端
Codex
codex mcp add browser_mcp -- \
uv --directory /path/to/browser-mcp run browser-mcp或直接写入 Codex MCP 配置:
[mcp_servers.browser_mcp]
command = "uv"
args = [
"--directory",
"/path/to/browser-mcp",
"run",
"browser-mcp",
]首次添加或修改配置后重启 Codex。连接成功后,即可使用下方列出的 MCP 能力。
如需移除配置:codex mcp remove browser_mcp。
Claude Desktop
在 Claude Desktop 配置文件中加入:
{
"mcpServers": {
"browser-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/browser-mcp",
"run",
"browser-mcp"
]
}
}
}保存配置后重启 Claude Desktop。
DeepSeek Harness (dsh)
一条命令即可把该服务注册为 dsh 原生 MCP 工具:
dsh plugin --profile web add "github:ywleeo/browser-mcp#main"重启 dsh web 后,工具以 mcp__browser__* 形式出现(如
mcp__browser__browser_read、mcp__browser__browser_snapshot)。
这是一个"仅配置"的 dsh bundle:它把 @deepseek-ai/dsh-mcp-client 接到该服务,
而服务本身由 uvx 从 PyPI(ai-browser-mcp)拉起,所以只要 PATH 里有 uv
即可,无需本地 checkout。卸载用 dsh plugin --profile web remove "@ywleeo/dsh-browser-mcp"。
5. 直接开用
连接成功后,直接用自然语言告诉你的 AI 助手,例如:
“搜索知乎里关于 MCP 的回答。” “把这篇小红书笔记的全部图片下载到
/绝对路径/素材。” “读取这条抖音视频的内容和评论。” “打开这个网页,根据截图填写搜索框并点击搜索。”
完整的可直接复述的示例见 使用示例。
详细参考
升级
源码安装提供 Agent 可直接执行的安全升级命令。先检查版本与仓库状态:
uv --directory /path/to/browser-mcp run browser-mcp upgrade --check --json确认可以升级后执行:
uv --directory /path/to/browser-mcp run browser-mcp upgrade --apply --json升级器只接受设置了 upstream 的 Git 分支,并遵循以下保护规则:
工作区有未提交或未跟踪文件时拒绝升级。
本地与远端分叉时拒绝升级,不创建隐式 merge commit。
只使用
git pull --ff-only更新源码。使用
uv sync --frozen同步锁定依赖,不修改uv.lock。
--apply 成功并返回 restart_required: true 后,需要让客户端重新连接 MCP server。Codex
中可开启新任务或重连该 MCP;只有客户端无法单独重连时才需要重启客户端。新 MCP server
启动时会刷新扩展 bundle;已加载的 Chrome 扩展根据 build ID 自动重载,无需重新选择扩展目录。
Agent 不需要猜测项目路径。调用 browser_status 后,直接使用返回的
upgrade_check_command 和 upgrade_apply_command 即可。wheel 或其他包管理器安装会返回
install_mode: "package",此时应使用原安装工具升级,而不是修改任意 Git 仓库。
扩展权限
<all_urls>:用于打开调用方明确请求的公开 HTTP(S) 页面,并支持多个站点 adapter;不会 主动遍历浏览历史。debugger:用于捕获页面请求响应,以及在评论流和视觉交互中发送可信浏览器输入事件。tabs、scripting:用于管理隔离的后台标签页并执行项目内置的固定提取脚本。storage、alarms:用于本地配对配置和 MV3 service worker 保活。
扩展没有申请 cookies 权限。登录态只由目标页面在当前 Chrome Profile 内正常使用,Cookie
不会通过 MCP 工具结果返回。
知乎、小红书、抖音、X 和 Reddit 工具会在执行任务前检查当前 Chrome Profile 的平台登录状态:
已登录:继续执行请求。
未登录:停止任务并返回对应平台的登录地址,客户端会提示用户先登录。
无法确认:停止任务,避免在登录状态不明确时继续访问目标内容。
登录状态不做缓存。用户在 Chrome 中完成登录后,可以直接重试原来的请求。
媒体下载
xhs_download 和 douyin_download 支持以下通用参数:
media:选择images、video或all。output_dir:可选的绝对目录;省略时保存到 Browser MCP 数据目录下的downloads。overwrite:默认false,同名文件会自动分配新文件名;只有显式设置后才覆盖。max_file_mb:单文件大小上限,默认 1024 MiB。
下载前会先通过当前 Chrome 登录态读取作品详情,再对页面派生的媒体 URL 执行平台 CDN
白名单、公共地址、逐跳重定向和响应媒体类型校验。文件使用 .part 临时文件流式写入,
完成后原子落盘;结果包含最终路径、字节数、Content-Type 和 SHA-256。
bilibili_download_video 与 bilibili_download_audio 使用同样的绝对目录、覆盖策略和大小
限制。B 站通常返回分离的 DASH 视频/音频轨:视频工具在系统可用 ffmpeg 时以 stream copy
无损合并为 MP4;找不到 ffmpeg 时返回两个独立轨道文件,不伪装成完整视频。纯音频工具
只保存兼容性最高的音轨。分 P 视频可在 URL 中传入 ?p=N 指定页面。
评论完整性与断点续抓
xhs_comments 与 douyin_comments 会滚动作评论流、展开回复,并观察页面自身发起的签名分页
请求。结果中的 complete 表示已观察到所有已发现评论流的终止页;limit_reached 表示因
max_comments 截断;pages_fetched 和 scrolls 可用于诊断采集过程。
热门作品的评论流要滚几分钟,超过任何 MCP 客户端愿意等待的单次调用时长,因此一次调用不追求
抓完:time_budget_seconds(默认 40 秒)到点后采集会挂起而不是失败,返回这一次新抓到的
评论,并给出 session_id。用同一 url 加上该 session_id 再调一次,即从上次停下的滚动位置
继续,不重复已抓过的评论:
budget_exhausted表示本次是预算到点收尾,数据完整可用,只是还没抓完;session_id非空即可续抓,为空表示已经结束(抓完、达到上限或流已到底);collected_total是该会话累计已收集的评论数,配合total可判断进度;每次返回的
items只包含本次新增的评论,调用方自行合并。
挂起的会话会保留一个后台采集窗口,闲置 5 分钟后自动关闭,之后旧 session_id 失效,需要重新
开始采集。把 time_budget_seconds 调大可以减少续抓次数,但要确认 MCP 客户端的单次调用超时
(多数默认 60 秒)留得够。
点赞与收藏
xhs_like、xhs_collect、douyin_like、douyin_collect 接受作品 url 和期望状态
enabled(默认 true)。工具先读取当前页面状态,只有状态不一致时才点击一次,随后只轮询
验证结果;重复传入同一状态不会反向取消。传入 enabled=false 可取消点赞或收藏。
这四个工具会修改当前 Chrome Profile 对应账号的外部状态。MCP 客户端必须在每次调用前立即 取得用户明确确认;工具不会把一次未能验证的点击自动重试。
扩展排错
state: disconnected:确认扩展已启用,然后在扩展详情页点击“重新加载”。端口被占用:服务会自动尝试
17880..17889,以状态结果中的bridge_port为准。服务会 监控跳过uv后的真实 MCP Host;Host 异常退出时自动释放监听端口,不需要 Agent 猜测并 清理其他进程。扩展目录变化:以最新一次
browser_status返回的extension_dir为准。不要分享
pairing.json或pairing-token,它们包含本地连接凭据。
特殊进程监督器可以通过 BROWSER_MCP_OWNER_PID 显式传入宿主 PID;设置为 0 才会关闭
宿主存活监控。普通 Codex、Claude 或命令行配置无需设置此变量。
MCP 能力
这些工具由支持 MCP 的客户端自动调用。日常使用时直接描述目标即可,不需要手动填写接口参数。
工具 | 适用范围 | 能做什么 |
| 连接检查 | 检查 MCP server 与 Chrome 扩展是否连接,并返回服务版本、安装模式、源码 commit 及可直接执行的升级命令。 |
| 通用网页 | 使用真实 Chrome 打开网页,读取文章正文、页面可见文本、JavaScript 渲染内容及页面请求返回的数据;也能利用当前 Chrome 的网站登录状态。 |
| 通用网页 | 当网页内容较长时继续读取后续内容,并保持与首次读取相同的页面快照。 |
| 网页操作 | 在共享当前登录态的后台 Chrome 窗口中打开网页,不切走用户当前页面;向 Agent 返回当前视口截图、可见文字以及带编号的按钮、链接、输入框等可操作元素。未提供网址时,可以观察当前页面。 |
| 网页操作 | 直接按当前截图中的像素坐标移动可信鼠标并点击;点击链路不遍历 DOM 或 iframe,最多读取坐标下最上层的第一个 hover 节点。 |
| 网页操作 | 处理 Chrome 原生 |
| 网页操作 | 向上、向下、向左或向右滚动网页,也可以把指定元素滚动到视口中。 |
| 网页操作 | 在输入框或可编辑区域填写、追加或替换文字,并返回填写后的页面状态;密码内容不会出现在元素信息中。 |
| 网页操作 | 执行 Enter、Escape、Tab、方向键、翻页键、Home、End 等常用键盘操作。 |
| 网页操作 | 在网页原生下拉选择框中选择选项,并返回选择后的页面状态。 |
| 登录检查 | 查看当前 Chrome Profile 是否已登录知乎、小红书、抖音、X 或 Reddit;只检查会话状态,不执行平台任务,也不会返回 Cookie。 |
| 知乎 | 搜索知乎的综合内容、回答、文章或问题,获取标题、作者、摘要、互动数据和原始链接。 |
| 知乎 | 读取知乎问题、回答或专栏文章的正文,适合总结内容、提取观点或继续分析。 |
| 知乎 | 查看当前登录账号收到的邀请回答,了解邀请人、相关问题、邀请时间和来源。 |
| 小红书 | 搜索小红书笔记,并按综合、最新或最热查看标题、作者、封面及互动信息。 |
| 小红书 | 读取单篇图文或视频笔记的标题、正文、作者、发布时间、互动数据及图片或视频地址。 |
| 小红书 | 将单篇笔记设置为期望的点赞/未点赞状态;调用前必须确认,重复调用同一状态不会反向取消。 |
| 小红书 | 将单篇笔记设置为期望的收藏/未收藏状态;调用前必须确认,重复调用同一状态不会反向取消。 |
| 小红书 | 将单篇笔记的图片、视频或全部媒体流式下载到本地目录;默认使用 Browser MCP 数据目录下的 |
| 小红书 | 滚动笔记自身的评论流并展开回复,按评论 ID 去重获取评论与子评论;在时间预算内返回已抓到的增量评论,未抓完时给出可续抓的 |
| 小红书 | 获取当前登录账号或指定账号发布的笔记列表;可连续收集多页并去重,查看标题、发布时间、封面、点赞数、置顶状态和笔记链接。 |
| 抖音 | 搜索抖音视频或图文作品,获取作品 ID、描述、作者、发布时间、封面及点赞、评论、收藏和分享数据。 |
| 抖音 | 读取单个抖音视频或图文作品的作者、正文、发布时间、互动数据、媒体地址和音乐信息。 |
| 抖音 | 将单个作品设置为期望的点赞/未点赞状态;调用前必须确认,重复调用同一状态不会反向取消。 |
| 抖音 | 将单个作品设置为期望的收藏/未收藏状态;调用前必须确认,重复调用同一状态不会反向取消。 |
| 抖音 | 将单个视频或图文作品的媒体流式下载到本地目录;支持只选图片、只选视频或全部媒体。 |
| 抖音 | 滚动作品实际评论流并展开回复,按评论 ID 去重获取评论与子评论;在时间预算内返回已抓到的增量评论,未抓完时给出可续抓的 |
| B 站 | 搜索视频并按综合、播放量、最新、弹幕量或收藏量排序,返回标题、作者、时长、标签、统计数据和规范 BV 链接。 |
| B 站 | 读取 BV/AV 视频的标题、简介、作者、发布时间、互动统计、标签和全部分 P 信息;支持用 |
| B 站 | 下载指定视频或分 P 的最佳兼容画面和音频;有 FFmpeg 时无损合并为 MP4,否则明确返回两个轨道。 |
| B 站 | 只下载指定视频或分 P 的最佳兼容音轨,保存为可直接识别的音频文件。 |
| X | 搜索 X 上的帖子,可查看热门或最新结果,并获取作者、正文、发布时间、互动数据、媒体和链接。使用当前 Chrome 的 X 登录状态。 |
| X | 读取单条 X 帖子的正文、作者、发布时间、回复数、转发数、点赞数、浏览数、媒体和外部链接。 |
| 搜索 Reddit 帖子,可按相关性、热门、最高票、最新或评论数排序,查看社区、作者、票数、评论数和帖子链接。 | |
| 读取 Reddit 帖子的正文或媒体信息,并获取页面中已经加载的评论及其作者、时间、得分和层级。 | |
| 使用 Google 搜索网页,获取标题、目标网址、站点和内容摘要。 | |
| 必应 | 使用必应搜索网页,获取标题、目标网址、站点和内容摘要。 |
| 搜狗 | 使用搜狗搜索网页,返回原始网站链接、标题、站点和摘要;排除搜狗站内导航及带有明确广告标识的结果。 |
| 知乎等平台 | 当平台内容较长时继续读取后续内容,不重新访问目标页面,适合完整获取长回答或长文章。 |
使用示例
可以直接向支持 MCP 的客户端提出自然语言请求,例如:
“读取这个网页并总结重点。”
“打开这个网页,根据截图填写搜索框并点击搜索。”
“向下滚动页面,找到联系我们按钮并点击。”
“把这篇小红书笔记的全部图片下载到
/绝对路径/素材。”“下载这个抖音作品的视频,返回保存路径和 SHA-256。”
“检查我是否已经登录小红书。”
“搜索知乎里关于 MCP 的回答。”
“读取今天收到的知乎邀请回答。”
“搜索小红书最近的露营笔记。”
“读取这条小红书笔记的正文和图片。”
“获取这条小红书笔记的全部评论和回复。”
“点赞并收藏这条小红书笔记。”(客户端会在实际调用前确认)
“列出我小红书账号发布的全部帖子。”
“搜索抖音里关于牵手 APP 的作品。”
“读取这条抖音视频的内容和评论。”
“取消点赞这条抖音作品。”(客户端会在实际调用前确认)
“搜索 B 站关于 OpenAI 的视频,并读取第一条视频的 meta。”
“下载这个 B 站视频,并另外提取一份纯音频。”
“搜索 X 上关于 OpenAI 的最新帖子。”
“读取这条 X 帖子的正文和互动数据。”
“搜索 Reddit 上关于 MCP 的高票帖子。”
“读取这个 Reddit 帖子以及前 20 条评论。”
“分别用 Google、必应和搜狗搜索 Browser MCP。”
网页每次变化后都会生成一组新的元素编号,Agent 应使用最新截图中的编号继续操作。
直接运行
如需手动启动 stdio server:
uv run browser-mcp进程会在 stdin 等待 MCP JSON-RPC,直接在终端运行时没有输出属于正常现象。
License
Available Tools
24 toolsbing_searchARead-onlyIdempotent
Search the public web with Bing through the user's real Chrome session.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| engine | Yes | |
| keyword | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by revealing that searches occur through the user's real Chrome session, implying the use of the user's logged-in state and potential personalization. This complements the readOnlyHint and idempotentHint annotations. No contradictions with 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?
The description is a single, front-loaded sentence that efficiently conveys the tool's core purpose. Every word contributes meaning without redundant 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?
The tool is relatively simple, and the output schema exists, so return format need not be described. However, given the presence of many sibling search tools, the lack of usage guidelines limits completeness. The description covers the core functionality but leaves the selection context unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the tool description does not explain the 'keyword' or 'limit' parameters. While the parameter names are self-explanatory, the description fails to clarify how 'limit' behaves (e.g., max results) or any constraints on 'keyword'. The description does not compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the public web using Bing, with the distinctive detail of using the user's real Chrome session. This differentiates it from sibling search tools like google_search or sogou_search by specifying the engine and session context.
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 is provided about when to use this tool versus alternatives. While the description implies using it for Bing searches, it does not mention sibling tools or provide criteria for choosing Bing over other search engines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickADestructive
Click a current browser_snapshot element_id; use viewport coordinates only when no semantic element reference is available.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| wait_ms | No | ||
| element_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the constraint that the element must be from the current browser_snapshot and that coordinates are viewport-based, which complements the annotations. However, it does not disclose post-click behavior (e.g., navigation, page changes) or the meaning of wait_ms, leaving some behavioral aspects undocumented beyond the destructiveHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the action and resource, and every word adds value. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not mention what the tool returns or what observable effect occurs beyond clicking. Given the destructive annotation and the need to coordinate with browser_snapshot, more detail about wait_ms and post-click state would be necessary for complete understanding.
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 0% schema description coverage, the description must explain all parameters, but it only clarifies element_id and x/y. The wait_ms parameter is not described at all, leaving the agent to infer its purpose from the default value alone. This is a significant gap for a 4-parameter tool.
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 'Click' with a resource 'a current browser_snapshot element_id', clearly distinguishing it from sibling tools like browser_type or browser_scroll. It also clarifies the coordinate fallback, leaving no ambiguity about the tool's core function.
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?
It explicitly instructs to use viewport coordinates only when no semantic element reference is available, providing a clear when-to-use rule for the two input modes. However, it does not compare against sibling tools like browser_select or browser_press, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pressADestructive
Press one supported non-text keyboard key, optionally focused on a current element reference, then return the new visual state.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| wait_ms | No | ||
| element_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds useful context by stating that it returns the new visual state and can focus on an element, going beyond the annotations. However, it does not elaborate on potential side effects like navigation or data deletion, which the destructive hint implies.
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, front-loaded with the core action ('Press one supported non-text keyboard key') and includes essential modifiers compactly. No redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the description covers the main behavior (key press, optional element focus, return of visual state). Since there is no output schema, explicitly stating the returned visual state is helpful. Minor gaps remain (e.g., wait_ms, error cases), but annotations supply safety context and the schema supplies defaults.
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 description clarifies that 'key' refers to non-text keyboard keys and that element_id references a current element, adding meaning beyond the schema's bare property names. However, wait_ms is not mentioned, and with schema description coverage at 0%, the enumeration of key values is the only schema-based help. The description partially compensates but leaves 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 uses a specific verb ('Press') and resource ('one supported non-text keyboard key'), and further clarifies scope with 'optionally focused on a current element reference' and 'return the new visual state.' This clearly distinguishes it from sibling tools like browser_type (text input) and browser_click (mouse click).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for non-text keyboard keys, but it does not explicitly state when to prefer this over browser_type or browser_click, nor does it provide exclusions or mention specific scenarios like form submission or navigation. There is no direct alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_readARead-onlyIdempotent
Load a public HTTP(S) URL in the user's real Chrome session and extract readability text, visible text, rendered HTML, or XHR responses.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| extract | No | readability | |
| wait_ms | No | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| content | Yes | |
| complete | Yes | |
| warnings | No | |
| final_url | Yes | |
| range_end | Yes | |
| next_offset | Yes | |
| range_start | Yes | |
| snapshot_id | Yes | |
| total_chars | Yes | |
| extract_mode | Yes | |
| load_timed_out | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety hints (read-only, idempotent, non-destructive). The description adds context by mentioning the 'real Chrome session' and 'public HTTP(S)' scope, which tells the agent about the environment and what URLs are acceptable. This goes beyond the 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?
The description is a single, well-structured sentence that front-loads the action and then lists extraction modes. It contains no redundant words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the presence of an output schema, and strong annotations, this description is complete. It covers the purpose, the extraction outputs, and the scope without needing to describe return values.
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 0%, so the description must compensate. It explains the extract parameter by mapping it to concrete output types (readability, text, HTML, XHR), which adds value beyond the schema. However, wait_ms and max_chars are not described and rely solely on their self-explanatory names.
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 specific verbs ('load', 'extract') and identifies a clear resource: a public HTTP(S) URL in the user's real Chrome session. It also enumerates the extraction modes (readability text, visible text, rendered HTML, XHR responses), which effectively distinguishes it from sibling tools like browser_read_page or browser_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for loading public URLs and extracting page content, giving clear context. However, it does not explicitly state when not to use this tool or name alternatives, such as browser_read_page for the current page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_read_pageARead-onlyIdempotent
Read the next Unicode-safe page from an existing immutable browser snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| max_chars | No | ||
| snapshot_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| content | Yes | |
| complete | Yes | |
| warnings | No | |
| final_url | Yes | |
| range_end | Yes | |
| next_offset | Yes | |
| range_start | Yes | |
| snapshot_id | Yes | |
| total_chars | Yes | |
| extract_mode | Yes | |
| load_timed_out | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context beyond these: 'Unicode-safe' indicates handling of non-ASCII content, 'next' implies stateful pagination, and 'immutable' reassures that the snapshot does not change. No contradiction with 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?
The description is a single, front-loaded sentence with no redundancy. Every word adds meaning, and the structure is clean and easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and mentions 'existing immutable snapshot,' but it lacks guidance on how to obtain the snapshot_id, how pagination works with offset/max_chars, and how this tool differs from browser_read. Since an output schema exists, return values are likely covered, but usage context 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?
Schema description coverage is 0%, and the description does not compensate by explaining parameters like snapshot_id, offset, or max_chars. It only hints at pagination with 'next page,' but leaves parameter semantics to the user's inference from names. This falls short for a low-coverage 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 uses a specific verb ('read') with a clear resource ('page from an existing immutable browser snapshot'). It distinguishes itself from siblings like browser_read by specifying 'snapshot' and 'next page', indicating pagination from a saved state.
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: read a page from an already-created snapshot, but it does not explicitly state when to prefer this over similar tools like browser_read or site_read_page, nor does it mention any prerequisites beyond having a snapshot. Clear context but no exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollARead-only
Scroll the managed page in one direction or bring a current element reference into view, then return the new screenshot and references.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| wait_ms | No | ||
| direction | No | down | |
| element_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, and the description adds that it returns "the new screenshot and references" after scrolling, as well as the element-bringing behavior. There is no contradiction with 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?
The description is a single, front-loaded sentence with no redundant filler. Every clause contributes meaning: the action, the target, the two modes, and the return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the core function and return value but leaves parameter semantics undefined and "references" vague. Given the absence of an output schema, more detail about the returned screenshot/references and the two scrolling modes would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description only hints at direction and element reference without explaining amount, wait_ms, or how element_id functions. It adds minimal value over the raw 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 provides a specific verb ("Scroll") and target ("managed page"), and explains two operation modes: directional scrolling and bringing an element into view. This clearly differentiates it from sibling tools like browser_click or browser_read.
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 offered. It does not mention alternatives or indicate when element-scrolling is better than directional scrolling, leaving the agent to infer from the sibling tool list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_selectAIdempotent
Choose a native select option by its exact value or visible label, then return the new visual state.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| wait_ms | No | ||
| element_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: it specifies matching by exact value or visible label and states the tool returns the new visual state. It does not contradict annotations (readOnlyHint false, idempotentHint true).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and includes no unnecessary words. It is highly scannable.
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, the description covers core behavior and the return value, but lacks parameter details, edge cases, and error conditions. Given no output schema and zero schema descriptions, more context would be needed for fully autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description only partially explains the 'value' parameter via 'exact value or visible label', leaving element_id and wait_ms unexplained. This is insufficient for a 3-parameter tool.
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 'Choose' and resource 'native select option', and clearly states it operates by exact value or visible label, returning the new visual state. This distinguishes it from sibling tools like browser_click and browser_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for native select elements but does not explicitly state when to use it over alternatives or provide exclusions. No alternatives are mentioned, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotARead-onlyIdempotent
Open a public URL or observe the managed Chrome tab, returning a viewport screenshot plus fresh element references for visual interaction.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| wait_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds useful context: the tool returns a viewport screenshot and fresh element references, and can optionally navigate to a URL. There is no contradiction with 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?
The description is a single concise sentence with strong verbs and no redundancy. Every clause contributes meaning, and it is front-loaded with the primary action.
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 descriptive annotations and a clear statement of purpose/output, the description is adequate. However, it lacks parameter semantics and explicit usage guidance, and there is no output schema to fall back on. For a two-parameter tool, this is a noticeable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (no descriptions on url or wait_ms), and the tool description does not explain these parameters. While names are somewhat self-explanatory, the description does not clarify that url is optional (default null) or that wait_ms controls the wait time before snapshot. With low coverage, the description must compensate but does not.
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 a public URL or observe the managed Chrome tab' and specifies the output: 'returning a viewport screenshot plus fresh element references for visual interaction.' This distinguishes it from sibling tools like browser_read (text) and browser_status (status).
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 indicates when to use it: for visual interaction and obtaining fresh element references. It also implies two scenarios (open a URL or observe the current tab). However, it does not explicitly mention alternatives or exclusions, such as 'use browser_read for text content.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_statusARead-onlyIdempotent
Return the local Chrome extension bridge installation and connection status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| detail | Yes | |
| connected | Yes | |
| bridge_port | Yes | |
| last_seen_at | No | |
| extension_dir | Yes | |
| bridge_port_pool | Yes | |
| extension_version | No | |
| extension_build_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds 'local' and 'installation and connection status' but offers no extra behavioral context, such as behavior when the bridge is missing or connection fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys the essential purpose without redundancy. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status check with an output schema, the description is largely adequate. However, it could explicitly note that this should be used before other browser tools to verify the bridge connection, but this is not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not elaborate on parameter semantics. The 100% schema coverage and empty properties make this a baseline 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning the local Chrome extension bridge installation and connection status. It uses a specific verb ('Return') and resource, distinguishing it from sibling browser tools that perform actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention checking bridge status before using browser tools or any prerequisites, leaving the agent without context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeA
Type text into a current editable element reference, optionally replacing its contents and pressing Enter, then return the new visual state.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| clear | No | ||
| submit | No | ||
| wait_ms | No | ||
| element_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool can optionally clear content and submit (pressing Enter), and that it returns the new visual state. However, it does not mention the wait_ms behavior, failure modes (e.g., non-editable element), or side effects beyond the optional submit. Annotations provide readOnlyHint=false, which aligns with the write nature, but the description adds only modest 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 a single, front-loaded sentence that communicates the core purpose and key options without unnecessary detail. Every phrase contributes meaning, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the essential action and return state, which is helpful given no output schema. However, it is incomplete for a 5-parameter tool: it omits wait_ms, does not explain how to obtain the element reference, and lacks clarity on the 'current' aspect. This leaves room for agent confusion in real usage.
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 0% schema description coverage, the description compensates by implicitly covering most parameters: text (text to type), clear (optionally replacing contents), submit (pressing Enter), and element_id (current editable element reference). The wait_ms parameter is not mentioned, leaving a gap for timing 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 the tool's action ('Type text'), the target resource ('current editable element reference'), and optional behaviors ('replacing its contents and pressing Enter'). It distinguishes from sibling tools like browser_press (key presses) and browser_select (selection) by focusing on text input.
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 editable elements ('current editable element reference') but does not explicitly state when to use this tool versus alternatives or when not to use it. It also lacks guidance on prerequisites, such as how the element reference is obtained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchARead-onlyIdempotent
Search the public web with Google through the user's real Chrome session.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| engine | Yes | |
| keyword | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful context by noting the search runs 'through the user's real Chrome session,' which implies results may be personalized or dependent on browser state. It also scopes to 'public web,' clarifying that private resources are out of scope.
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: 'Search the public web with Google through the user's real Chrome session.' Every word adds value, with no redundancy or filler. It is 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 simple tool with only two parameters, a clear output schema, and safety annotations, the description covers the essential operation. It lacks explicit parameter documentation, but the parameter names are apparent, and the output schema likely handles return specifics. The description is sufficiently complete for the tool's 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 0%, and the description provides no information about the `keyword` or `limit` parameters. While names are self-explanatory, the description does not clarify that `limit` likely caps the number of results, nor does it explain any relationship between the parameters. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search the public web with Google.' It also adds a distinguishing detail ('through the user's real Chrome session') that sets it apart from sibling search tools. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for general Google web searches via 'public web,' but it does not explicitly compare with sibling search engines like bing_search or sogou_search. It lacks clear when-to-use or when-not-to-use guidance, though the 'public web' qualifier provides some context against site-specific tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_postARead-onlyIdempotent
Read one Reddit post and a bounded set of comments rendered on its page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_comments | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| body | Yes | |
| score | Yes | |
| title | Yes | |
| author | Yes | |
| post_id | Yes | |
| comments | Yes | |
| media_url | Yes | |
| post_type | Yes | |
| subreddit | Yes | |
| published_at | Yes | |
| comment_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context by noting comments are 'bounded', implying the max_comments parameter limits the output size. This goes beyond what annotations say.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action and resource. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is adequate but leaves gaps: it does not specify the expected URL format, the nature of the 'bounded set' (e.g., whether max_comments is exact or cap), or how comments are ordered. The output schema and annotations fill some context, but the description could be more complete for a new 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 description coverage is 0%, so the description must compensate for param semantics. It hints at the bounded comments but does not explain the url format or how max_comments controls the bounds. The parameter names are self-explanatory but the description adds little meaningful detail.
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 the specific verb 'Read' and clearly identifies the resource as 'one Reddit post' plus 'a bounded set of comments'. This distinguishes it from search tools like reddit_search and browser navigation 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?
No explicit guidance on when to use this tool versus alternatives (e.g., reddit_search or browser_read). The usage is implied by the description but no exclusions or alternative scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_searchARead-onlyIdempotent
Search Reddit posts and return normalized post metadata and links.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance | |
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| sort | Yes | |
| items | Yes | |
| keyword | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety with readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that results are 'normalized post metadata and links,' giving some output behavior context, but no details on pagination, sorting defaults, or rate limits. With annotations covering the safety profile, a neutral score is appropriate.
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 immediately states the tool's purpose and output. No wasted words or repetition of structured 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?
An output schema is present, so return values need not be explained. However, the description is very brief and leaves parameter usage unspecified, especially given the input schema lacks property descriptions. It is minimally viable for a simple search tool but not richly 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 0% per context signals, and the tool description does not elaborate on the 'keyword,' 'limit,' or 'sort' parameters. The description adds no meaning beyond the schema's property titles and defaults, so it fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Search Reddit posts' and the output: 'return normalized post metadata and links.' It distinguishes from sibling tools like reddit_post (which likely fetches a specific post) and other site-specific search tools (zhihu_search, xhs_search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it is for searching Reddit posts. However, it does not explicitly mention when not to use it or point to alternatives (e.g., reddit_post for a specific post), so it misses the highest bar for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
site_login_statusARead-onlyIdempotent
Check whether the current Chrome Profile is logged in to Zhihu, Xiaohongshu, X, or Reddit without executing a platform task.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| detail | Yes | |
| platform | Yes | |
| logged_in | Yes | |
| login_url | Yes | |
| account_label | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful context by specifying the scope ('current Chrome Profile') and explicitly stating no platform task is executed, which reinforces the read-only nature without contradicting 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?
The description is a single, front-loaded sentence with no redundant content. Every word adds meaning, and it is appropriately sized for a simple check 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?
The tool is simple with one parameter and an output schema, so the description need not detail return values. It covers the essential purpose and platforms, but could add a small note about typical usage before platform tasks to fully contextualize its role among the sibling 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?
There is one parameter with a well-defined enum, but schema property description coverage is 0%. The description lists the platforms in prose, partially compensating for the missing parameter description; however, it does not explicitly link the 'platform' parameter to the listed sites, relying on inference from the enum and the $defs description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check whether') and clear resource ('current Chrome Profile logged in to Zhihu, Xiaohongshu, X, or Reddit'). It distinguishes itself from sibling platform task tools (e.g., zhihu_search, x_post) by explicitly stating 'without executing a platform task.'
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 'without executing a platform task' implies using this tool as a preflight check before platform operations. It names the relevant platforms and signals a non-invasive context, but it does not explicitly name alternative tools or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
site_read_pageARead-onlyIdempotent
Read the next page of an existing immutable site-specific document snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| max_chars | No | ||
| snapshot_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| title | Yes | |
| content | Yes | |
| complete | Yes | |
| platform | Yes | |
| range_end | Yes | |
| next_offset | Yes | |
| range_start | Yes | |
| snapshot_id | Yes | |
| total_chars | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description need not repeat safety. It adds useful context about the snapshot being 'immutable' and the action being reading 'the next page', disclosing the pagination-focused behavior. It does not, however, describe error conditions such as missing snapshot or end-of-data behavior, which would increase transparency further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb, and every word contributes meaning. It is succinct and well-structured without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and does not define what a 'site-specific document snapshot' is or how to acquire a snapshot_id, which is important since there are no parameter descriptions. The output schema covers return values, but the description lacks context on prerequisites and pagination mechanics. It is adequate for a simple read tool but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only mentions 'next page', which loosely hints at offset semantics. It does not explain the meaning or role of snapshot_id, offset, or max_chars. The parameter names are self-explanatory to a limited degree, but the description adds no concrete detail about their usage.
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 'Read' and clearly identifies the resource as 'an existing immutable site-specific document snapshot'. It distinguishes from sibling tools like browser_read_page by emphasizing 'site-specific' and 'snapshot'. The phrase 'next page' clarifies its pagination role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates the tool requires an existing snapshot and supports pagination ('next page'), but it does not explicitly state when to choose this tool over alternatives such as browser_read_page or browser_snapshot. No alternatives or exclusions are mentioned, leaving usage guidance only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sogou_searchARead-onlyIdempotent
Search the public web with Sogou through the user's real Chrome session.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| engine | Yes | |
| keyword | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, providing a safe read-only profile. The description adds a key behavioral trait: it uses the user's real Chrome session, which implies dependence on session state, cookies, or login. This goes beyond annotation information without contradicting 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, front-loaded sentence that conveys the essential purpose and context. Every word earns its place, with no filler or repetition of schema fields, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description provides enough context for an agent to select it appropriately, especially with annotations and an output schema present. The main gap is parameter semantics, but the core action is clear. The 'real Chrome session' detail adds valuable operational 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 0%, and the description does not explain either parameter. It mentions searching with Sogou but gives no meaning for 'keyword' or 'limit'. While 'keyword' is somewhat obvious, 'limit' is entirely undocumented, leaving the agent to guess how result counts are capped.
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 "Search" with a clear resource "the public web with Sogou", immediately distinguishing it from sibling search engines like Google or Bing. The added detail "through the user's real Chrome session" further clarifies the unique execution context.
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 clearly implies when to use this tool: whenever a Sogou search is required. However, it does not explicitly mention alternatives or exclusions, though the sibling list makes it evident that other search tools exist for different engines. This meets the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xhs_noteARead-onlyIdempotent
Read one Xiaohongshu explore-note URL with its xsec access parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| likes | Yes | |
| title | Yes | |
| author | Yes | |
| images | Yes | |
| note_id | Yes | |
| collects | Yes | |
| comments | Yes | |
| note_type | Yes | |
| video_url | Yes | |
| description | Yes | |
| published_at | Yes | |
| published_at_ms | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'one' to clarify the scope and mentions xsec access parameters, but provides no additional behavioral details about errors, rate limits, or response structure. This is consistent with annotations, so no contradiction.
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 10 words. Every word contributes meaning; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, a rich annotation set, and an output schema present, the description covers the core purpose and input requirements. The only minor gap is a lack of clarification about error behavior or what constitutes a valid xsec URL, but overall it's sufficient for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'url' with zero description coverage. The description compensates by specifying 'explore-note URL with its xsec access parameters', giving key semantic guidance about the expected URL format. However, it doesn't fully define the exact structure or require xsec, so a 4 is warranted.
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 the specific verb 'Read' and names the resource 'Xiaohongshu explore-note URL with its xsec access parameters'. It clearly distinguishes from sibling tools like xhs_search (search) and xhs_user_notes (user note lists) by focusing on a single URL-based read.
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 use case: when you have a specific explore-note URL to read. It provides clear context but doesn't explicitly mention alternatives or exclusions. There is no statement like 'use xhs_search instead for queries', so it falls short of explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xhs_searchARead-onlyIdempotent
Search Xiaohongshu through its signed web request in the current Chrome session.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | general | |
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| sort | Yes | |
| items | Yes | |
| keyword | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool safe (readOnlyHint, idempotentHint, non-destructive). The description adds useful context about the dependency on an existing signed web request and the current Chrome session, which informs the agent about authentication and browser state requirements. This goes beyond the annotations without contradiction.
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 immediately states the action and key context. There is no filler or redundancy; it efficiently conveys both what the tool does and a critical operational requirement.
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 search tool with three parameters, an output schema, and safety annotations, the description covers the core purpose and the main contextual dependency (the Chrome session). It does not mention result limits or failure modes, but the output schema likely handles return values, so the description is sufficiently complete for the tool's 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?
The description provides no explanation of the parameters (keyword, page, sort), and schema description coverage is 0%. While the parameter names are somewhat self-explanatory, the description does not compensate for the lack of schema descriptions, leaving the sort enum semantics and page behavior to inference. The verb 'Search' only implicitly hints at a keyword.
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: 'Search Xiaohongshu' via a 'signed web request in the current Chrome session.' The verb 'Search' and resource 'Xiaohongshu' are specific, and the mention of the signed web request distinguishes it from generic search tools and indicates an authenticated context.
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 should be used when searching Xiaohongshu requires an authenticated browser session, as it explicitly references 'the current Chrome session.' However, it does not explicitly mention when not to use it or compare with sibling tools like xhs_note or xhs_user_notes, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xhs_user_notesARead-onlyIdempotent
List notes published by a Xiaohongshu account through the current Chrome session; omit user_id to use the logged-in account.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | No | ||
| max_pages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| cursor | Yes | |
| red_id | Yes | |
| user_id | Yes | |
| complete | Yes | |
| has_more | Yes | |
| nickname | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description only needs to add context. It adds the session-bound behavior and default user, but lacks details like pagination or error handling. This aligns with the calibration baseline for annotation-covered read tools.
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 concise sentence conveys purpose and usage with zero redundant words; no structural waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool, strong annotations, and an existing output schema, the description covers the main usage and session context. It lacks explicit alternative guidance but is otherwise complete for the tool's 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?
With 0% schema coverage, the description compensates for user_id by explaining the logged-in account default, but max_pages is not mentioned beyond its name, leaving its semantics still implicit. A 3 reflects partial compensation.
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 the specific verb 'List' with a clear resource ('notes published by a Xiaohongshu account') and adds scope ('through the current Chrome session'), distinguishing it from siblings like xhs_note and xhs_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context via the current Chrome session and explicitly instructs omitting user_id for the logged-in account, but does not mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x_postARead-onlyIdempotent
Read one X post with author, text, metrics, links, and media URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| text | Yes | |
| likes | Yes | |
| links | Yes | |
| views | Yes | |
| author | Yes | |
| handle | Yes | |
| post_id | Yes | |
| replies | Yes | |
| reposts | Yes | |
| media_urls | Yes | |
| published_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds that it returns media URLs rather than the media files themselves, and that it handles a single post. No contradiction with 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?
One sentence that front-loads the action ('Read one X post') and lists the return content concisely. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with strong annotations and an output schema, the description conveys the core purpose and return content. However, it lacks parameter guidance and any usage exclusions, so it is only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single 'url' parameter with no description (0% coverage). The description does not explicitly explain that the URL should point to an X post, leaving the parameter's semantics under-specified.
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 the specific verb 'Read' with a clear resource 'one X post' and enumerates the included data (author, text, metrics, links, media URLs). This clearly distinguishes from sibling tools like x_search (search) or browser_read (generic 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?
The description implies usage for reading a specific X post, which is distinct from searching (x_search) or browsing pages. However, it does not explicitly state when to use it versus alternatives or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x_searchARead-onlyIdempotent
Search X (formerly Twitter) posts through the user's current Chrome session.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | top | |
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| sort | Yes | |
| items | Yes | |
| keyword | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds a useful behavioral trait: it operates 'through the user's current Chrome session', implying dependency on browser state/login. No contradictions with 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?
The description is a single sentence of 14 words, front-loaded with the core purpose. Every word adds value—it names the resource, the action, and the key contextual detail (Chrome session). No unnecessary elaboration.
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 search tool, the description covers the essential purpose and a key context (Chrome session). However, it lacks usage guidance relative to other search tools, and parameter semantics are undocumented. Output schema and annotations provide additional structure, but the description alone is not fully complete for an agent to use it confidently.
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 0% (no descriptions for keyword, sort, or limit in the main properties). The tool description does not explain these parameters at all, failing to compensate for the schema gap. The sort enum has a brief description in the schema, but keyword and limit remain unexplained.
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: 'Search X (formerly Twitter) posts'. It also adds context about using the user's Chrome session. However, it does not explicitly differentiate from sibling search tools like google_search or zhihu_search, though the platform-specific resource makes the purpose fairly 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 implies when to use this tool: when you need to search X posts, particularly via the user's existing Chrome session. It does not mention alternatives, exclusions, or prerequisites (e.g., being logged in), so guidance is minimal but not absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zhihu_contentARead-onlyIdempotent
Read a Zhihu question, answer, or article as a pageable normalized document.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| title | Yes | |
| content | Yes | |
| complete | Yes | |
| platform | Yes | |
| range_end | Yes | |
| next_offset | Yes | |
| range_start | Yes | |
| snapshot_id | Yes | |
| total_chars | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds the 'pageable normalized document' behavior, which sets expectations about pagination and normalization beyond what annotations provide, though it doesn't detail max_chars handling.
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 redundant words. It is front-loaded with the primary action and resource, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and clear annotations, the description does not need to enumerate return values. It covers the resource scope and output type, and for a simple read-only tool, it provides adequate context. Minor gap: pagination mechanics are not fully explained.
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 0% and the description does not explain either parameter. The name 'max_chars' hints at a character limit but its interaction with pagination is unclear, leaving the agent to infer semantics from the name alone.
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 reads a Zhihu question, answer, or article and returns a pageable normalized document. This uses a specific verb and resource type, distinguishing it from sibling tools like zhihu_search or browser_read.
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 reading Zhihu content directly, but provides no explicit guidance on when to choose this over alternatives like browser_read or zhihu_search. It does not mention exclusions or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zhihu_invitationsARead-onlyIdempotent
Read the logged-in Zhihu account's answer invitations for one Asia/Shanghai date.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | ||
| max_pages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| day | Yes | |
| items | Yes | |
| complete | Yes | |
| pages_fetched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds context about the logged-in account and date scoping, but does not disclose behaviors like pagination limits, rate limits, or handling of missing login, which are partially covered by the schema and 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?
The description is a single, front-loaded sentence that clearly states the verb, resource, and scope with no superfluous words. It is optimally concise for a simple read operation.
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 low complexity (2 optional params), presence of an output schema, and rich annotations, the description covers the core purpose adequately. Minor gaps remain around parameter semantics and explicit usage guidance, but overall the description is sufficiently complete for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, and the description only implicitly references the 'day' parameter via 'one Asia/Shanghai date'. The 'max_pages' parameter is completely unexplained, leaving the agent to infer its purpose from the name alone. The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Read' with a clear resource: 'the logged-in Zhihu account's answer invitations'. It also provides scope with 'for one Asia/Shanghai date', distinguishing it from sibling tools like zhihu_search and zhihu_content.
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 checking answer invitations on a specific date, but it does not explicitly state when to use this tool versus alternatives or when not to use it. There is no mention of alternatives like search functions, so guidance is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zhihu_searchARead-onlyIdempotent
Search Zhihu using the current Chrome session and return normalized results.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| keyword | Yes | ||
| search_type | No | content |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| offset | Yes | |
| keyword | Yes | |
| has_more | Yes | |
| search_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful context by noting reliance on the current Chrome session (implying session/login requirements) and output normalization ('normalized results'). This goes beyond what annotations provide, with no contradictions.
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 front-loads the action, contains no filler, and conveys the essential function efficiently. It is an example of under-specification, not verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and strong annotations, so return values are covered. However, the description omits search_type options and offset behavior, and lacks any usage guidance. It is minimally viable but leaves gaps for a tool with 3 parameters and 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for its three parameters, and the description itself does not explain keyword, offset, or search_type. The only parameter hint is the search_type enum's description in the schema, but the main description adds no meaning to any parameter, failing to compensate for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Search' with the resource 'Zhihu', and adds 'using the current Chrome session' and 'return normalized results' to clarify scope. This clearly distinguishes it from sibling search tools for other platforms like xhs_search and x_search.
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 when-to-use or when-not-to-use statement, but 'Search Zhihu' unambiguously indicates the intended context, and 'using the current Chrome session' implies a prerequisite session dependency. No exclusions are given, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools are cleanly separated by domain prefix and action (e.g., browser_*, zhihu_*, xhs_*), making them easy to distinguish. However, browser_read and browser_snapshot both load URLs with different output types, and browser_read_page vs site_read_page could initially cause confusion.
All tool names use lowercase_with_underscores and a clear domain prefix, which is very consistent. The pattern is not always verb_noun (e.g., browser_status, zhihu_invitations), mixing action and noun forms, but the prefix-based scheme makes the set predictable.
With 24 tools, this server is on the heavy side, though the breadth of domains (browser control, platform-specific reads for five sites, and three search engines) argues for a larger surface. Some consolidation could reduce the count, but most tools earn their place.
The server covers the core browser lifecycle (load, view, click, type, scroll, select, press) plus a solid set of reads for major platforms and search engines. Missing advanced interactions like hover or multi-step workflows, but no obvious dead ends for the stated purpose.
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
One MCP for the Web. Easily search, crawl, navigate, and extract websites without getting blocked.…
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn extension-based MCP server that enables AI assistants to control your browser, leveraging existing sessions and login states for automation and content analysis. It provides over 20 tools for semantic tab search, interactive element manipulation, and network monitoring directly within your daily Chrome environment.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceAn extension-based MCP server that enables AI assistants to control your existing Chrome browser, leveraging your active login states and settings for automation. It provides over 20 tools for tasks like semantic tab search, screen capture, network monitoring, and direct element interaction.
- AlicenseNot gradedqualityDmaintenanceMCP server that lets AI assistants browse the web through your real Chrome with your cookies, sessions, and fingerprint, avoiding bot detection and CAPTCHAs. Enables web browsing, content extraction, and multi-step workflows via persistent tabs.63MIT
- AlicenseAqualityAmaintenanceMCP server that lets AI agents drive your real Chromium browser with your existing signed-in sessions, providing visible, local, and inspectable automation for tasks like navigation, clicking, typing, and form filling.251Apache 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/ywleeo/browser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server