vtable-mcp
This server provides an MCP-based UI automation and testing toolkit for AI agents, centered on browser control, deterministic VTable canvas interaction, semantic DOM/overlay analysis, and human-in-the-loop approvals.
Drive real browsers: open/start/connect/close Playwright or CDP-managed Chrome, manage isolated browser sessions and multi-tab page selection.
Interact with VTable data grids deterministically: click/read/resolve cells by field+record, batch-read cell ranges, drop files onto cells, and get metadata/analysis — all using VTable internal APIs plus trusted input and verification.
Automate general web UI: click, fill, press, select, and other DOM interactions with CSS → ARIA → XPath → viewport-coordinate fallback; capture ARIA snapshots, screenshots, and focused page/context summaries.
Observe UI overlays: scan and monitor Ant Design Portals/modals/drawers/dropdowns/toasts across main page and iframes, including short-lived messages.
Request user decisions: human approval and option-choice tools, plus file upload/listing/reading.
Render and run FastMCP Apps/UI: test-case tables, VTable dashboard, mold-master views, execution panels, and generative Prefab UI tools.
Inspect runtime behavior: read the active UI profile and automation metrics (latency, response size, token estimates).
Expose resources: read VTable JavaScript scripts via MCP resources for custom automation workflows.
Provides UI automation for Ant Design applications, including clicking and interacting with Ant Design controls, portals, modals, dropdowns, notifications, tab iframes, and other overlay components.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vtable-mcpRead the first 10 rows of the VTable and summarize the order data."
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.
Qa-Automation-MCP
面向 AI 与测试工程的通用 UI 自动化 MCP 服务。框架能力不绑定具体组件库:
通用浏览器自动化:Chrome/CDP、BrowserContext、页面与 iframe、语义 DOM 交互、截图和浮层观测。
可选组件适配器:VTable 位于
qa_automation/components/vtable/,只负责页面中 VTable 组件的确定性分析与交互。FastMCP 组合服务:浏览器、通用 UI、诊断、演示和 VTable 资源分别实现为聚焦子服务器,由统一入口组合。
内置演示数据:位于
qa_automation/mcp/apps/sample_data.py,不在项目根目录散落运行时 Python 模块。
VTable 实例 API 文档
对运行中的 VTable 实例做 JS 实时枚举(296 个方法 + 55 getter + 33 setter),
再与官方 @visactor/vtable@1.26.2 的 TypeScript 类型声明逐一对齐,生成
docs/vtable-instance-api.md:
每个方法含 签名 / 作用 / 参数(逐参数释义)/ 返回值;
按功能分 18 类(读取判定 / 编辑写回 / 数据记录 / 列宽 / 滚动视口 / 选区 / 合并 / 树形 / 冻结 / 导出 / 主题 / 事件 / 坐标命中…);
标注 @AI 的方法是本 MCP 交互工具的核心依赖(如
getCellRelativeRect/getSelectedCellRanges/scrollToCell)。
Related MCP server: Browser[X]MCP
快速开始
# 1. 安装依赖(自动创建 venv)
uv sync
# 2. 以 stdio 启动 MCP 服务(供 MCP 客户端连接,也是 fastmcp.json 的默认配置)
uv run fastmcp run fastmcp.json
# 等价的直接入口
uv run qa-automation-mcp
# 3. (可选)启动 FastMCP Apps 开发预览:浏览器打开 http://127.0.0.1:9090
# 该命令仅用于 UI 预览,会为预览临时启动一个 HTTP MCP 端点
# 选择工具 -> Launch 即可看到渲染的 UI
uv run fastmcp dev apps qa_automation/mcp/server.py --dev-port 9090 --mcp-port 9000
# 4. (可选)使用 MCP Inspector 检查 stdio 服务
npx @modelcontextprotocol/inspector uv run fastmcp run fastmcp.json
# (可选)启用 Playwright 浏览器交互工具
uv sync --extra browser
uv run playwright install chromium # 首次需下载浏览器内核使用 iPhone SSH 端口转发访问 Inspector v2
Inspector v2 的 Web UI 使用 6274;MCP Apps 沙箱固定使用 6275。在 iPhone 的 SSH 客户端中建立两个本地转发:
本地 6274 -> Ubuntu 127.0.0.1:6274
本地 6275 -> Ubuntu 127.0.0.1:6275然后在 iPhone 浏览器打开脚本输出的 URL:
http://127.0.0.1:6274/?MCP_INSPECTOR_API_TOKEN=<终端输出的token>SSH 端口转发本身不执行 TLS;这里使用 loopback 地址访问,浏览器会将其视为可信来源,因此 v2 所需的安全上下文 API 可以工作。不要把 Inspector 直接绑定到公网 IPv6 地址:它具备调用本地 MCP 进程的能力,应保留 token 认证并限制为 SSH 隧道访问。
Windows 局域网客户端
Windows 10/11 通常自带 OpenSSH Client。在远端启动 MCP Inspector 后,可在 Windows PowerShell 中执行:
ssh.exe -N `
-L 6274:127.0.0.1:6274 `
-L 6275:127.0.0.1:6275 `
hooplus1ce@192.168.31.21如果私钥不是默认路径,追加 -i $env:USERPROFILE\.ssh\id_ed25519。保持该 PowerShell 窗口运行,再在 Windows 浏览器打开:
http://127.0.0.1:6274/?MCP_INSPECTOR_API_TOKEN=<Ubuntu终端输出的token>其中 6274 是 Inspector Web UI,6275 是 MCP Apps 沙箱。不要使用 v1 的 6277 端口,也不要在 Windows Inspector 表单中选择 STDIO; MCP 服务进程已经由 Ubuntu 上的 Inspector v2 启动。
工具与资源清单
名称 | 类型 | 说明 |
| UI 工具 | 测试用例 DataTable(搜索/排序/分页) |
| UI 工具 | VTable 引擎概览仪表盘 + 优先级分布图 |
| UI 工具 | 模具主数据只读视图(20 字段) |
| FastMCPApp UI | 用例执行台:表单提交 → 后端执行 → 落盘 |
| FastMCPApp UI | 样例数据驱动的动态录入表单 |
| Providers | 审批 / 选择 / 上传 / 生成式 UI |
| 工具 | Playwright 打开浏览器并导航到目标页面 |
| 工具 | 在指定端口启动受管 Chrome 并自动 CDP 接管(默认 9222) |
| 工具 | CDP 连接已有浏览器(默认 9222),复用已打开的页面 |
| 工具 | 管理隔离 BrowserContext 会话,支持账号 Cookie 环境切换与 storage state |
| 工具 | 列出并显式固定稳定 |
| 工具 | 枚举可见 VTable,返回稳定 |
| 工具 | hover 后重新解析目标中心点的稳定 trusted 点击 + 回读验证 |
| 工具 | 读目标表单元格值/类型/中心点/可见性 |
| 工具 | 指定表内用字段+记录索引解析地址并 trusted 点击 |
| 工具 | 指定表一次读取列头/scenegraph 图标/有限值单元格的交互证据 |
| 工具 | 交互工具链:传 actions 一次性批量执行 N 个动作(1 次调用替代 N 次往返),链尾统一观察一次(浮层 + URL 变化);不传时返回紧凑页面分析供 AI 规划 |
| 工具 | 统一页面交互:CSS → AX → XPath → 视口坐标;定位器匹配必须唯一且可见,点击前重测目标几何以防 hover 布局抖动 |
| 工具 | 按元素定位器或顶层 viewport 矩形截取 PNG/JPEG 并保存到 |
| 工具 | 低 token 页面上下文与聚焦层控件分析 |
| 工具 | 当前活动范围的浮层快照与事件监听 |
| 工具 | 有深度(最多 8)及 24,000 字符预算的 aria 快照(mode='ai' + boxes),含 [ref]/[box](支持 |
| 工具 | 返回当前 UI profile、定位器优先级和 VTable 验证策略 |
| 工具 | 返回工具调用耗时、响应体积和上下文 token 估算 |
| 工具 | 指定表格元数据与矩形单元格批量读取 |
| 工具 | 指定单元格的 Locator.drop 文件拖放(Playwright 1.60+) |
| 工具 | 关闭 Playwright/受管 Chrome;外部 CDP 浏览器只断开连接 |
| 资源 | JS 脚本目录(JSON) |
| 资源 | 19 个 VTable JS 脚本(fast_bind、vtable_analysis、resolve_cell、read_cells …) |
FastMCPApp 后端工具(execute_test_case / save_mold_master)不暴露给客户端,
仅由 UI 表单经 CallTool 触发(职责分离),默认提交结果落盘到使用方项目的 .qa-automation/data/;可用 QA_AUTOMATION_DATA_DIR 覆盖。
客户端读取 vtable JS 脚本:
from fastmcp import Client
from fastmcp.client.transports import StdioTransport
transport = StdioTransport(
command="uv",
args=["run", "fastmcp", "run", "fastmcp.json", "--no-banner"],
cwd="/path/to/Qa-Automation-MCP",
)
async with Client(transport) as client:
index = await client.read_resource("vtable://js/index") # 目录
script = await client.read_resource("vtable://js/fast_bind") # 脚本常见 MCP 客户端的进程配置等价于:
{
"command": "uv",
"args": ["run", "fastmcp", "run", "fastmcp.json", "--no-banner"],
"cwd": "/path/to/Qa-Automation-MCP"
}关键实现要点
表单提交按钮:必须
Button("提交", buttonType="submit")(不是type=)。CallTool 参数:不自动收集表单值,须显式插值:
arguments={"case_id": "{{ case_id }}", ...},key 与字段name=一致。动态字段进表单:
with Form(...):内须显式组合Column(children=[*fields, Button(...)])。网络:dev apps 从 cdn.jsdelivr.net 加载 prefab renderer,内网/离线环境 可能加载失败。解决:下载到本地后用代理/路由拦截(见 e2e 脚本思路)。
Playwright 交互工具的设计(替代旧 click_by_js)
vtable_cell_click 按官方 Playwright MCP 的范式重写了点击工具,解决旧
click_by_js(坐标 + dispatchEvent 合成事件)的准确率问题:
确定性实例绑定:VTable 容器元素自带
__vtable__指向表格实例(实测官方 demo 直接命中el.__vtable__,含全部交互 API),绑定顺序为容器/ canvas 的 __vtable__ 直连→React Fiber 绝对路径→BFS 全树扫描, 不再依赖脆弱的固定 Fiber 路径。语义目标输入,确定性坐标解析:AI 传 col/row,坐标由 VTable 内部 API (
getCellRelativeRect)计算并加 canvas 视口偏移,不是猜测像素。业务字段寻址:
vtable_cell_resolve(field, record_index)优先调用getCellAddrByFieldRecord,旧版本才组合getTableIndexByField与getTableIndexByRecordIndex;vtable_cell_click_by_field再用scrollToCell/getCellRelativeRect得到落点。整个链路不扫描 DOM 单元格。多表/iframe 显式寻址:先调用
vtable_discover(frame=...)。每个tables[]项的frame是稳定的frame_id,可直接传回其它 VTable 工具;table.table_index是该 frame 内的索引。名称/URL 选择器仅用于兼容性回退,多个候选会明确报歧义,绝不猜第一张。 未指定索引时,只有唯一可见表或唯一模态框表可自动绑定;并列可见表会明确返回table_index is required。vtable_analysis同样受此约束,保证分析、读写、点击和文件拖放 始终落在同一实例。稳定 trusted 输入:
page.mouse.click走真实输入管道(isTrusted=true)。点击会先滚动 目标进入视口,连续采样其边界直到稳定,移动鼠标触发 hover 后重新读取最终几何,再点击 最终中心点;因此目标的 hover 动画、tooltip 或布局位移不会吞掉首次点击。可操作性等待:等
.vtable挂载、window._vtable绑定、滚动到视口、 等渲染帧后才点击。验证回路:点击后依次检查选区变化、目标仍处于已选状态、编辑器、目标单元格 scenegraph 的填充/描边等视觉状态;仍无证据时比较单元格中心的局部截图哈希,再决定 是否重试。
verify=False时只执行 trusted 输入,不读取 scenegraph 或截图,也不返回 空的视觉证据字段;默认验证开启时,截图只作为前述证据不足时的最终兜底。返回的是 紧凑证据而非完整场景图或截图。统一定位器:页面控件优先使用
ui_analyze_scope返回的 CSS;CSS 当前不可用时 回退 AXrole/name/description,再回退 XPath,最后才使用经analysis_id校验的 顶层 viewport 绝对坐标。坐标回退仅对 click/dblclick/rightclick 生效,fill/press 等 动作必须提供定位器,不会被静默降级成点击。ui_click是常用点击入口,ui_interact覆盖 fill、press、select 等其他动作。
配合 Playwright 1.60/1.62 新特性形成完整的 AI 测试闭环:
推荐的技术分工
FastMCP 运行时:本项目使用 Python Playwright 驱动共享浏览器,负责 MCP 调用、iframe/frame 选择、trusted 输入以及点击后的 Portal 事件采集。
官方
@playwright/mcp:借鉴其 accessibility snapshot、ARIA 语义定位和结构化工具返回方式;它适合作为通用网页探索能力,不替代本项目的 Ant Design 浮层专用检测器。官方
@playwright/test:在独立的 Node/TypeScript 测试工程中承担稳定回归,用 fixtures 隔离登录态,用 projects 覆盖 Chromium/Firefox/WebKit,并在 CI 运行 trace/HTML report。不要把 Playwright Test 的 worker 生命周期直接复用为 FastMCP 的全局 singleton。
Profile、指标与真实页面回归
ui_profile暴露aps-antd当前配置:活动 Tab iframe 选择器、Portal/下拉选择器、定位顺序 (CSS → AX → XPath → text/placeholder → coordinate) 以及 VTable 视觉验证顺序。可用QA_AUTOMATION_PROFILE和QA_AUTOMATION_ACTIVE_IFRAME_SELECTOR配置;当前 profile 只在服务进程内解析一次。所有浏览器/UI/VTable 工具的响应附带
metrics,automation_metrics提供进程内最近调用和聚合统计, 用于发现响应过大、跨 iframe 扫描过慢或工具重试异常。指标不落盘,服务重启后清空。APS 真实页面回归位于
tests/e2e/aps_clean_changeover_spec.py,默认不触碰浏览器;确认已在 9222 端口打开“产品工艺 > 清洗改机设置”后执行:APS_E2E=1 uv run python -m unittest -v tests.e2e.aps_clean_changeover_spec物料替代明细页的双 VTable、编辑器和空白保存提示场景,需要先切换到对应模块,再增加
APS_E2E_DETAIL=1 APS_DETAIL_RUN=1。空白保存仍由页面状态和APS_E2E_VALIDATE_SAVE=1控制,避免误提交业务数据。CI 中该回归不随 push/pull request 运行:
.github/workflows/ci.yml提供e2e作业,仅在 手动触发(workflow_dispatch) 时于能访问 APS 系统的自托管 runner 上执行,运行前会先做 CDP 连通性预检。触发时可配置aps_cdp_url与e2e_runner,勾选run_detail一并跑物料明细页场景。前置条件由人工保证: runner 本机 Chrome 已用--remote-debugging-port=9222启动并停留在目标模块 页面;未停留在目标模块时测试自动 skip 而非失败。APS_E2E_VALIDATE_SAVE会提交业务数据,保持仅限本机手动执行,永不进入 CI。ui_snapshot:page.aria_snapshot(mode='ai', boxes=True)把 accessibility 树(含[ref=xx]元素引用与[box=x,y,w,h]视口坐标)喂给 AI —— 官方 Playwright MCP 的"语义之眼"。VTable 本体是 canvas(单元格不进 a11y 树,仍走确定性几何定位), 但工具栏/弹窗/编辑器输入框全在树里,AI 先读快照再决定交互目标。ui_screenshot使用 Playwright 的页面裁剪能力截取指定元素的实际可见区域;定位器沿用ui_interact的 CSS → AX → XPath → text/placeholder 顺序,并支持padding。VTable 单元格 或分析返回的坐标可传x/y/width/height做顶层 viewport 截图;默认max_bytes=2MB, 超限时返回 failed 且只保留文件。截图一律落盘到.qa-automation/screenshots/,响应只 返回文件路径path(不回传 base64),需要看像素时直接打开该文件,避免大图撑爆上下文。 结果提供digest,适合交互前后视觉比对。vtable_meta/vtable_read_cells:先用 VTable 内部 API 读规模 (rowCount/colCount/冻结行列)与区域值,做到"先看全局再动手"。vtable_drop_files:Locator.drop(payload, position=)(1.60 新增)模拟 native 拖放,position 由getCellRelativeRect换算成.vtable容器相对坐标,精确把 文件落到目标单元格(图片/文件列上传)。iframe 感知(表格在 iframe 里也照点不误):实测 WMS 应用把 VTable 渲染在
/static/old/scm-spo这个 iframe 里,而page.mouse用的是主页面视口坐标。vtable_frame自动在页面所有 frame 中定位含.vtable的 frame(主 frame 优先),vtable_cell_click/vtable_cell_info/vtable_meta/vtable_read_cells/vtable_drop_files内部自动走该 frame;ui_click/ui_snapshot支持frame参数:frame=None主页面、frame="vtable"自动定位含表格的 iframe、 其它值按 iframe name 或 URL 子串匹配(如"application"/"scm-spo")。未找到显式 frame 会返回失败,不会静默改点主页面。单元格坐标 = VTablegetCellRelativeRect(canvas 相对)+ canvas 在 frame 内偏移 + iframe 元素在主页面视口偏移 —— 三条坐标 空间拼接成page.mouse坐标,实测跨 iframe 点击命中、回读选中区间验证通过。活动模块优先:真实系统的二级菜单位于
.ant-tabs-tabpane[role="tabpanel"][aria-hidden="false"] iframe。frame="active"会优先解析这个 iframe;vtable_frame也会优先从活动模块查找 VTable,再回退到 所有 frame。没有该 Tab 结构的页面仍可使用frame="vtable"或 name/URL 子串。 这是业务页面 profile,不是通用 iframe 规则,可通过环境变量QA_AUTOMATION_ACTIVE_IFRAME_SELECTOR覆盖。Portal / 消息即时观测:React Ant Design 的 Modal、Drawer、Dropdown、Select、 Picker、Popover、Tooltip、Message、Notification 等通常追加到所属 iframe 的
document.body,也可能由getPopupContainer追加到顶层文档。ui_click会在真实点击前为主文档和当前全部 iframe 安装MutationObserver,点击后在settle_ms(默认 300ms,上限 2000ms)内返回结果。VTable 单元格则使用vtable_cell_click(..., observe_after=True)走同一侦测器。 交互期间新挂载的 iframe 会通过frameattached/framenavigated监听器和add_init_script尽早注入观察器,排空阶段再做一次兜底扫描;因此短生命周期 toast 即使在动态二级模块中创建也能保留事件证据。跨域 iframe 无法执行同源 DOM 观察脚本,会在observer_errors中明确返回。ui_events保留已经消失的短生命周期浮层,overlays是相对点击前新增或文本变化的 结果,visible_overlays是结束时仍在 viewport 内的结果。每项带frame_id/frame_url/frame_name、scope、kind、文本、ARIA role、稳定 CSS selector、overlay_id、可选parent_overlay_id、所属 frame 的box以及主页面 viewport 的page_box。rendered、viewport_visible、actionable分别表示已布局、与 viewport 相交、可作为交互作用域;notification/tooltip 可被报告,但不会抢占focus_layer。 单独的overlay_scan只做当前状态快照,不适合捕获瞬时 toast。 VTable 内嵌搜索编辑器的多个.virtual-option会合并为一个 dropdown,携带option_count与最多三个option_preview,避免候选项逐条占用上下文。context.focus_layer只从可交互的 Modal/Drawer/Dropdown/Popover 中选择,并优先 当前焦点、嵌套深度、有效 z-index 和 DOM 堆叠顺序;下一次控件分析应优先限制在该浮层内。低 token 页面上下文:
ui_page_context只返回page_id、URL、标题、frame 摘要、 活动 iframe、聚焦浮层和有限数量的可见 overlay。AI 每次交互前优先调用它, 下一步使用ui_analyze_scope:Modal/Drawer/Dropdown/Popover 可见且可交互时只返回该 浮层内控件,否则只返回顶层当前文档与活动 iframe 的有限控件。只有诊断语义结构时 才调用ui_snapshot,避免反复传输无关 iframe 和整页 DOM。overlay_scan默认scope="active"只看主文档和活动 iframe;没有活动 Tab iframe 时只看主文档。需要排查隐藏模块时显式传scope="all"。所有 overlay 工具支持max_results,默认最多返回 20 条。overlay_observe(stop=False)会在下一次 observe 调用时推进 baseline 并清空已读事件; 它适合连续诊断,而需要严格绑定“点击前/点击后”的场景应使用组合点击工具。事件缓冲区 溢出时返回events_truncated=true和dropped_event_count,调用方不得把截断结果当作 完整事件流。浏览器生命周期:优先调用
browser_start(port=9222, headless=false)启动受管 Chrome;它会创建隔离的临时 profile、等待/json/version就绪并自动接管。启动前会 预检端口:端口已有可用 CDP 端点(提示改用browser_connect复用)、被非 Chrome 服务占用、或 Chrome 启动即退出(profile 被其他实例锁定)时,都会立刻返回明确原因 与建议,不再空等超时。已有 Chrome 则调用browser_connect(port=9222)或传完整cdp_url;browser_close会终止本服务启动的受管进程,但对外部 CDP 浏览器只断开 连接。多账号会话:
browser_session(action="list")查看会话;create创建新的 BrowserContext(可传name和已有storage_state_path),select切换当前 Cookie 环境,save将登录态保存为 Playwright storage state,close关闭非默认 会话。后续页面、iframe、浮层和 VTable 工具只作用于选中的会话和页面。若被接管的 CDP Chrome 不允许创建上下文,工具会返回明确提示,此时为每个账号使用独立的user_data_dir与端口调用browser_start。 多标签页先调用browser_pages,再用browser_select_page(page_id)显式固定当前页;之后页面、iframe、浮层与 VTable 工具不会再逐次猜页。
依赖 playwright>=1.62(可选,uv sync --extra browser);未安装时工具返回
可操作报错,不影响服务器其余功能。
部署与分发
fastmcp.json 是运行配置的单一来源。依赖环境只由外层 uv run 创建;
fastmcp.json 不声明第二个 UVEnvironment,避免重复派生 uv run --skip-env。
仓库根目录的 .env.qa-automation.example 是共享运行变量模板;本机复制为
.env.qa-automation 后由 uv run --env-file 显式加载。该文件属于 MCP 服务项目,
其中的产物路径保持相对;最终解析基准由 Agent 传入的使用方项目 cwd 决定。
# 禁用 Python 标准输出缓冲,保证 stdio MCP 消息立即发送给 Agent。
PYTHONUNBUFFERED=1
# 选择页面适配 Profile;aps-antd 是内置页面策略,不限制使用方项目类型。
QA_AUTOMATION_PROFILE=aps-antd
# 是否在浏览器页面中显示 MCP 模拟鼠标指针,支持 true/false。
QA_AUTOMATION_SHOW_CURSOR=true
# 单次浮层扫描最多返回的结果数量,至少为 1。
QA_AUTOMATION_OVERLAY_RESULT_LIMIT=20
# 所运行的使用方项目根目录;支持绝对路径(脱离 cwd 限制)或点号 . (默认基于当前工作目录)。
QA_AUTOMATION_PROJECT_ROOT=.
# 下载、截图、会话等产物根目录;相对路径基于使用方项目根目录。
QA_AUTOMATION_ARTIFACT_ROOT=.qa-automation
# FastMCPApp 执行记录目录;相对路径同样基于使用方项目根目录。
QA_AUTOMATION_DATA_DIR=.qa-automation/data环境变量 | 默认值 | 作用 |
|
| 禁用 stdout 缓冲,避免 stdio MCP 消息延迟。 |
|
| 选择浏览器页面定位与浮层适配策略;名称不限定使用方项目类型。配置了未知名称时会告警并回退到默认 |
|
| 控制浏览器页面中的模拟鼠标指针。 |
|
| 所运行的使用方项目根目录。支持绝对路径(优先级高于 |
|
| 下载、截图、会话和浏览器 Profile 的统一产物根目录。 |
|
| FastMCPApp 执行记录和表单提交记录目录。 |
下文将 Agent 当前打开并使用该 MCP 服务的任意项目统一称为“使用方项目”;它不要求 特定业务类型,也不要求包含本 MCP 的源码或配置文件。
场景 A:直接打开并开发/测试本 MCP 项目自身 (OMP / VS Code / Trae)
在当前项目根目录下运行时,客户端默认就会以当前目录作为工作目录。此时仓库根目录
自带的 .mcp.json 不需要且严禁配置 "cwd": "${workspaceFolder}":
OMP 的变量展开规则仅支持系统环境变量(
${VAR}/${VAR:-default}),不支持 IDE 专有的宏${workspaceFolder};若配置了未解析的${workspaceFolder},OMP 会将其作为字面量传递给 Windows 底层CreateProcess,导致报[WinError 123] 文件名、目录名或卷标语法不正确并连接失败;省略
cwd时,OMP、VS Code、Trae 均会天然使用当前项目根目录启动服务。
{
"mcpServers": {
"qa-automation": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--project",
"D:/Developer/Hoolinks/Qa-Automation-MCP",
"--extra",
"browser",
"--env-file",
"D:/Developer/Hoolinks/Qa-Automation-MCP/.env.qa-automation",
"fastmcp",
"run",
"D:/Developer/Hoolinks/Qa-Automation-MCP/fastmcp.json",
"--no-banner"
]
}
}
}场景 B:在其他外部项目(如 APS 项目)中使用本 MCP 服务
当 Agent 打开外部项目时,可通过 Agent 平台的全局用户配置(例如 Trae 的
AppData/Roaming/TRAE SOLO CN/User/mcp.json)加载本服务。此时由 IDE 全局管理器
负责将 ${workspaceFolder} 展开为用户当前正在使用的外部项目目录:
{
"mcpServers": {
"qa-automation": {
"command": "uv",
"cwd": "${workspaceFolder}",
"args": [
"run",
"--project",
"D:/Developer/Hoolinks/Qa-Automation-MCP",
"--extra",
"browser",
"--env-file",
"D:/Developer/Hoolinks/Qa-Automation-MCP/.env.qa-automation",
"fastmcp",
"run",
"D:/Developer/Hoolinks/Qa-Automation-MCP/fastmcp.json",
"--no-banner"
]
}
}
}配置核心关注点:
cwd: "${workspaceFolder}":仅在跨项目全局配置中生效,指向 Agent 当前打开的使用方项目;QA_AUTOMATION_PROJECT_ROOT环境变量(推荐跨平台通用方案):对于不支持"cwd"参数或不支持${workspaceFolder}变量展开的 Agent 客户端(如部分 CLI 工具或特定 IDE),可在 MCP 配置的"env"中直接添加"QA_AUTOMATION_PROJECT_ROOT": "D:/path/to/project",其优先级高于cwd,所有产物均会自动落盘至该指定项目目录下;uv run --project D:/Developer/Hoolinks/Qa-Automation-MCP:指定 MCP 依赖和源码;fastmcp run D:/Developer/Hoolinks/Qa-Automation-MCP/fastmcp.json:官方声明式入口。 当前 FastMCP 3.4.6 的 filesystem source 实际相对进程cwd解析,而不是按配置 文件目录解析;因此本机fastmcp.json使用 MCP 服务文件的绝对路径,确保使用方 项目工作区作为cwd时仍可加载服务。启动命令为:
uv run \
--project D:/Developer/Hoolinks/Qa-Automation-MCP \
--extra browser \
--env-file D:/Developer/Hoolinks/Qa-Automation-MCP/.env.qa-automation \
fastmcp run D:/Developer/Hoolinks/Qa-Automation-MCP/fastmcp.json \
--no-banner所有持久化业务产物限制在使用方项目的 ${workspaceFolder}/.qa-automation/:
.qa-automation/
├── data/ # FastMCPApp 执行与提交记录
├── downloads/ # Playwright/CDP 浏览器下载
├── screenshots/ # ui_screenshot 显式截图
├── sessions/ # browser_session storage state
└── browser-profile/ # browser_start 受管 Chrome Profile截图结果落盘到使用方项目工作区 .qa-automation/screenshots/ 并返回文件路径 path,
不再回传 base64(如集成视觉模型需要像素,可自行读取返回的文件);下载目录优先通过
Chromium CDP 配置,并保留 Playwright download 事件持久化作为退路。browser_session、
vtable_drop_files 接受工作区内相对或绝对路径,越出使用方项目工作区的路径会被拒绝。
项目结构
FastMCP 官方不强制唯一目录结构;官方文档推荐用 fastmcp.json 作为配置真源,并通过
聚焦服务器组合或按功能组织组件。本项目采用组合服务器模式,保留现有公共工具名,避免
namespace 造成破坏性重命名:
Qa-Automation-MCP/
├── fastmcp.json # FastMCP 声明式运行配置
├── .mcp.json # Agent Host 项目级自动发现
├── .env.qa-automation.example # MCP 共享运行变量模板
├── pyproject.toml # Python/uv 项目元数据
├── qa_automation/ # 通用 UI 自动化测试框架
│ ├── workspace.py # 使用方项目工作区与产物路径边界
│ ├── browser.py # Chrome/CDP/Context/Page 生命周期
│ ├── interaction/ # DOM 定位、交互、快照与证据契约
│ ├── overlay/ # Portal/ARIA 浮层观测
│ ├── profiles.py # 页面 Profile 与定位策略
│ ├── components/
│ │ └── vtable/ # 可选 VTable 组件适配器及 JS 资源
│ ├── mcp/
│ │ ├── server.py # FastMCP 组合根和 stdio 入口
│ │ ├── servers/ # 浏览器/UI/VTable/诊断/演示子服务器
│ │ ├── resources/ # MCP 资源
│ │ ├── apps/ # FastMCP Apps 与演示数据
│ │ └── metrics.py # 工具可观测性
│ └── assets/ # 框架运行资产
├── tests/
└── docs/替换为真实数据 / 真实执行
数据:编辑
qa_automation/mcp/apps/sample_data.py的TEST_CASES/MOLD_MASTER_FIELDS,保持同构即可。真实执行:
execute_test_case目前是模拟执行。接入真实浏览器时,可先调browser_open(url)打开页面,再按"AI 闭环"驱动:CDP 多页签先
browser_pages→browser_select_page;随后调用ui_page_context→ui_analyze_scope,只读取当前焦点控件;表格调用
vtable_analysis读取列头图标、值单元格交互和有限样本;已知字段时优先vtable_cell_resolve/vtable_cell_click_by_field,必要时再用vtable_read_cells;vtable_cell_click仍支持明确 col/row 的场景并 trusted 点击,需要验证 Portal 时传observe_after=True;DOM 按钮使用ui_click,按需传frame点 iframe 内工具栏/弹窗按钮并立即读取浮层事件;vtable_cell_info前后确认,vtable_drop_files覆盖拖放上传;只有诊断时再取ui_snapshot的完整 ARIA 子树; 页面内的 VTable 脚本仍可通过client.read_resource("vtable://js/...")读取。 整个流程由 AI 按 "语义目标 → 确定性解析 → trusted 操作 → 回读验证" 闭环完成。真实物理拖拽使用
ui_mouse_drag(start_x, start_y, end_x, end_y),使用底层事件流 (起点按下 mousePressed → 24+ 步连续细密轨迹移动 mouseMoved → 终点释放 mouseReleased) 驱动,并带全流程虚拟光标反馈。调用前必须先获取待拖拽对象的起始坐标与目标位置的结束坐标:Canvas 列表/表格(如 VTable 列重排、列宽调整):先通过
vtable_analysis获取 待移动列头与目标列头的point视口坐标;常规 DOM 元素或滑块:先通过
ui_analyze_scope或ui_snapshot获取目标元素的page_box视口中心坐标。
截图边界:ui_screenshot 只有在客户端明确调用时才执行页面截图,并保存到使用方项目
工作区的 .qa-automation/screenshots/,响应只返回文件路径 path(不携带 base64)。
普通点击不会隐式落盘;VTable 点击校验使用的微型图像只保留在内存。Playwright 页面
截图通常不会修改 DOM 或滚动页面,但有头硬件加速模式仍可能发生短暂合成器同步;对
VTable 点击请使用 verify=False,需要视觉诊断时再显式调用 ui_screenshot。
Available Tools
37 toolsautomation_metricsB
返回浏览器侧工具的近期耗时、响应体积和上下文 token 估算。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does disclose that the token count is an estimate, but it does not state whether the call is read-only, what 'recent' means, or whether metrics are cumulative or scoped. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence states the returned quantities without filler. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and an output schema, so the description does not need to explain return shape. The only noticeable gaps are the undefined 'recent' window and unspoken limit semantics, which are minor for a low-complexity metrics 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?
Schema description coverage is 0% and the description does not mention the limit parameter at all. The name and default imply it caps the number of returned metric records, but the tool description adds no meaning beyond the schema, so the agent must guess how limit affects the result.
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 names a concrete action and resource: it returns recent latency, response size, and token estimates for browser-side tools. This is enough to know what the tool does, but it does not explicitly differentiate it from sibling profiling/metrics tools such as ui_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no exclusions, and no context such as checking performance before a task or after a browser action. The only hint is the tool's stated purpose, which leaves the selection condition to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_closeA
关闭 Playwright 浏览器,释放资源。
CDP 连接的外部浏览器只断开连接,受管 Chrome 和 Playwright 浏览器则关闭。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It meaningfully explains the side effects: releasing resources, disconnecting external CDP browsers, and actually closing managed Chrome/Playwright browsers. This is strong behavioral transparency, though it could additionally mention idempotence or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The primary action is front-loaded, and the important behavioral nuance about CDP versus managed browsers is delivered efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless close-operation tool with an output schema present, the description is complete: it states the core action, the resource affected, and the key behavioral difference between connection types. Nothing essential for the agent to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is no parameter burden on the description. The baseline of 4 applies because the description accurately reflects a parameterless operation without needing to add parameter-level 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 a specific verb ('关闭' / close) and a clear resource ('Playwright 浏览器'), and further distinguishes behaviors for CDP-connected external browsers versus managed browsers. This clearly separates the tool from siblings like browser_open, browser_start, and browser_connect.
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 the tool (when a browser or CDP connection should be closed) and provides context about how different connection types are handled. However, it does not explicitly state alternatives, exclusions, or when not to use this tool, leaving the usage guidance mostly inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_connectA
经 CDP 连接一个已运行的浏览器,默认连接 9222 端口。
复用外部浏览器与其已打开的 VTable 页面(含页面内的实例),无需重新导航; vtable_cell_click / ui_snapshot 等工具直接驱动该页面。 关闭时仅断开连接,不关闭外部浏览器进程。
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | ||
| cdp_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it mostly delivers. It discloses that the tool connects via CDP on port 9222, reuses pages and in-page instances, and that closing only disconnects without closing the external browser process. It does not cover connection failures or authentication, but the essential lifecycle behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action is in the first sentence, usage context in the second, and close behavior in the third. Every sentence adds distinct value, and there is no redundant restating of the tool name or schema.
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 tool's purpose, usage context, and non-destructive close behavior, and an output schema exists, so return-value documentation is not required. However, it omits the semantics of the cdp_url parameter and does not explicitly state when not to use this tool versus browser_start or browser_open. These are notable gaps for a connection tool with zero parameter-level schema descriptions.
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 both parameters. It mentions the default port 9222, which helps with the 'port' parameter, but it never explains the 'cdp_url' parameter, its format, or how it interacts with 'port'. This leaves a meaningful gap for an agent deciding what to pass.
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: connect via CDP to an already-running browser. It clearly distinguishes itself from siblings by noting it reuses an external browser and its open VTable pages without navigation, and that closing only disconnects rather than killing the process. This makes the tool's role unmistakable relative to browser_open, browser_start, and browser_close.
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 gives clear context for when to use the tool: when you want to reuse an external browser with already-open VTable pages and drive them directly, avoiding re-navigation. It does not explicitly name alternatives like browser_start or browser_open as the contrast, but the 'reuse external browser' and 'no re-navigation' phrasing implies the alternative scenario well enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_openC
打开 Playwright 浏览器并导航到目标页面(后续工具复用同一浏览器)。
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| headless | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose that a browser is opened, navigated, and reused, but it omits important behavior such as whether an existing session is replaced, what happens if the browser cannot open, or the effect of the default headless mode.
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 filler words. It conveys the main action and the shared-session behavior efficiently, though it is terse enough to leave semantic gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser-control tool with no annotations and minimal parameter coverage, the description is incomplete. It covers the overall purpose and the shared browser trait, but an agent would still lack guidance on headless behavior, session lifecycle, and how this operation relates to the browser_start/browser_connect siblings.
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 add meaning for either parameter. 'url' is only implied by 'navigate to target page', and 'headless' is not mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('open Playwright browser') and resource ('target page'), and adds the shared-browser behavior. It is clear, but it does not explicitly differentiate from sibling tools like browser_start or browser_connect.
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 the browser is reused by subsequent tools, but it gives no explicit guidance on when to choose this tool over alternatives such as browser_start or browser_connect. There are no exclusion conditions or when-not-to-use hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pagesA
列出所有 BrowserContext 的标签页及稳定 page_id,并标记当前选中页。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool lists all tabs across all BrowserContexts, provides stable page IDs, and marks the current selected page. However, it does not explicitly state that the operation is non-destructive or whether it changes the current selection.
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 verb and scope, includes the key detail of stable page_id, and mentions the selected-page marker. Every word contributes; there is no 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?
For a parameterless listing tool with an output schema, the description is fairly complete: it specifies the scope (all BrowserContexts), the stable identifier, and the selected-page flag. The only missing piece is an explicit statement about read-only behavior, but the operation's nature and the output schema mitigate that.
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 schema fully documents that nothing is needed. The description correctly says nothing about parameters. Baseline 4 for zero-param tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb '列出' (list) and clearly identifies the resource: all tabs across all BrowserContexts with stable page_id, and marks the currently selected page. This differentiates it from sibling tools like browser_select_page or browser_open by focusing on read-only listing rather than selection or creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for obtaining an overview of open pages, but it does not explicitly state when to use it versus alternatives such as browser_session or browser_select_page. No when-not scenarios or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_select_pageA
显式选中一个 page_id;后续页面、iframe、浮层和 VTable 工具固定使用该页。
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly reveals that this tool has a persistent side effect: later page, iframe, overlay, and VTable operations will be bound to the selected page. It does not mention failure behavior or reset semantics, but the key state-changing behavior is transparently stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the core action and then states the consequence. Every clause earns its place, with no filler or redundant restatement.
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 one-parameter tool, the description covers the main purpose and side effect, and an output schema exists so return-value details are not required. However, it leaves a notable gap: the agent is not told how to obtain a valid page_id (for example, via browser_pages), nor what happens if the page is invalid or not yet open. Overall it is workable but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a single required page_id string, but schema description coverage is 0%. The description merely repeats 'page_id' without adding meaning: it does not explain where the id comes from, what format it expects, whether it must come from a prior browser_pages call, or how invalid ids are handled. Since the schema is minimal, the description needed to compensate and did 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 identifies the action ('显式选中' — explicitly select) and the target resource (a page_id), and explains the consequence that subsequent page, iframe, overlay, and VTable tools will use that page. This also distinguishes it from sibling tools like browser_open and browser_pages by making the context-selection role explicit.
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 conveys when to use the tool: when a specific page should become the fixed target for later tool calls. It does not explicitly name alternatives or exclusions, but the behavioral consequence ('后续...固定使用该页') provides clear usage context for an agent deciding whether to select a page before invoking other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_sessionC
管理隔离 BrowserContext 会话,支持账号 Cookie 环境切换和 storage state 持久化。
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| action | No | list | |
| session_id | No | ||
| storage_state_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
无任何 annotations,描述承担全部行为披露责任,但仅说明了会话隔离和持久化能力,未披露各 action(list/create/select/save/close)的副作用——尤其 close 可能销毁会话、save 可能写盘、select 会切换当前活动上下文。这些行为在 schema 的 enum 中可见但无说明。
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?
单句中文描述,核心动词在前,能力细节随后,没有任何冗余词。长度与工具复杂度基本匹配,但考虑到 5 个 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?
这是一个包含 5 个 action、4 个参数、无 annotations 的会话生命周期管理工具,复杂度较高。描述未覆盖各 action 的具体行为、会话生命周期(select 切换后旧会话是否保留、close 是否销毁保存的状态)等关键决策信息。有输出 schema 可豁免返回值说明,但其余上下文缺口明显。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema 参数描述覆盖率为 0%,描述必须补偿但只间接映射了 storage_state_path(通过"storage state 持久化"),对 name、session_id 的用途和 storage_state_path 是输入还是输出路径均未解释。action 枚举本身在 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?
描述使用了明确的动词"管理"和资源"隔离 BrowserContext 会话",并补充了"账号 Cookie 环境切换"和"storage state 持久化"两个独特能力,能与 browser_start/browser_connect 等兄弟工具区分开。但未显式点名与浏览器连接类工具的分工边界,故不给满分。
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?
没有说明何时使用本工具而不是 browser_start、browser_connect、browser_close 等兄弟工具,也没有提及前置条件(如是否需要已启动的浏览器实例)或排除场景。使用场景只能从"会话管理"的语义中隐式推断。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_startB
在指定端口启动受管 Chrome,并自动通过 CDP 接管。
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | ||
| headless | No | ||
| timeout_ms | No | ||
| user_data_dir | No | ||
| executable_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It does convey that the tool starts Chrome and automatically takes over via CDP, but it omits behavioral side effects such as occupying a port, launching a persistent process, or behavior when the port is already in use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It states the core action and mechanism immediately, and every word contributes meaning.
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 five parameters, no annotations, and non-trivial launch/takeover behavior, one sentence is insufficient. The description does not cover prerequisites, lifecycle expectations, or how this tool relates to the browser_* sibling tools, although the presence of an output schema partially accounts for return-value documentation.
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 needed to compensate, but it only indirectly references the port. The meanings and nuances of headless, timeout_ms, user_data_dir, and executable_path are left entirely to their names and default values in 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 identifies a specific verb ('start'), a resource ('managed Chrome'), and a mechanism ('CDP takeover') on a given port. This distinguishes it from sibling tools like browser_connect or browser_open, though it does not name alternatives explicitly.
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 intended use is implied: launch a managed Chrome instance before CDP-based interaction. However, there is no explicit guidance about when to use this tool versus browser_connect or browser_open, nor any exclusion criteria or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case_execution_panelB
用例执行台:选择用例 -> 提交 -> 后端工具执行 -> 展示结果。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal that the tool triggers backend execution and displays results, which is useful context. However, it does not mention side effects, required prior UI state, or how results are surfaced beyond a vague 'display' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence flow diagram is compact, front-loaded with the tool name and purpose, and contains no filler. The arrow-based notation is efficient, though slightly telegraphic.
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 tool, the description is adequate but not fully complete. It conveys the core execution workflow and result display, but omits preconditions, expected UI context, and behavioral caveats. There is also no output schema to provide return-value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is an empty object with full coverage, so the baseline is 4. The description's references to selecting and submitting a case describe the intended workflow rather than parameters, and no parameter explanation is necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (用例/test cases) and the execution operation, and it outlines the expected outcome (展示结果). The flow 'select case -> submit -> backend tool executes -> display result' makes the tool's role reasonably clear, though it does not explicitly distinguish itself from sibling tools like test_case_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a workflow but no decision guidance. It does not state when to use this tool versus alternatives, what preconditions exist (e.g., a case must already be selected), or when not to use it. Sibling tools suggest related functionality, but the description offers no comparison or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chooseA
Present the user with a set of options to choose from.
Call this tool when you need the user to make a decision between discrete alternatives. Use it proactively — don't ask the user to type their choice in chat when you can present clean, clickable options instead.
The user will see a card with one button per option. When they click one, their choice appears as a message in the conversation (as if the user typed it), like:
"Which deployment strategy?" — I selected: Blue-greenIMPORTANT: After calling this tool, you MUST stop and wait for the user's response. Do not continue or take any other actions until you see the "I selected:" message.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional heading for the card. | |
| prompt | Yes | The question or decision to present to the user. | |
| options | Yes | List of options the user can choose from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the UI behavior ('card with one button per option'), the resulting user message ('as if the user typed it'), and the critical blocking constraint: 'After calling this tool, you MUST stop and wait for the user's response.' This is rich, actionable 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 well-structured and front-loaded: purpose first, then usage guidance, then behavioral details, then the critical wait instruction. Every sentence contributes essential information, and the example makes the interaction concrete without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema and no annotations, this description is complete: it covers what the tool does, when to use it, what the user sees, how the result arrives, and the required post-call behavior. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents title, prompt, and options clearly. The description adds an illustrative example but not significant new parameter semantics, so it appropriately sits at the baseline 3 for high 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 opens with a specific verb and resource: 'Present the user with a set of options to choose from.' It clearly distinguishes itself from sibling tools by focusing on user choice among discrete alternatives, and the rest of the description reinforces this purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this tool when you need the user to make a decision between discrete alternatives' and adds a when-not: 'don't ask the user to type their choice in chat when you can present clean, clickable options instead.' This gives the agent clear direction on when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_managerB
Upload and manage files. Drop files here to send them to the server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states that files are sent to the server, with no mention of side effects, authentication needs, file handling limits, overwrite behavior, or return values. "Manage files" is too vague to convey behavioral implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the core purpose. Both sentences earn their place: one states the high-level function and the other clarifies the input mechanism. It could be tightened by replacing the vague "manage" with specific operations, but it is not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and only an empty parameter schema, so the description must provide nearly all context. It does not explain how an agent should invoke the tool, what happens after upload, or what the response contains. This is insufficient for reliable tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema description coverage by default. The description adds a hint that the tool accepts files as a drop input, which is relevant context, though it does not define any programmatic parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action, "Upload and manage files," and clarifies with "send them to the server." It identifies the resource as files, but "manage" is broad and does not fully differentiate from sibling tools like list_files and read_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as list_files, read_file, or vtable_drop_files. The phrase "Drop files here" suggests a user-facing drag-and-drop context but does not help an agent decide when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_prefab_uiA
Execute Prefab Python code in a sandbox and render the result.
The code runs in a Pyodide WASM sandbox with full Python support.
Import everything you use. Use the components tool to look up
available components and their import paths.
Always use PrefabApp as the outermost context manager — this enables streaming so the UI renders progressively as code is written:
from prefab_ui.components import Column, Heading, Text, Row, Badge
from prefab_ui.app import PrefabApp
with PrefabApp() as app:
with Column(gap=4):
Heading("Dashboard")
with Row(gap=2):
Text("Revenue: $1.2M")
Badge("On Track", variant="success")For interactive UIs, pass initial state as a dict and use .rx
on stateful components for reactive bindings:
from prefab_ui.components import Column, Slider, Text
from prefab_ui.app import PrefabApp
with PrefabApp(state={"threshold": 50}) as app:
with Column(gap=4):
slider = Slider(value=50, min=0, max=100, name="threshold")
Text(f"Threshold: {slider.rx}%")slider.rx produces {{ threshold }}, a template expression
that resolves against client-side state. Use Rx("key") directly,
or apply pipe filters: Rx("balance").currency() produces
{{ balance | currency }}.
Available pipes: upper, lower, currency, length, json, round(n), default(val), truncate(n).
Charts live in prefab_ui.components.charts:
from prefab_ui.components.charts import BarChart, ChartSeries
BarChart(
data=[{"month": "Jan", "rev": 100}, {"month": "Feb", "rev": 200}],
series=[ChartSeries(data_key="rev", label="Revenue")],
x_axis="month",
)Values passed via data are available as global variables in the
code. Python features like loops, f-strings, and comprehensions all
work.
Layout patterns:
Card sub-components (CardHeader, CardContent, CardFooter) have built-in padding. Don't add extra padding to them. For a simple card without sub-components, use
Card(css_class="p-6").Use
Grid(columns=N, gap=4)for equal-width cards or panels. Grid handles sizing automatically — no flex classes needed. For unequal widths, pass a list:Grid(columns=[2, 1], gap=4)gives a 2:1 ratio.Row is for inline elements (badges, icons + text, buttons). Prefer Grid when children should have equal or proportional widths. Row does not wrap by default.
Column and Row accept
gap(Tailwind scale: 1-12),align(cross-axis), andjustify(main-axis) as native props — prefer these over raw css_class for spacing.Use
css_class="overflow-hidden"on containers if chart or content edges should clip to the container boundary.
Args: code: Python code that builds a Prefab component tree. data: Values injected as variables in the sandbox namespace. sandbox: A Sandbox instance. If not provided, a new one is created on each call.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does it well: it discloses Pyodide/WASM sandboxing, streaming through PrefabApp, injection of data as globals, and a new sandbox per call. It stops short of error or return-contract details, which keeps it from a 5.
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 long but intentionally structured: lead, code examples, and bullet layout rules. Some repetition exists (data-as-globals appears twice), but the length is justified for a code-generation tool with a custom component model.
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 complex tool with no annotations and no output schema, it covers code patterns, component lookup, reactive state, pipes, charts, layout conventions, and data injection. Missing exact return/error semantics and the undocumented sandbox argument leave a small but real 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?
Because schema description coverage is 0%, the Args section is essential and it defines code as 'Python code that builds a Prefab component tree' and data as values injected as variables. The 'sandbox' arg documented in the description is not in the schema and is disallowed by additionalProperties, a minor mismatch, but the actual parameters are clarified.
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 opening sentence 'Execute Prefab Python code in a sandbox and render the result' names a specific action and resource and matches the tool name. It also disambiguates from siblings by framing the tool as code execution plus rendering. The body further clarifies it produces Prefab component UIs.
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 gives concrete directives such as 'Use the components tool to look up available components' and 'Always use PrefabApp as the outermost context manager'. It also provides explicit layout decision rules, for example 'Prefer Grid when children should have equal or proportional widths' and 'Row does not wrap by default.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
List all uploaded files with metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It adds one meaningful behavioral qualifier ('with metadata'), implying the tool returns file listing information rather than file contents. It does not disclose limits, ordering, filtering, or what 'uploaded' encompasses, though the existing output schema covers the return structure.
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 six-word sentence that front-loads the verb and resource with zero filler. Every word earns its place, and the length is appropriate for a parameterless listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is nearly complete: the agent knows what action to take and what kind of result to expect. The only gaps are sibling differentiation (file_manager ambiguity) and clarification of the term 'uploaded', both minor 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 there is nothing for the description to explain beyond what the empty schema already conveys. Per the baseline for parameterless tools, this is appropriately handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), a clear resource ('uploaded files'), and a scope qualifier ('all'), making the core action unambiguous. The 'with metadata' qualifier usefully signals that file contents are not returned, distinguishing it from read_file. However, it does not explicitly differentiate from sibling file_manager, which may also handle file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as file_manager or read_file, and states no exclusions or prerequisites. The intended use case (enumerate available files) is only weakly implied by the verb and resource; with 38 siblings, routing guidance would materially help an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mold_master_entryB
模具主数据录入:由内置样例数据驱动的动态表单。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It reveals only that the tool presents a dynamic form driven by built-in sample data, but does not state whether invoking it creates, updates, or writes data, whether it requires user interaction, or what side effects occur. Given the name suggests an entry/mutation operation, this is a meaningful transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with the core purpose at the front and the dynamic-form detail immediately after. It does repeat the tool name's exact concepts, but the sample-data qualifier adds useful distinguishing information. It is concise and 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 zero-parameter, no-output-schema tool, the core invocation surface is covered: an agent knows it involves mold master data entry via a dynamic form. However, the description does not explain how this tool relates to siblings like mold_master_view, what happens after the form is used, or whether any follow-up action is expected. It is adequate but minimal for an agent deciding whether to call it.
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 zero parameters, and the description does not suggest any hidden inputs are needed. With schema description coverage at 100% and no parameters to document, there is little for the description to add. The no-parameter baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action (录入, data entry) on a specific resource (模具主数据, mold master data), and adds the qualifier that it is a dynamic form driven by built-in sample data. This gives the agent a reasonable idea of what the tool does and distinguishes it from the sibling mold_master_view at a basic level. The description repeats the tool name's exact wording but is not purely a tautology.
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 use is implied by the word 录入 and the resource name, so an agent can infer it is for entering mold master data. However, the description does not explicitly explain when to use this tool instead of mold_master_view or the other form-related siblings, and it provides no exclusions or alternative routing. The guidance is present only by inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mold_master_viewA
模具主数据只读视图:渲染全部字段(内置样例)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden; it does state that the tool is read-only and uses a built-in sample, which signals no mutation and fixed sample data. However, it does not describe return format, error behavior, or what 'rendering' produces.
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 short sentence, front-loaded with the tool's nature ('read-only view') and then a concise statement of content ('renders all fields, built-in sample'). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only view, the description captures the essential facts: read-only, all fields rendered, and sample data embedded. It lacks explicit context about why the sample exists or how the result is used, but nothing critical is missing for invoking the 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 tool has zero parameters and the empty schema already covers 100% of the interface, so the description needs to add no parameter information. Per the calibration baseline for 0-param tools, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (模具主数据/mold master data) and the action (renders all fields in a read-only view). It is clear, though it does not explicitly distinguish itself from the sibling mold_master_entry or other view-like 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 guidance on when to call this tool versus alternatives such as mold_master_entry, no exclusions, and no context about expected use case. The agent is left to infer the intended scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overlay_observeA
在限定窗口内收集 Ant Design Portal/ARIA 浮层事件,覆盖全部 iframe。
适合已由其他工具或人工操作触发页面交互后的诊断;默认在取样后停止监听。
| Name | Required | Description | Default |
|---|---|---|---|
| stop | No | ||
| settle_ms | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully reveals that the tool observes events across all iframes, operates within a limited window, and by default stops listening after sampling. This is meaningful non-obvious behavior, though it does not explicitly state whether the tool is read-only or describe side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no filler: the first states the scope and action, the second provides usage context and a key default behavior. Information is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers what the tool does, when it is appropriate, and a key behavioral default, and there is an output schema to describe return values. However, the complete absence of parameter semantics and explicit sibling differentiation leaves noticeable gaps for an agent trying to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain stop, settle_ms, or max_results. The phrase about stopping after sampling hints at the stop default, but it does not actually define the parameters or their relationships. At 0% coverage, the description needed to compensate and did 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 states a specific action and resource: collecting Ant Design Portal/ARIA overlay events within a limited window and covering all iframes. This clearly distinguishes the tool's core function from general UI tools, though it does not explicitly contrast with the sibling overlay_scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this is suitable for diagnosis after page interactions have been triggered by other tools or manual actions, and notes that it stops listening after sampling by default. This gives clear context for when to use it, but it does not mention alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overlay_scanA
扫描当前页面范围内可见的 Ant Design Portal / ARIA 浮层。
默认 scope=active 只扫描主文档和当前激活 iframe;scope=all 才扫描所有 iframe。
返回每个浮层的 kind、文本、role、定位摘要、可见性、box 以及所属 frame。
对短暂 message/toast,请改用 ui_click 或
vtable_cell_click(observe_after=True),以免在单次静态扫描前消失。
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | active | |
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries some burden. It discloses that scanning is a static snapshot, mentions the risk of transient overlays disappearing, and describes returned fields. However, it does not mention side effects (though it's presumably read-only) or exact visibility/box semantics; still, it adds useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose, then scope semantics, then return summary, then routing guidance. Each sentence adds value; the final sentence is a helpful warning. Slightly longer than necessary but 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 complexity of overlay scanning across iframes, the description covers the core selection logic, return summary, and the transient-overlay caveat. It lacks explicit mention of max_results bounding and exact 'active iframe' definition, but the output schema and defaults help. Overall sufficient for an agent to decide and invoke.
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 schema only lists scope and max_results with defaults. The description explains scope values ('active' vs 'all') and max_results is not mentioned by name but is implied by '每个浮层' and '最多'? Actually max_results is not described; the description partially compensates for scope but not max_results. No parameter descriptions in schema, so baseline is low, but the description covers scope meaning partially.
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 ('Ant Design Portal / ARIA 浮层') within the current visible page, and clearly distinguishes the scopes. It also separates this tool from sibling overlay_observe and ui_analyze_scope by specifying it targets portals/ARIA overlays.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use scope=active vs scope=all, and provides a concrete 'when not to use' for transient message/toast by directing to ui_click or vtable_cell_click(observe_after=True). This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileB
Read an uploaded file's contents by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly indicates a read-only operation ('Read') and what it operates on, but it does not mention edge cases, exact-name matching, side effects, or any limitations.
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 filler, starts with the core action, and immediately conveys the essential information. It is as concise as possible while still being meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and an output schema, the description is minimally sufficient but still lacks usage context and behavioral caveats. An agent can invoke it, but it would benefit from a note on sourcing the file name or on behavior when the file does not exist.
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 the parameter. It only says 'by name,' which maps to the single 'name' parameter, but it does not clarify the expected format, whether the full filename is required, case sensitivity, or how the name relates to other tools like list_files.
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 resource ('uploaded file's contents'), which makes the tool's purpose clear. It distinguishes from siblings like list_files and file_manager by focusing on reading contents rather than listing or manipulating files, though it does not explicitly name the alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving file contents by name, which is enough for a simple read operation. However, it provides no explicit when-to-use guidance, exclusions, or comparison against alternative file-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_approvalA
Request human approval before proceeding with an action.
Call this tool proactively whenever you are about to take a significant or irreversible action and want the user to confirm first. Do NOT wait for the user to ask you to seek approval — use your judgment about when confirmation is appropriate.
The user will see an approval card with the summary, optional details, and Approve/Reject buttons. When they click a button, their decision appears as a message in the conversation (as if the user typed it), like:
"Deploy v3.2 to production" — I selected: Approveor:
"Deploy v3.2 to production" — I selected: RejectIMPORTANT: After calling this tool, you MUST stop and wait for the user's response. Do not continue, do not take any other actions, do not generate further output until you see the "I selected:" message. If approved, continue with the action. If rejected, acknowledge and ask how to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Heading for the approval card (default: "Approval Required"). | |
| details | No | Optional longer explanation, context, or consequences of the action. | |
| summary | Yes | Brief description of the action requiring approval (shown prominently to the user). | |
| reject_text | No | Label for the reject button (default: "Reject"). | |
| approve_text | No | Label for the approve button (default: "Approve"). | |
| reject_variant | No | Button style for the reject button (same options plus "outline"). | |
| approve_variant | No | Button style — "default", "destructive", "success", or "info". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers thoroughly. It discloses that the user will see an approval card with Approve/Reject buttons, that the decision appears as a conversation message in a specified format, and that the agent must stop and wait after calling. This goes well beyond a generic 'request approval' summary.
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 long but every sentence earns its place: it covers purpose, proactive usage, UI behavior, response format, and the stop-and-wait requirement. It is front-loaded with the core purpose and structured so the critical behavioral instruction is prominent. No redundant or filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully explains what happens after the call, what the user response will look like, and how to handle both approval and rejection. For a tool whose entire purpose is to pause for human input, this is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains each parameter's purpose, defaults, and nullability. The description adds illustrative examples of the summary text and the resulting user message, but it does not meaningfully extend the schema's parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Request human approval before proceeding with an action.' It clearly distinguishes the tool's role by framing it as a proactive confirmation mechanism, not a generic prompt or display tool. This is unmistakably different from sibling tools like `choose` or `ui_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 explicitly states when to use the tool: 'Call this tool proactively whenever you are about to take a significant or irreversible action.' It also gives a when-not instruction: 'Do NOT wait for the user to ask you to seek approval.' This is strong, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_prefab_componentsA
Search the Prefab component library.
Use this tool to look up exact argument names, accepted values, and usage examples before writing component code. The skill covers patterns and layout; this tool has the API details.
The query matches component names and descriptions.
Space-separated terms match independently, so
"Card Badge Metric" returns all three.
When a query matches a small number of components, full details
(docstrings, args, examples) are shown automatically. For broad
searches, a compact listing is returned instead. Use detail to
override this behavior.
Args: query: Filter by component name or description. Space-separated terms are OR-matched. detail: Show full docstrings and args. Defaults to automatic (detailed for ≤5 matches, compact otherwise). limit: Max components to return in detail mode (default 8). No limit in compact mode.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max components to return in detail mode (default 8). No limit in compact mode. | |
| query | No | Filter by component name or description. Space-separated terms are OR-matched. | |
| detail | No | Show full docstrings and args. Defaults to automatic (detailed for ≤5 matches, compact otherwise). | |
| components | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does well: it discloses that space-separated terms are OR-matched, that full details appear automatically for small match sets, that broad searches return a compact listing, and that detail/limit can override this. This gives an agent an accurate mental model of the tool's dynamic behavior beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then matching behavior, then an Args list. The example query 'Card Badge Metric' clarifies OR-matching without extra prose. Every sentence earns its place and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is highly complete for a search tool: it explains matching semantics, automatic vs. detail mode, override behavior, and limits. The output schema exists, so explaining return shape is unnecessary. The only completeness gap is the undocumented 'components' parameter, which keeps it from a 5.
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?
Three of the four parameters are well covered in the schema, and the description reinforces them with concrete semantics such as OR-matching, the '≤5 matches' automatic threshold, and the default limit of 8. However, the 'components' parameter has no schema description and is completely absent from the description's Args list, leaving a notable gap at 75% 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 opens with a specific verb and resource: 'Search the Prefab component library.' It then sharpens the purpose by stating the tool is for looking up exact argument names, accepted values, and usage examples before writing component code, and it distinguishes the tool from the skill-level layout/pattern guidance. This is clear enough to differentiate from siblings like generate_prefab_ui.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool: before writing component code, when exact API details are needed. It also contrasts with 'the skill' by saying the skill covers patterns and layout while this tool has API details. The query-matching and automatic detail-mode behavior further set expectations for how broad vs. narrow searches behave.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_case_tableB
调拨订单测试用例总表:内置样例数据,支持搜索/排序/分页。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses built-in sample data and support for search/sort/pagination, which are useful. However, it does not explicitly state read-only behavior or side effects, so transparency is incomplete.
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 one compact sentence that front-loads the resource name then lists capabilities. It contains no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description covers what the table contains and what interactions are supported. But since there is no output schema and no usage context, an agent is left uncertain about the exact return format and when to select this tool over 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?
The schema has zero parameters, so parameter semantics are not a real burden. The description's mention of built-in data and table capabilities is sufficient at the zero-parameter baseline.
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 identifies a specific resource (transfer-order test case summary table) and states it contains built-in sample data with search/sort/pagination. It is clear what the tool offers, though it lacks an explicit operation verb and does not differentiate from sibling table-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement about when to use this tool or when to prefer a sibling like vtable_meta, vtable_read_cells, or case_execution_panel. The mention of built-in sample data weakly implies a demo/read-only context, but no explicit selection guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_analyze_scopeA
只分析当前活动页面范围或所聚焦浮层内的可操作控件。
有 Modal/Drawer/Dropdown/Popover 时裁剪底层页面;否则只扫描顶层当前文档与 激活的 AntD Tab iframe。结果是紧凑 role/name/CSS 定位清单,不展开整页 DOM。
| Name | Required | Description | Default |
|---|---|---|---|
| max_controls | No | ||
| max_overlays | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It openly discloses cropping behavior, iframe handling, and the fact that it does not expand the entire DOM. It does not explicitly state read-only/side-effect status or failure behavior, but the scoping caveats provide solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the core purpose, then add conditional behavior and output format with no fluff. The structure is easy for an agent to parse and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return fields. The main gaps are undocumented parameters and no explicit alternative routing, but the scope, cropping, and iframe behavior are well covered, making it near-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%, and the description never mentions max_controls or max_overlays or how they affect the scan or result size. The compact-list promise only indirectly relates to max_controls, so the description does not compensate for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('analyze') and a bounded resource: operable controls within the current active page or focused overlay. It also distinguishes itself from full-page DOM inspection by promising a compact role/name/CSS locator list, which clearly separates it from siblings like ui_snapshot or ui_page_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 provides concrete conditions: when Modal/Drawer/Dropdown/Popover is present it crops the underlying page, otherwise it scans the top-level document and active AntD Tab iframe. This gives clear context for when the tool applies, but it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_clickA
统一点击页面控件,并即时返回 Portal、提示和聚焦浮层。
可同时传多个来自分析结果的候选定位;执行顺序固定为 CSS → AX role/name (可带 description) → XPath → text/placeholder → 顶层视口绝对坐标。坐标仅作为 最终回退,且传 analysis_id 时会拒绝陈旧的 VTable 分析坐标。
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| css | No | ||
| name | No | ||
| role | No | ||
| text | No | ||
| frame | No | ||
| xpath | No | ||
| settle_ms | No | ||
| timeout_ms | No | ||
| analysis_id | No | ||
| description | No | ||
| max_results | No | ||
| placeholder | No | ||
| expect_input | No | ||
| observe_after | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It goes beyond a simple 'click' by revealing the return payload (Portal, hints, focused overlay), locator priority order, coordinate fallback behavior, and the rejection of stale VTable coordinates when `analysis_id` is provided. This is strong, though it does not cover all side effects or preconditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but information-dense. The first sentence gives the purpose and immediate result; the second lays out the locator order and fallback rule. Every sentence contributes, and the most important information is front-loaded.
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 16-parameter tool with no annotations and 0% schema coverage, the description covers the central behavior well but leaves several operational parameters undocumented. The presence of an output schema lowers the need to describe return values, yet the gaps around `frame`, `observe_after`, and `expect_input` mean the definition is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add real semantic value by explaining how CSS, role/name, XPath, text/placeholder, and x/y relate to each other, and by qualifying `analysis_id` behavior. But several parameters remain unexplained: `frame`, `settle_ms`, `timeout_ms`, `max_results`, `expect_input`, and `observe_after`, so compensation is only partial.
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 opens with a specific verb and resource: 'unified click page controls' and states what it returns (Portal, hints, focused overlay). It is clear about the core operation, but it does not explicitly differentiate this tool from the sibling `ui_interact`, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides meaningful usage context: it says multiple candidate locators can be passed from analysis results, defines a fixed execution order, and marks coordinates as a fallback. However, it never says when to prefer `ui_click` over alternatives like `ui_interact` or `vtable_cell_click`, leaving the when-to-use guidance mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_interactA
在当前页面/活动 iframe 中执行统一 DOM 交互并返回聚焦浮层结果。
分析器返回 CSS 时优先 CSS;否则按 AX role/name/description、XPath、text/
placeholder 依次尝试。x/y 是顶层 viewport 绝对 CSS 像素,只在前述候选都无法
解析时作为可信点击回退。坐标应直接取自 vtable_analysis,带 analysis_id 会在
执行前校验页面、iframe、滚动和布局。expect_input=True 时会验证
本次交互后是否真的出现并聚焦 input/textarea/contenteditable。未显式指定
frame 时优先当前激活的 AntD Tab iframe,再回退顶层文档。分析结果中的
frame="active" / "top" 可固定上下文。默认点击后立即
观察 Portal、消息、下拉和通知,限制 max_results 以控制 MCP token。
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| css | No | ||
| key | No | ||
| name | No | ||
| role | No | ||
| text | No | ||
| frame | No | ||
| value | No | ||
| xpath | No | ||
| action | Yes | ||
| in_iframe | No | ||
| settle_ms | No | ||
| timeout_ms | No | ||
| analysis_id | No | ||
| description | No | ||
| max_results | No | ||
| placeholder | No | ||
| expect_input | No | ||
| observe_after | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses locator resolution priority, x/y fallback behavior, validation behavior with analysis_id, iframe context selection, expect_input verification, and default post-click observation of portals/messages/dropdowns/notifications. This is unusually transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes: purpose is front-loaded, then resolution order, fallback semantics, validation, frame logic, and observation behavior. A bulleted or grouped structure would improve scannability, but the length is justified for a 20-parameter tool with no schema descriptions.
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 high complexity (20 params, no annotations, 0% schema coverage), the description covers behavior and many parameters well. However, it leaves critical gaps around valid action values and the meaning of value/key/in_iframe/settle_ms/timeout_ms. The output schema reduces the need to describe return values, but the missing action semantics prevents full self-sufficiency.
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 substantially by explaining css, role, name, description, xpath, text, placeholder, x/y, analysis_id, frame, expect_input, and max_results. However, the required action parameter's accepted values are not described, and value/key/in_iframe/settle_ms/timeout_ms are only implied or omitted.
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?
States a specific action ('executes unified DOM interactions') and target ('current page/active iframe'), and describes the returned focused overlay result. However, it does not explicitly contrast itself with siblings like ui_click or vtable_cell_click, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear operational conditions: CSS is preferred when the analyzer returns it, x/y are only fallbacks, analysis_id triggers pre-execution validation, frame defaults to the active AntD tab iframe, and expect_input verifies focus. It lacks explicit 'when not to use this tool' or named sibling alternatives, but the within-tool usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_page_contextA
返回当前页面、活动 iframe 和聚焦浮层的紧凑上下文。
这是 AI 每次准备下一步交互时的低 token 入口;只有需要详细控件树时 才继续调用 ui_snapshot。
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the result is compact and low-token and lists the scoped context categories, which is useful. However, it does not explicitly state whether the operation is read-only, whether the context may be stale, or whether any side effects occur. For a context-reading tool this is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states the core function and output scope; the second gives usage guidance and the relationship to ui_snapshot. Everything included earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema, and one optional parameter. The description supplies the key routing decision against ui_snapshot and explains the compact nature of the result. The only real gap is the uninterpreted max_results parameter, which is minor but prevents a perfect score.
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 only parameter, max_results, has 0% schema description coverage and is not mentioned in the description. The name hints at a result cap, but the description adds no meaning beyond the raw parameter name and default value, so it fails to compensate for the low 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 opens with a specific verb, '返回' (return), and precisely enumerates the resource scope: current page, active iframe, and focused overlay. It also distinguishes itself from ui_snapshot by calling this a compact/low-token context, so an agent can tell them apart without opening schemas.
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 states when to use this tool: every time the AI prepares its next interaction, as a low-token entry point. It also says to continue to ui_snapshot only when a detailed control tree is needed, providing clear when-to-use and when-not-to-use guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_profileA
返回当前页面 Profile、定位顺序和 VTable 点击验证顺序。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. The verb '返回' suggests a read-only retrieval, which is helpful, but the description does not disclose prerequisites such as an open page, whether the tool performs any actual clicking as part of verification, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the verb and immediately lists the concrete outputs, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool with an output schema, the description is mostly complete: it tells the agent what kind of data to expect. It could be stronger by defining what 'Profile' and '定位顺序' mean or clarifying that no clicks are actually performed, but the output schema likely covers return structure.
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 there is nothing to document beyond the schema. The description adds no parameter details, but none are needed; the baseline of 4 for a 0-parameter tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb, '返回' (returns), and specifies three concrete outputs: current page Profile, positioning order, and VTable click verification order. It is specific enough to identify the tool's purpose, though it does not explicitly distinguish itself from sibling tools like ui_page_context, vtable_meta, or ui_analyze_scope, and some terms are domain jargon.
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 this tool is used when the agent needs the current page's Profile, positioning order, or VTable click verification order. However, it provides no explicit when-to-use or when-not-to-use guidance, and no alternatives are named, leaving the agent to infer the right context among many similar UI/VTable sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_screenshotB
截取指定 DOM 元素或顶层 viewport 区域并返回受限大小的图像。
元素定位顺序与 ui_interact 相同:CSS → AX role/name/description → XPath → text/placeholder。frame 未指定时优先活动 iframe。若没有可用定位器,可传 x/y/width/height 使用顶层 viewport CSS 像素矩形;截图不会静默把 iframe 内坐标 当成顶层坐标。结果包含 base64 图像、裁剪框、frame、定位来源和摘要哈希。
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| css | No | ||
| name | No | ||
| role | No | ||
| text | No | ||
| frame | No | ||
| width | No | ||
| xpath | No | ||
| height | No | ||
| padding | No | ||
| quality | No | ||
| in_iframe | No | ||
| max_bytes | No | ||
| timeout_ms | No | ||
| description | No | ||
| placeholder | No | ||
| image_format | No | png |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses the locator precedence, iframe priority, top-level coordinate semantics, and the exact result fields (base64, crop box, frame, locator source, hash). This is strong transparency, although it omits behavior around size limits or timeouts.
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?
Four compact sentences, each carrying useful information; the main purpose is front-loaded and technical details follow in a logical order. No 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?
For an 18-parameter tool with no annotations, the description covers the central selection logic and result shape, but it under-documents several input parameters and the interaction with siblings. The output schema presumably covers return values, so some completeness is recovered.
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 has 0% description coverage, so the description must compensate. It explains the core locator parameters (css, role, name, description, xpath, text, placeholder) and the x/y/width/height rectangle fallback, but it leaves many parameters (image_format, quality, max_bytes, padding, timeout_ms, in_iframe) undescribed.
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 opens with a clear verb and scope: capturing a DOM element or top-level viewport region and returning a resized image. It also outlines the locator fallback order, but it does not explicitly differentiate from sibling tools like ui_snapshot, so 4.
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 explains how element locators work and when to fall back to x/y/width/height, but it never states when to choose this tool over related siblings (e.g., ui_snapshot, overlay_scan). No explicit alternatives or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_snapshotA
抓取页面 aria 快照(mode='ai' + boxes),给 AI 一张"语义之眼"。
官方 Playwright MCP 范式:把 accessibility 树(含 [ref=xx] 引用和 [box=x,y,w,h] 视口坐标)喂给 AI。VTable 本体是 canvas(单元格不进 a11y 树,仍走确定性几何定位), 但工具栏/弹窗/编辑器输入框都在树里 —— 交互前先读快照,再决定点哪个。 selector 非空时只快照该选择器命中的子树。
frame=None → 主页面;frame="active" → 当前激活的 AntD Tab iframe; frame="vtable" → 自动定位含表格的 iframe; 其它值按 iframe name 或 URL 子串匹配(如 "application" / "scm-spo")。
| Name | Required | Description | Default |
|---|---|---|---|
| boxes | No | ||
| depth | No | ||
| frame | No | ||
| ai_mode | No | ||
| selector | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does substantial work: it explains that output includes refs and box coordinates, that selector scopes to a subtree, how frame routing works, and that VTable canvas cells are excluded. The only notable omission is the behavior/effect of the depth parameter.
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 front-loaded with the core purpose and then uses compact, well-separated paragraphs for VTable caveat, selector behavior, and frame modes. Every sentence adds useful information with no filler or restatement of the schema.
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?
Overall it equips an agent to call the tool correctly in most cases: purpose, output nature, frame semantics, selector scoping, and the canvas limitation are all covered, and an output schema exists. It falls short only on depth and lacks an explicit pointer to sibling vtable tools for canvas-cell access.
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 adds real semantics for boxes and ai_mode (mode='ai' + boxes), selector (subtree scoping), and frame (None/active/vtable/name-or-URL rules). However, depth receives no explanation, leaving one of five parameters 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 opens with '抓取页面 aria 快照(mode='ai' + boxes)' — a specific verb, resource, and mode — and frames the output as a '语义之眼' accessibility tree containing refs and viewport boxes. This clearly distinguishes ui_snapshot from screenshot/overlay siblings by presenting it as an a11y-tree reader.
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 gives an explicit when-to-use cue: '交互前先读快照,再决定点哪个' (read snapshot before interacting), and explains that VTable canvas cells are absent from the a11y tree and instead use deterministic geometry. It doesn't explicitly name the alternative vtable_* tools, so it stops short of an explicit routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_analysisA
扫描当前 VTable 的列头、交互图标和有限值单元格的交互证据。
结果只来自 VTable API 和已渲染 scenegraph,不会点击或展开 canvas DOM。每个 表头/单元格及其图标都附带顶层页面 viewport 绝对坐标;editor 中的 click_opens_dom_input 表示该单元格已有 editor,且 VTable 配置允许单击触发 原生输入控件。把其中 geometry.point 原样交给 ui_interact 即可执行。 同一 iframe 内有多张可见 VTable 时,首次调用只返回极简表格目录;从中选择 table_index 再分析,避免把坐标落到另一张表。默认 interactive 模式只展开有 交互证据且当前可见的样本,不返回业务值;可用 fields 缩小字段范围。诊断时才 使用 mode="full"、include_values=True 或 visible_only=False,以控制 MCP token。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | interactive | |
| fields | No | ||
| max_columns | No | ||
| sample_rows | No | ||
| table_index | No | ||
| visible_only | No | ||
| include_values | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: it states it reads only VTable API/scenegraph, never clicks or expands canvas DOM, returns absolute viewport coordinates, explains click_opens_dom_input, and documents multi-table catalog behavior and token-control modes. No contradiction with annotations exists.
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 purpose is front-loaded and nearly every clause adds behavioral or workflow value. The single dense paragraph is information-rich but would benefit from clearer separation of modes, catalog selection, and diagnostic toggles.
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 7-parameter tool with no annotations and an output schema, the description is almost complete: workflow, coordinate handoff, defaults, and diagnostic overrides are all covered. The missing semantics for max_columns/sample_rows and the lack of explicit sibling-tool exclusions keep it from a 5.
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 compensates by explaining mode, fields, include_values, visible_only, and table_index. It leaves max_columns and sample_rows undocumented, so parameter coverage is strong but not complete.
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 opens with a specific verb and resource: scanning current VTable headers, interaction icons, and limited-value cells for interaction evidence. It clearly distinguishes the tool's scope, though it does not explicitly name sibling tools to contrast against.
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 provides operational instructions: first call returns a catalog when multiple VTables exist, table_index disambiguates, and interactive vs full modes are explained. However, it never states when to prefer vtable_analysis over alternatives like vtable_cell_info or vtable_read_cells, so usage boundaries remain implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_cell_clickA
点击 VTable 指定单元格(col/row,0 起)。
流程:绑定实例 → 滚动到视口 → VTable API 取确定性中心点 → trusted 鼠标点击
(真实输入管道,isTrusted=true)→ 回读选中区间/编辑器状态验证,未命中自动重试。
observe_after=True 时会在点击前监听主页面和全部 iframe,并在点击后立即
返回 Ant Design Portal/消息/下拉浮层的新增事件与可见状态。
| Name | Required | Description | Default |
|---|---|---|---|
| col | Yes | ||
| row | Yes | ||
| button | No | left | |
| verify | No | ||
| settle_ms | No | ||
| max_results | No | ||
| double_click | No | ||
| observe_after | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden — and it delivers substantially. It reveals the synthetic-but-trusted input pipeline (isTrusted=true), the scroll-to-viewport and deterministic-center-point mechanism, read-back verification of selection/editor state, automatic retry on miss, and the observe_after overlay-listening behavior across the main page and all iframes. Gaps are minor: it does not state side effects when a trusted click navigates or opens an editor, but the verification step partially covers this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action before the procedural detail. The flow is encoded as a dense parenthetical chain (绑定实例 → 滚动 → 取中心点 → 点击 → 验证 → 重试) that earns each element, and the observe_after behavior gets its own sentence. It is information-dense rather than bloated, though the long chain requires careful parsing.
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 complex 8-parameter tool with zero annotations and 0% schema coverage, the description covers the core workflow remarkably well and the output schema covers return values. However, half the parameters (button, settle_ms, max_results, double_click) lack any guidance, prerequisites beyond '绑定实例' are not elaborated, and failure retry behavior is only mentioned in passing. The tool is usable but an agent would still guess on several inputs.
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. It does add real meaning: the (col/row,0起) coordinate system, the verify behavior via '回读选中区间/编辑器状态验证', and a thorough explanation of observe_after. However, button, settle_ms, max_results, and double_click remain completely unexplained — settle_ms and max_results in particular are opaque without context. Compensation is partial, roughly half the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: '点击 VTable 指定单元格(col/row,0 起)' — clicking a designated VTable cell by 0-based col/row coordinates. This clearly distinguishes it from sibling vtable_cell_click_by_field (field-based) and generic ui_click, though it never explicitly names those alternatives. The core purpose is unambiguous and immediately actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied through the detailed pipeline (bound instance → scroll to viewport → deterministic center point → trusted click → verify → retry) and the observe_after conditional. It signals this tool is for reliable, verified VTable interactions, but never states when to prefer it over vtable_cell_click_by_field, vtable_cell_resolve, or ui_click, and gives no exclusions. The conditional 'observe_after=True 时' is the only explicit selection guidance and concerns a mode, not tool choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_cell_click_by_fieldB
按业务字段 + 记录索引点击 VTable 单元格。
地址、滚动和中心点全部由 VTable 内部 API 解析,然后使用 Playwright trusted mouse 输入;AI 不需要也不能为该工具提供像素坐标。
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | ||
| button | No | left | |
| verify | No | ||
| settle_ms | No | ||
| max_results | No | ||
| double_click | No | ||
| record_index | Yes | ||
| observe_after | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds useful context: addressing, scrolling, and centering are resolved internally via VTable APIs, and it uses Playwright trusted mouse input. It does not disclose verification/observation behavior, side effects, or failure characteristics, but the existing disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and has no redundant wording. It could be slightly more structured with parameter hints, but it is appropriately concise for a tool whose behavior is partly encoded in its name.
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?
This is an 8-parameter tool with no annotations and no schema descriptions, yet the description only covers the two core inputs and a coordinate constraint. It does not explain the other six parameters, expected preconditions, or side effects; the output schema reduces the need to document returns, but the description is still far from complete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the eight parameters. It clarifies field and record_index as 'business field + record index', but says nothing about button, verify, settle_ms, max_results, double_click, or observe_after, leaving most parameters semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'click VTable cell by business field + record index', with a concrete verb and resource. The method distinction ('by_field') is present but it does not explicitly name or contrast with the sibling vtable_cell_click, so it stops short of a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a cell is identified by business field and record index, and it explicitly tells the AI not to provide pixel coordinates. However, it gives no explicit guidance on when to prefer this tool over vtable_cell_click or other alternatives, nor does it state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_cell_infoA
读取 VTable 单元格信息:值/行为分类/编辑能力/中心点/是否在视口。
交互前后各调一次,让 AI 确认目标与结果(Playwright MCP 的验证回路思想)。
| Name | Required | Description | Default |
|---|---|---|---|
| col | Yes | ||
| row | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While no annotations are provided, the description directly signals a read-only behavior through '读取' and enumerates exactly what information will be collected, including value, behavior classification, editability, center point, and viewport status. It also frames the tool as a verification mechanism, implying no state mutation. It could go further by mentioning error edge cases or whether the read has any layout/scroll side effects, but for this simple read tool the behavioral disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one sentence states the tool's function and output scope, and a second sentence gives the practical verification-loop usage pattern. There is no filler, and the most important information is front-loaded.
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 output schema covers return-value details, and the description explains what the tool reads and how to use it in before/after interaction verification. It is largely complete for a simple single-cell lookup, though it could be more complete by noting when to prefer sibling tools such as vtable_read_cells for bulk reads or vtable_meta for table-level metadata.
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 description does not explicitly explain 'col' or 'row'. However, the parameter names are inherently clear as grid coordinates, and the surrounding '单元格' (cell) context makes their role obvious. The description adds no coordinate-system details or constraints, leaving only a minor gap.
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 opens with a specific action and resource: '读取 VTable 单元格信息' (read VTable cell information), and lists concrete aspects it returns: value, behavior classification, editability, center point, and viewport visibility. This clearly separates it from click/drop/analysis tools, though it does not explicitly distinguish it from similarly named siblings like vtable_cell_resolve or vtable_read_cells.
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 gives explicit usage guidance: call once before and once after an interaction so the AI can confirm the target and the result, referencing the Playwright MCP verification-loop idea. This is strong contextual guidance, but it does not name alternatives or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_cell_resolveA
用 VTable 内部 API 将业务字段和记录索引解析为单元格地址。
优先调用 getCellAddrByFieldRecord,旧版本实例才回退到 getTableIndexByField + getTableIndexByRecordIndex。不会扫描 DOM 或猜测坐标。
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | ||
| record_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It usefully reveals that it uses VTable internal APIs, prefers getCellAddrByFieldRecord, falls back for old-version instances, and does not scan the DOM or guess coordinates. It does not explicitly state whether the operation is read-only or what errors may occur, but the disclosed constraints are meaningful.
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 three short sentences with no filler. The core purpose is front-loaded, implementation details follow, and the final sentence clarifies a key limitation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description does not need to detail return values. It covers purpose, implementation strategy, version fallback, and the no-DOM-scan constraint. It could improve by naming when to choose this over sibling tools like vtable_cell_info or vtable_read_cells, but it is otherwise sufficiently complete for a moderately complex 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?
Schema description coverage is 0%, so the description must compensate. It identifies field as a 'business field' and record_index as a 'record index', but it does not explain when record_index is an integer versus an array, what field format is expected, or how multiple indices are handled. This is minimal semantic value beyond the parameter 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 begins with a specific verb and resource: '将业务字段和记录索引解析为单元格地址' (resolve business field and record index into cell address). It also distinguishes itself from DOM-scanning UI tools by stating '不会扫描 DOM 或猜测坐标', making its role clear relative to sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context—when you need an exact cell address from a field and record index—but it never explicitly names sibling alternatives or states when NOT to use this tool. The internal API preference and fallback logic describe implementation behavior, not user-facing selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_drop_filesA
把服务端本地文件拖放到指定 VTable 单元格(Playwright 1.60 Locator.drop)。
落点由 VTable getCellRelativeRect 换算成 .vtable 容器相对坐标,精确命中目标格。 files 为服务端文件路径列表(如 data/demo.xlsx);data 可附带剪贴板式键值。
| Name | Required | Description | Default |
|---|---|---|---|
| col | Yes | ||
| row | Yes | ||
| data | No | ||
| files | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself. It states the operation is an automated browser drag-drop via Playwright and explains the coordinate mapping, which is meaningful. It does not mention side effects such as file upload/change events, prerequisites like an active browser page, or reversibility, leaving some behavioral opacity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences deliver purpose, mechanism, and parameter meaning with no filler. The key action is front-loaded, and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition covers the core invocation facts: what is dropped, where, and how coordinates are resolved, and an output schema exists for return details. It omits preconditions such as an active connected browser and a rendered .vtable container, and it says nothing about failure modes. For a browser automation mutation, this is a modest 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?
The schema provides no parameter descriptions, but the description defines files as server-side file paths and data as optional clipboard-style key-values. It only indirectly covers col and row as 'specified cell' coordinates and does not state zero-based indexing or coordinate conventions. This partial compensation earns a middle score.
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 names a concrete action (dragging server-side files) and a precise target (a VTable cell), backed by an exact API (Playwright Locator.drop). This clearly distinguishes it from sibling tools that click, read, or resolve VTable cells, even though no sibling is named explicitly.
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 its use case: simulating a drag-and-drop of local server files onto a VTable cell. It does not explicitly state when to prefer it over alternatives such as vtable_cell_click or vtable_cell_info, nor does it state when not to use it. Usage is inferred rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_engine_dashboardB
VTable 引擎概览仪表盘:模拟表格实例状态 + 用例分布图。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does not disclose whether the tool is read-only, whether it changes state, what data source it uses, or what invoking it returns. The word '模拟' hints at simulated content but does not clarify behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler. It front-loads the resource and purpose and efficiently lists the two dashboard contents. Nothing extraneous appears.
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 tool, the core purpose is inferable, but the description lacks detail about what the invocation returns and whether it is purely observational. With no annotations and no output schema, the description only partially covers what an agent needs to know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is no parameter meaning for the description to clarify. Under the zero-parameter baseline, the description does not need to compensate for parameter documentation.
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 identifies a specific resource ('VTable 引擎') and a clear function ('概览仪表盘' showing simulated table instance status and use case distribution). It does not explicitly differentiate from sibling dashboard/panel tools like case_execution_panel or vtable_meta, so it stops short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this dashboard instead of related sibling tools, no conditions, and no exclusions. The agent must infer its usage from the name and content description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_metaA
读取 VTable 规模/冻结行列/主题等元数据(防御性取值)。
AI 先拿到 rowCount/colCount/frozenRowCount,再规划批量读取范围与滚动策略。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety burden. It explicitly says the operation is a read and adds 'defensive取值' (defensive retrieval), signaling it tolerates missing fields and has no destructive side effects. It does not over-elaborate on error behavior, but for a metadata getter this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core purpose and a useful parenthetical, followed by a concrete downstream workflow. Every phrase earns its place and there is no 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?
For a zero-parameter, metadata-only tool with an output schema, the description is complete: it states what is read, what fields matter, and how the agent should use them for later batch operations. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is no parameter burden to compensate for. The description sensibly focuses on what the tool returns rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('读取' / read) and a precise resource: VTable metadata covering scale, frozen rows/columns, and theme. It clearly differentiates this from cell-reading and cell-click tools by emphasizing metadata-oriented, defensive retrieval.
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 gives clear operational guidance: the AI should first fetch rowCount/colCount/frozenRowCount before planning batch reads and scrolling. It stops short of naming explicit alternatives or when-not-to-use cases, so it earns a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtable_read_cellsB
批量读取矩形区域(col0,row0)-(col1,row1)单元格值(行优先)。
| Name | Required | Description | Default |
|---|---|---|---|
| col0 | Yes | ||
| col1 | Yes | ||
| row0 | Yes | ||
| row1 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It accurately conveys a non-mutating read and adds the row-major traversal behavior, but it does not disclose coordinate conventions, endpoint inclusivity, reversed range handling, or error behavior on out-of-bounds coordinates.
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 well-structured sentence that front-loads the action and resource, then adds the relevant row-major detail. There is no filler or repetition.
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 four-parameter read tool with an output schema, the description is nearly adequate, but it omits coordinate conventions and boundary-condition handling that an agent would need to call it correctly on unusual inputs. It also provides no guidance for choosing among the vtable siblings.
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. It maps the four parameters to the two corners of a rectangle, which is meaningful, but it does not define bounds, inclusivity, or coordinate origin; the parameter names already suggest their column/row roles.
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 (batch read) and the resource (rectangular region of cells), and it adds the row-major ordering detail. It does not explicitly contrast with sibling tools like vtable_cell_info or vtable_cell_resolve, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of vtable_cell_info, vtable_cell_resolve, or other vtable siblings, and no exclusions or prerequisites. The intended selection context must be inferred entirely from the name and the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
37 tool updates
v0.1.0- First observed
automation_metrics - First observed
browser_close - First observed
browser_connect - First observed
browser_open - First observed
browser_pages - First observed
browser_select_page - First observed
browser_session - First observed
browser_start - First observed
case_execution_panel - First observed
choose - First observed
file_manager - First observed
generate_prefab_ui - First observed
list_files - First observed
mold_master_entry - First observed
mold_master_view - First observed
overlay_observe - First observed
overlay_scan - First observed
read_file - First observed
request_approval - First observed
search_prefab_components - First observed
test_case_table - First observed
ui_analyze_scope - First observed
ui_click - First observed
ui_interact - First observed
ui_page_context - First observed
ui_profile - First observed
ui_screenshot - First observed
ui_snapshot - First observed
vtable_analysis - First observed
vtable_cell_click - First observed
vtable_cell_click_by_field - First observed
vtable_cell_info - First observed
vtable_cell_resolve - First observed
vtable_drop_files - First observed
vtable_engine_dashboard - First observed
vtable_meta - First observed
vtable_read_cells
TDQS
Scored across 37 tools
The set contains several near-duplicate actions: ui_click vs ui_interact, browser_open vs browser_start vs browser_connect, and ui_snapshot/ui_page_context/ui_analyze_scope/overlay_scan all probe overlapping page state. The detailed descriptions help only after an agent has already selected a tool; the boundaries are not immediately obvious.
Useful prefixes like browser_, vtable_, ui_, and overlay_ exist, and names are consistently snake_case, but the style is mixed: browser_pages and vtable_meta are nouns, browser_open and vtable_read_cells are verbs, and case_execution_panel/mold_master_view are bare noun phrases. It is readable, but it does not follow a consistent verb_noun pattern.
With 37 tools, this far exceeds the typical 3-15 tool range for one server. The surface bundles VTable automation, Playwright/CDP browser control, file management, Prefab UI generation, approval dialogs, and sample-data views, making it feel like several servers merged into one.
For VTable automation, the core read/click/analyze/navigate workflows are present, including browser session management and cell-level interaction. However, there is no direct cell-value editing or text-entry tool, and the many unrelated sample-UI tools obscure a clear end-to-end lifecycle, so some flows require workarounds.
Maintenance
Related MCP Connectors
Let AI agents query data and act across all your business apps via MCP.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI to control browsers via natural language for web automation, testing, and data scraping. Supports Chrome-based browsers and integrates with any MCP-compatible AI tool.172-
- AlicenseBqualityDmaintenanceEnables AI-driven browser automation with advanced form testing, batch operations, and intelligent element extraction for MCP-compatible applications.1445 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to control a browser via MCP with structured perception, verified actions, and self-healing capabilities.1318 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables autonomous web QA by exposing Playwright browser control as MCP tools for navigation, accessibility snapshotting, interaction, and bug detection.2 npmMIT