Skip to main content
Glama
ywleeo
by ywleeo

Browser MCP

M8ven Verified

PyPI version awesome dsh plugin

English · 中文

让你的 AI 真正能搜遍全网。 所有你能登录访问的站点——小红书、知乎、X、抖音、B 站、Reddit 乃至任意登录态站点——内容都能抓下来,还能在后台替你自动化操作:不无头、不逆向、不偷 Cookie。

Browser MCP 是一个本地 MCP server。它让任何支持 MCP 的 AI 助手,在你真实 Chrome 的登录态里:

  • 搜遍并抓取全网任意站点的内容——公开页面、JavaScript 渲染页面,以及登录后才看得到的页面;

  • 在后台 Chrome 窗口里自动化操作——点击、滚动、输入、按键、下拉,全程不切走你当前正在看的页面

内置搜索 / 爬虫

Browser MCP

搜索引擎有的、能公开爬到的才拿得到

全网——只要能登录访问,内容都抓得到

登录态内容搜不到、进不去

用你已登录的状态,直接取

大多只能读

能点击、滚动、输入、按键、下拉

逆向接口,平台一改版就崩

驱动真实 UI、读真实渲染 DOM,改版也不怕

易被反爬拦截、易泄漏 Cookie

不逆向、扩展零 cookies 权限、下载带 SHA-256、副作用操作需确认

只适配个别 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+

  • uv

  • 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 扩展

  1. 调用 browser_status,获取返回结果中的 extension_dir

  2. 打开 chrome://extensions

  3. 开启“开发者模式”。

  4. 点击“加载已解压的扩展程序”。

  5. 选择 extension_dir 对应的目录。

  6. 再次调用 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_readmcp__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_commandupgrade_apply_command 即可。wheel 或其他包管理器安装会返回 install_mode: "package",此时应使用原安装工具升级,而不是修改任意 Git 仓库。

扩展权限

  • <all_urls>:用于打开调用方明确请求的公开 HTTP(S) 页面,并支持多个站点 adapter;不会 主动遍历浏览历史。

  • debugger:用于捕获页面请求响应,以及在评论流和视觉交互中发送可信浏览器输入事件。

  • tabsscripting:用于管理隔离的后台标签页并执行项目内置的固定提取脚本。

  • storagealarms:用于本地配对配置和 MV3 service worker 保活。

扩展没有申请 cookies 权限。登录态只由目标页面在当前 Chrome Profile 内正常使用,Cookie 不会通过 MCP 工具结果返回。

知乎、小红书、抖音、X 和 Reddit 工具会在执行任务前检查当前 Chrome Profile 的平台登录状态:

  • 已登录:继续执行请求。

  • 未登录:停止任务并返回对应平台的登录地址,客户端会提示用户先登录。

  • 无法确认:停止任务,避免在登录状态不明确时继续访问目标内容。

登录状态不做缓存。用户在 Chrome 中完成登录后,可以直接重试原来的请求。

媒体下载

xhs_downloaddouyin_download 支持以下通用参数:

  • media:选择 imagesvideoall

  • output_dir:可选的绝对目录;省略时保存到 Browser MCP 数据目录下的 downloads

  • overwrite:默认 false,同名文件会自动分配新文件名;只有显式设置后才覆盖。

  • max_file_mb:单文件大小上限,默认 1024 MiB。

下载前会先通过当前 Chrome 登录态读取作品详情,再对页面派生的媒体 URL 执行平台 CDN 白名单、公共地址、逐跳重定向和响应媒体类型校验。文件使用 .part 临时文件流式写入, 完成后原子落盘;结果包含最终路径、字节数、Content-Type 和 SHA-256。

bilibili_download_videobilibili_download_audio 使用同样的绝对目录、覆盖策略和大小 限制。B 站通常返回分离的 DASH 视频/音频轨:视频工具在系统可用 ffmpeg 时以 stream copy 无损合并为 MP4;找不到 ffmpeg 时返回两个独立轨道文件,不伪装成完整视频。纯音频工具 只保存兼容性最高的音轨。分 P 视频可在 URL 中传入 ?p=N 指定页面。

评论完整性与断点续抓

xhs_commentsdouyin_comments 会滚动作评论流、展开回复,并观察页面自身发起的签名分页 请求。结果中的 complete 表示已观察到所有已发现评论流的终止页;limit_reached 表示因 max_comments 截断;pages_fetchedscrolls 可用于诊断采集过程。

热门作品的评论流要滚几分钟,超过任何 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_likexhs_collectdouyin_likedouyin_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.jsonpairing-token,它们包含本地连接凭据。

特殊进程监督器可以通过 BROWSER_MCP_OWNER_PID 显式传入宿主 PID;设置为 0 才会关闭 宿主存活监控。普通 Codex、Claude 或命令行配置无需设置此变量。

MCP 能力

这些工具由支持 MCP 的客户端自动调用。日常使用时直接描述目标即可,不需要手动填写接口参数。

工具

适用范围

能做什么

browser_status

连接检查

检查 MCP server 与 Chrome 扩展是否连接,并返回服务版本、安装模式、源码 commit 及可直接执行的升级命令。

browser_read

通用网页

使用真实 Chrome 打开网页,读取文章正文、页面可见文本、JavaScript 渲染内容及页面请求返回的数据;也能利用当前 Chrome 的网站登录状态。

browser_read_page

通用网页

当网页内容较长时继续读取后续内容,并保持与首次读取相同的页面快照。

browser_snapshot

网页操作

在共享当前登录态的后台 Chrome 窗口中打开网页,不切走用户当前页面;向 Agent 返回当前视口截图、可见文字以及带编号的按钮、链接、输入框等可操作元素。未提供网址时,可以观察当前页面。

browser_click

网页操作

直接按当前截图中的像素坐标移动可信鼠标并点击;点击链路不遍历 DOM 或 iframe,最多读取坐标下最上层的第一个 hover 节点。element_id 仅作为已保存截图中心点的简写。截图坐标会按实际位图尺寸映射到 CSS 视口,也可显式传入 coordinate_space=viewport。操作后只返回新截图;继续语义操作前重新调用 browser_snapshot

browser_dialog

网页操作

处理 Chrome 原生 alertconfirmprompt 和离开页面确认框。accept 接受(离开页面),dismiss 取消(留在当前页面);关闭后自动返回全新截图和元素引用。若用户已按 Esc 关闭,调用它会安全刷新页面状态。

browser_scroll

网页操作

向上、向下、向左或向右滚动网页,也可以把指定元素滚动到视口中。

browser_type

网页操作

在输入框或可编辑区域填写、追加或替换文字,并返回填写后的页面状态;密码内容不会出现在元素信息中。

browser_press

网页操作

执行 Enter、Escape、Tab、方向键、翻页键、Home、End 等常用键盘操作。

browser_select

网页操作

在网页原生下拉选择框中选择选项,并返回选择后的页面状态。

site_login_status

登录检查

查看当前 Chrome Profile 是否已登录知乎、小红书、抖音、X 或 Reddit;只检查会话状态,不执行平台任务,也不会返回 Cookie。

zhihu_search

知乎

搜索知乎的综合内容、回答、文章或问题,获取标题、作者、摘要、互动数据和原始链接。

zhihu_content

知乎

读取知乎问题、回答或专栏文章的正文,适合总结内容、提取观点或继续分析。

zhihu_invitations

知乎

查看当前登录账号收到的邀请回答,了解邀请人、相关问题、邀请时间和来源。

xhs_search

小红书

搜索小红书笔记,并按综合、最新或最热查看标题、作者、封面及互动信息。

xhs_note

小红书

读取单篇图文或视频笔记的标题、正文、作者、发布时间、互动数据及图片或视频地址。

xhs_like

小红书

将单篇笔记设置为期望的点赞/未点赞状态;调用前必须确认,重复调用同一状态不会反向取消。

xhs_collect

小红书

将单篇笔记设置为期望的收藏/未收藏状态;调用前必须确认,重复调用同一状态不会反向取消。

xhs_download

小红书

将单篇笔记的图片、视频或全部媒体流式下载到本地目录;默认使用 Browser MCP 数据目录下的 downloads,也可指定绝对路径。

xhs_comments

小红书

滚动笔记自身的评论流并展开回复,按评论 ID 去重获取评论与子评论;在时间预算内返回已抓到的增量评论,未抓完时给出可续抓的 session_id

xhs_user_notes

小红书

获取当前登录账号或指定账号发布的笔记列表;可连续收集多页并去重,查看标题、发布时间、封面、点赞数、置顶状态和笔记链接。

douyin_search

抖音

搜索抖音视频或图文作品,获取作品 ID、描述、作者、发布时间、封面及点赞、评论、收藏和分享数据。

douyin_video

抖音

读取单个抖音视频或图文作品的作者、正文、发布时间、互动数据、媒体地址和音乐信息。

douyin_like

抖音

将单个作品设置为期望的点赞/未点赞状态;调用前必须确认,重复调用同一状态不会反向取消。

douyin_collect

抖音

将单个作品设置为期望的收藏/未收藏状态;调用前必须确认,重复调用同一状态不会反向取消。

douyin_download

抖音

将单个视频或图文作品的媒体流式下载到本地目录;支持只选图片、只选视频或全部媒体。

douyin_comments

抖音

滚动作品实际评论流并展开回复,按评论 ID 去重获取评论与子评论;在时间预算内返回已抓到的增量评论,未抓完时给出可续抓的 session_id

bilibili_search

B 站

搜索视频并按综合、播放量、最新、弹幕量或收藏量排序,返回标题、作者、时长、标签、统计数据和规范 BV 链接。

bilibili_video

B 站

读取 BV/AV 视频的标题、简介、作者、发布时间、互动统计、标签和全部分 P 信息;支持用 ?p=N 选择分 P。

bilibili_download_video

B 站

下载指定视频或分 P 的最佳兼容画面和音频;有 FFmpeg 时无损合并为 MP4,否则明确返回两个轨道。

bilibili_download_audio

B 站

只下载指定视频或分 P 的最佳兼容音轨,保存为可直接识别的音频文件。

x_search

X

搜索 X 上的帖子,可查看热门或最新结果,并获取作者、正文、发布时间、互动数据、媒体和链接。使用当前 Chrome 的 X 登录状态。

x_post

X

读取单条 X 帖子的正文、作者、发布时间、回复数、转发数、点赞数、浏览数、媒体和外部链接。

reddit_search

Reddit

搜索 Reddit 帖子,可按相关性、热门、最高票、最新或评论数排序,查看社区、作者、票数、评论数和帖子链接。

reddit_post

Reddit

读取 Reddit 帖子的正文或媒体信息,并获取页面中已经加载的评论及其作者、时间、得分和层级。

google_search

Google

使用 Google 搜索网页,获取标题、目标网址、站点和内容摘要。

bing_search

必应

使用必应搜索网页,获取标题、目标网址、站点和内容摘要。

sogou_search

搜狗

使用搜狗搜索网页,返回原始网站链接、标题、站点和摘要;排除搜狗站内导航及带有明确广告标识的结果。

site_read_page

知乎等平台

当平台内容较长时继续读取后续内容,不重新访问目标页面,适合完整获取长回答或长文章。

使用示例

可以直接向支持 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

MIT

Available Tools

24 tools
browser_clickA
Destructive

Click a current browser_snapshot element_id; use viewport coordinates only when no semantic element reference is available.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
wait_msNo
element_idNo

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_pressA
Destructive

Press one supported non-text keyboard key, optionally focused on a current element reference, then return the new visual state.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
wait_msNo
element_idNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_readA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
extractNoreadability
wait_msNo
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
contentYes
completeYes
warningsNo
final_urlYes
range_endYes
next_offsetYes
range_startYes
snapshot_idYes
total_charsYes
extract_modeYes
load_timed_outYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_pageA
Read-onlyIdempotent

Read the next Unicode-safe page from an existing immutable browser snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNo
max_charsNo
snapshot_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
contentYes
completeYes
warningsNo
final_urlYes
range_endYes
next_offsetYes
range_startYes
snapshot_idYes
total_charsYes
extract_modeYes
load_timed_outYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_scrollA
Read-only

Scroll the managed page in one direction or bring a current element reference into view, then return the new screenshot and references.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNo
wait_msNo
directionNodown
element_idNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_selectA
Idempotent

Choose a native select option by its exact value or visible label, then return the new visual state.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
wait_msNo
element_idYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_snapshotA
Read-onlyIdempotent

Open a public URL or observe the managed Chrome tab, returning a viewport screenshot plus fresh element references for visual interaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
wait_msNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_statusA
Read-onlyIdempotent

Return the local Chrome extension bridge installation and connection status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
detailYes
connectedYes
bridge_portYes
last_seen_atNo
extension_dirYes
bridge_port_poolYes
extension_versionNo
extension_build_idNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
clearNo
submitNo
wait_msNo
element_idYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

reddit_postA
Read-onlyIdempotent

Read one Reddit post and a bounded set of comments rendered on its page.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_commentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
bodyYes
scoreYes
titleYes
authorYes
post_idYes
commentsYes
media_urlYes
post_typeYes
subredditYes
published_atYes
comment_countYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

site_login_statusA
Read-onlyIdempotent

Check whether the current Chrome Profile is logged in to Zhihu, Xiaohongshu, X, or Reddit without executing a platform task.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
detailYes
platformYes
logged_inYes
login_urlYes
account_labelYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_pageA
Read-onlyIdempotent

Read the next page of an existing immutable site-specific document snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNo
max_charsNo
snapshot_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
titleYes
contentYes
completeYes
platformYes
range_endYes
next_offsetYes
range_startYes
snapshot_idYes
total_charsYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

xhs_noteA
Read-onlyIdempotent

Read one Xiaohongshu explore-note URL with its xsec access parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
likesYes
titleYes
authorYes
imagesYes
note_idYes
collectsYes
commentsYes
note_typeYes
video_urlYes
descriptionYes
published_atYes
published_at_msYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_user_notesA
Read-onlyIdempotent

List notes published by a Xiaohongshu account through the current Chrome session; omit user_id to use the logged-in account.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
cursorYes
red_idYes
user_idYes
completeYes
has_moreYes
nicknameYes
pages_fetchedYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_postA
Read-onlyIdempotent

Read one X post with author, text, metrics, links, and media URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
textYes
likesYes
linksYes
viewsYes
authorYes
handleYes
post_idYes
repliesYes
repostsYes
media_urlsYes
published_atYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

zhihu_contentA
Read-onlyIdempotent

Read a Zhihu question, answer, or article as a pageable normalized document.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
titleYes
contentYes
completeYes
platformYes
range_endYes
next_offsetYes
range_startYes
snapshot_idYes
total_charsYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_invitationsA
Read-onlyIdempotent

Read the logged-in Zhihu account's answer invitations for one Asia/Shanghai date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dayYes
itemsYes
completeYes
pages_fetchedYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

TDQS

A3.7/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    6
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP 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.
    25
    1
    Apache 2.0

Latest Blog Posts

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