tianshu-mcp
This server orchestrates external AI agents (Codex, ZCode, TraeWork) to run development tasks, with automated verification, rework loops, and visual baseline management.
Run & manage tasks:
run_taskstarts an async development task (optionally with auto-verify and auto-fix rounds);continue_taskresumes tasks awaiting user input;cancel_taskstops running tasks;query_taskpolls status/progress/logs;list_taskslists historical tasks.Verification & rework:
verify_taskruns project acceptance checks (typecheck/lint/test/build, code analysis) against git baseline without modifying source;rework_taskre-queues a failed/needs_attention task with feedback;get_task_reportretrieves full acceptance report.Visual baseline management:
prepare_visual_baselinecreates candidate screenshots/imports for review;approve_visual_baselinerecords approved baseline with digest after user review.Agent profiles:
get_profileslists available agent adapters and executable detection results.Multi-agent support: Supports GUI-driven agents (Codex desktop, ZCode, TraeWork via CDP) and CLI spawn agents (e.g., codex-cli), with per-project serial queues and global concurrency limits.
Safety & approval: Write tools are marked for host-side approval; path validation prevents writing outside project directories; server never stores API keys.
Async contract:
run_taskreturnstaskIdimmediately; long tasks are polled, avoiding blocking MCP calls.
Allows dispatching and orchestrating development tasks to OpenAI Codex agents (desktop GUI via CDP or headless CLI), including task management, automated verification, failure rework, and cancellation.
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., "@tianshu-mcpRun a task with Codex to fix the login bug, then verify acceptance and rework if needed."
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.
agent-foreman-mcp
面向任意 MCP 宿主的通用 AI-Agent 编排 MCP server
由你选择的 MCP 宿主(Claude Desktop / Cursor / ZCode / Cline / Windsurf 等)接入,作为标准 MCP server,调度外部 AI-Agent(Codex 桌面端、TraeWork / TRAE SOLO CN、ZCode 均经 CDP 驱动桌面 UI)完成 项目开发 → 验收 → 失败返修 → 再验收 的闭环。
English · 简体中文
这是什么
宿主(任何 MCP 宿主)是指挥;本 MCP server 是调度层 + 执行面 + 客观验收仪;外部 AI-Agent(Codex / TraeWork / ZCode GUI)是执行开发的「工人」。server 本身不绑定任何特定宿主——凡支持 stdio 传输的 MCP 宿主都可接入,接入方式见 宿主接入指南。
11 个 MCP 工具:
run_task / continue_task / query_task / list_tasks / get_task_report / cancel_task / verify_task / rework_task / get_profiles,外加视觉验收的prepare_visual_baseline / approve_visual_baseline。双轨返回:结果同时以「人类可读文本 +
---agent-foreman-meta---JSON 块」与 MCP 标准structuredContent投递,同一份字段、单一事实来源。旧式宿主可正则抽取文本块,现代宿主可直接消费结构化字段;工具已声明outputSchema,字段名稳定且只增不改。异步契约:
run_task秒回taskId,长任务用query_task轮询(长任务不卡tools/call)。客观验收:自动命令检查(typecheck/lint/test/build,缺则跳过 + 技术栈推导)+ 程序化代码分析(变更清单/diffstat/TODO·debugger·密钥形态等可疑标记),全部相对 git 基线,不自动 commit/stash。验收引擎 fail-closed:测试命令退出码为 0 但输出显示零用例时判失败;git 项目默认要求相对动工前基线产生变更(纯分析任务可在
.agent-foreman/acceptance.json设"requireChanges": false显式关闭)。验收并行度:命令检查默认有界并行(
verifyConcurrency,默认 2、范围 1–4)。检查项之间有顺序依赖时(后续检查读取 build 产物、带--fix、共享缓存目录)请设1完全退化为串行;项目级.agent-foreman/acceptance.json可覆盖,server 级在config.json。报告与日志格式不变(结果按声明顺序返回)。失败返修闭环:自动返修(
autoFixRounds)+ 手动rework_task;验收失败时自动生成修复计划文件(默认落在项目内.agent-foreman/plans/)并回填给 agent;轮次用尽 →needs_attention等宿主裁决。执行面:
driver: "gui"由显式 adapter 驱动桌面 UI(Codex / TraeWork / ZCode 各自使用隔离的 CDP 流程);driver: "spawn"走外部 CLI 子进程。无项目派发(ZCode):
run_task的projectPath可省略——ZCode 在default工作区承接任务,不登记/导入项目、不采集 Git 基线、不执行项目验收(结果以verificationNotApplicable: "no_project"结构化标注,verify_task/get_task_report返回不适用说明)。配套allowCreateProject: false可在目标目录未登记时于任何导入副作用之前停止派发。详见 ZCode CDP 适配器。调度纪律:每项目串行队列 + 全局并发上限(默认 2,可配)。
可选 AI 内容校验(默认关闭):校验图片或页面截图内容是否符合你显式声明的期望描述。判定完全委托给你自备的本地命令(MCP 不读取、不存储、不转发任何密钥,也不内置模型客户端),默认仅告警、逐规则可升级为致败;采样多数票 + 任务级缓存防抖,票不集中或低于置信度阈值判
uncertain(永不阻塞、不触发返修)。配置与命令契约见 视觉验收。不碰密钥:各 agent 用自己的登录态;本 server 不保存/转发任何 API key。可选 AI 内容校验同样不引入凭证管理——判定命令自己管密钥(见 SECURITY.md)。
可扩展:新 agent = 一个 profile(数据)+(如需)一个 adapter 文件,零改编排核心。
想理解内部结构:见 ARCHITECTURE.md(分层模型、模块边界、状态机、验收流水线、扩展点与已知缺口)。
Related MCP server: Cascade
快速开始
前置条件
项 | 要求 |
Node.js | ≥ 20(CI 覆盖 20 / 22 / 24) |
包管理器 | npm(仓库含 |
操作系统 | Windows / macOS / Linux(CI 三平台矩阵验证) |
被驱动的 agent 需按需自行安装:Codex 桌面端 / TraeWork(TRAE SOLO CN)/ ZCode 桌面端(GUI 驱动),或 codex CLI(无头路径,见下)。本 server 不需要它们的任何密钥。
安装 npm 包
npm i -g agent-foreman-mcp
# 或免安装直接用
npx -y agent-foreman-mcp接入你的宿主
在宿主的 MCP 配置里加一段 stdio server(键名视宿主而定,通常为 mcpServers):
{
"mcpServers": {
"agent-foreman": {
"command": "npx",
"args": ["-y", "agent-foreman-mcp"]
}
}
}各宿主(Claude Desktop / Cursor / ZCode / Cline / Windsurf)的具体配置位置、环境变量、冒烟步骤与常见问题,见 宿主接入指南。
从源码构建
npm ci
npm run build # 产出 dist/
node dist/index.js # 以 stdio 启动(由宿主拉起,通常无需手动运行)开发与门禁命令:npm run dev、npm run typecheck、npm run lint、npm test、npm run check:stdio(严格校验 stdout 只承载 MCP 协议消息)。
数据目录
默认 ~/.agent-foreman(可用环境变量 AGENT_FOREMAN_HOME 覆盖),首次启动自动创建。项目级验收配置放在项目内 <项目>/.agent-foreman/acceptance.json。
工具面(11 个)
工具 | 能力 / 审批 | 作用 |
| write + 审批 | 派活(可带自动验收/自动返修),异步返回 |
| write + 审批 | 恢复 |
| read | 轮询状态 / 进度 / 日志尾 |
| read | 历史任务过滤列表 |
| read | 某轮验收报告全文( |
| write + 审批 | 取消运行中任务:CLI agent kill 进程树;GUI agent 经 CDP 点击停止并在 |
| read | 对任务/项目路径做一次验收(不改源码) |
| write + 审批 | 手动返修(把失败报告喂回同一 agent) |
| read | 查看 agent 适配与可执行探测结果 |
| write + 审批 | 截图或导入参考图,生成待审阅候选和摘要 |
| write + 审批 | 用户审阅后校验摘要并写入基准与审批记录 |
返回值双轨:人类可读文本 +
---agent-foreman-meta---JSON 块(便于宿主正则抽取),同时以 MCP 标准structuredContent返回同一份字段(现代宿主直接消费)。错误路径同样提供structuredContent(至少含ok:false与message)。
审批由宿主实施:上表的「write + 审批」是暴露给宿主的标注(
_meta.requireApproval/annotations),标注本身不是安全边界——实际授权控制必须由宿主提供。
路径安全闸门:
projectPath在提交时校验——必须绝对路径、目录必须存在、符号链接经 realpath 归一(回执明示解析来源);主目录本身与系统/根级目录直接拒绝,防止 worker 写权限覆盖整棵系统子树;git 仓库有未提交变更时回执附带共处警示。
无项目派发(ZCode 专用):省略
projectPath时任务在 ZCode 的default工作区运行,跳过项目登记、Git 基线、项目快照、项目锁与项目验收(终态标注not_applicable: no_project)。allowCreateProject=false可禁止自动导入未登记的项目。详见 docs/zcode-cdp.md。
日志与 stdio 契约
本 server 是标准 MCP stdio server,严格遵守传输契约:
stdout 只承载 MCP JSON-RPC 消息。任何诊断日志都不会写入 stdout——否则会破坏 JSON-RPC 流,导致严格客户端握手或工具调用失败。
所有级别日志(DEBUG/INFO/WARN/ERROR)写入 stderr,同时追加到数据目录下的
logs/server.log(UTF-8,ISO 时间戳,含级别标签)。因此 stderr 里出现
INFO/WARN不代表服务器出错;它是正常诊断信息。只有启动失败(agent-foreman-mcp 启动失败:)才是致命错误,并会以非 0 退出码结束。
数据目录默认 ~/.agent-foreman(可用 AGENT_FOREMAN_HOME 覆盖),日志文件位于 <数据目录>/logs/server.log。排查连接问题时以 server.log 为准;不要因为 stderr 有输出就判定 server 异常。
技能自装
server 启动时会把自带的编排技能幂等同步到 ~/.agents/skills/agent-foreman-mcp/(Agents Skills 开放标准,用户级):
内容 hash 一致 → 跳过;不一致 → 先把旧版备份为
.bak-<时间戳>再覆盖;安装失败只告警、不阻断 server;
该目录由
os.homedir()决定,不受AGENT_FOREMAN_HOME影响;可用
--no-skill-install或AGENT_FOREMAN_NO_SKILL_INSTALL=1关闭。
技能文档(SKILL.md / usage-examples.md)以仓库 skills/agent-foreman-mcp/ 为准,涵盖工具面、任务书模板、meta 字段全表、错误码速查与返修提示语模板。
文档
文档 | 内容 |
宿主接入指南:通用 | |
架构说明:分层模型与模块边界、启动装配、数据目录、状态机、验收与返修流水线、Agent 驱动层契约、GUI 实例生命周期、跨平台策略、安全红线、扩展点、已知缺口 | |
项目交接文档:当前状态快照、架构导览、硬性红线、已知限制、接手建议 | |
agent profiles 字段说明 + 真实机器样例 | |
各 Agent 能力调研矩阵(Codex / ZCode / TraeWork / 扩展位) | |
项目级验收配置( | |
视觉验收:截图对比、图片规格、基准批准与冻结、AI 内容校验 | |
视觉验收的验证口径与覆盖边界(以 CI 矩阵为事实来源) | |
Codex 桌面端 GUI 驱动:MSIX COM 激活、CDP 接管、选择器、运行检测、验收返修 | |
TraeWork GUI 驱动(CDP):原理、配置、模式切换、选择器、安全红线 | |
ZCode GUI 驱动:安装探测、精确项目/模型、完全访问、暂停继续、验收返修 | |
发布流程(门禁、版本、凭据、发布后核验、GitHub Release) | |
开发环境、工程规范、提交与发布流程、如何新增 agent | |
安全模型(凭证零管理 / 命令白名单 / 进程与桌面自动化边界)与私密报告渠道 | |
贡献者行为准则 | |
版本变更日志 | |
Apache License 2.0(详细说明见下节) |
Agent 适配现状
agentId | driver / adapter | status | 说明 |
|
| ready(macOS 为 | Codex 桌面端 GUI(Windows:MSIX COM 激活 + CDP;macOS:spawn .app + CDP);支持 |
|
| research | CDP GUI adapter 已实现且 Windows 真机闭环通过;支持模型菜单、项目绑定与回读加固、无项目派发与 |
|
| ready | CDP 驱动 TRAE SOLO CN 桌面 UI;三种面板模式真机验证通过 |
|
| 仅测试 |
|
新增 agent 通常只需加一个 profile,详见 docs/agent-profiles.md 与 CONTRIBUTING.md。
无头路径:codex-cli(用户 profile)
内置 codex 走桌面端 GUI 驱动。若不想依赖 GUI 自动化,codex CLI 无头模式可用——无需改 server 代码,在数据目录加一个 driver=spawn 的用户 profile 即可。
前置条件:
codex CLI(
npm i -g @openai/codex)。请保持最新:旧版签名证书曾被吊销,macOS Gatekeeper 会直接 SIGKILL(Killed: 9)。已
codex login(复用~/.codex登录态)。
~/.agent-foreman/agent-profiles.json:
{
"profiles": {
"codex-cli": {
"displayName": "Codex CLI (OpenAI 无头)",
"type": "cli",
"driver": "spawn",
"status": "ready",
"command": null,
"argsTemplate": ["exec", "<prompt:arg>", "--skip-git-repo-check", "--sandbox", "workspace-write"],
"promptMode": "arg",
"cwd": "task",
"env": {},
"timeoutMs": 1800000,
"killTree": "taskkill",
"authNote": "复用 ~/.codex 登录态;勿与 --approve-for-me 同用(实测互斥)",
"executableDiscovery": {
"dirs": ["/opt/homebrew/bin", "/usr/local/bin"],
"fileNames": ["codex"],
"fallbackCommand": "codex"
}
}
}
}用法与内置 agent 一致:
run_task(projectPath=/path/to/项目, agentId=codex-cli, task="任务书", autoVerify=true, autoFixRounds=2)行为与限制:
get_profiles会列出codex-cli并探测 PATH 上的codex可执行。model参数对 spawn agent 不生效——CLI 使用~/.codex/config.toml的默认模型;要锁模型可在argsTemplate追加"-m", "<模型名>"。写入被
workspace-write沙箱限制在项目目录内;POSIX 下取消/超时自动对进程组 SIGTERM→SIGKILL(killTree值在非 Windows 平台被忽略)。
推荐用法
"在项目 D:\xxx 用 codex 实现『任务』。先跑 run_task(autoVerify:true, autoFixRounds:2),完成后用 query_task 看结果;若报告显示 needs_attention,把 get_task_report 的失败项摘要作为 feedback 调 rework_task 再验一轮;全部通过后向我汇报 changedFiles 与 diffstat。"
"在项目 D:\xxx 用 traework、mode=Code 实现『任务』;它会先切到 Code 模式再绑定项目,然后发任务、自动验收,失败自动生成修复计划并返修。"
渊源与切换
渊源:本项目源自 tianshu-mcp v0.5.4(Apache-2.0)独立分化,自 1.0.0 起独立演进。两者是并行维护的两个独立项目:tianshu-mcp 的历史(发布记录、真机验收、里程碑叙事)归属其自身仓库,本仓库不保留、不复述;两个项目互不依赖、互不读取对方数据。
从 tianshu-mcp 切换过来的用户须知(四项用户可见的行为变化):
数据目录不共享:本项目的默认数据目录是
~/.agent-foreman(环境变量AGENT_FOREMAN_HOME)。原~/.tianshu-mcp下的任务历史、项目登记、agent profiles 与配置不会被读取、也不会迁移——本项目从全新目录开始。项目级验收配置需重建:本项目只读
<项目>/.agent-foreman/acceptance.json,不读取.tianshu-mcp/acceptance.json。已有项目需把配置复制到新路径(.agent-foreman/)。Codex GUI profile 目录变更:Codex 桌面端的专属浏览器 profile 目录从
…/tianshu-mcp/codex-gui/profile改为…/agent-foreman/codex-gui/profile(Windows 在%LOCALAPPDATA%下,macOS 在~/.agent-foreman/下)。该目录承载登录态,因此首次运行需要重新登录 Codex。Codex 状态备份后缀变更:登记项目前的备份文件后缀改为
.agent-foreman-backup.json,并兼容识别旧后缀.tianshu-mcp-backup.json——若磁盘上已存在旧备份(那是「任何工具动手之前」的干净快照),本项目不会覆盖它、也不会另建新备份,日志会打印实际生效的那份路径。因此仍可按旧文件回滚。
其余对外契约相对 tianshu-mcp v0.5.4 的变化(新包名、structuredContent 双轨返回、技能自装目录迁移到 ~/.agents/skills/、移除 Gitee 集成等),见 CHANGELOG.md。
开源协作
主仓库:https://github.com/lanlan0811/agent-foreman-mcp(GitHub)
问题反馈:Bug / 功能请求走仓库 Issue 模板;安全漏洞请按 SECURITY.md 私密报告,不要开公开 Issue。
贡献者
感谢所有为本项目做出贡献的人。名录按首次参与顺序排列,虚位以待:
想出现在这里?请阅读 CONTRIBUTING.md 后提交 Issue 或 Pull Request。合并后你的名字会按首次参与顺序补入上表。
许可
本项目以 Apache License 2.0 发布,完整法律文本见 LICENSE。版权归 agent-foreman-mcp 贡献者所有(Copyright 2026 agent-foreman-mcp contributors)。
本项目源自 tianshu-mcp(Apache-2.0)独立分化;依 Apache-2.0 要求,原始版权、许可与免责声明随 LICENSE 一并保留。
授予你的权利
商业使用:可在商业产品与服务中使用;
修改:可自由修改源码;
分发:可再分发原始或修改后的版本;
私用:可在组织内部私有使用;
专利使用:贡献者授予你实施其贡献所涉专利的许可(受下述终止条款约束)。
你必须履行的义务
保留声明:分发时须随附 LICENSE 全文,并保留其中的版权、许可与免责声明;
标注修改:若修改了文件,须在修改的文件中附带显著的「已修改」声明;
保留 NOTICE:若原作品含 NOTICE 文件,分发时须保留其内容(本项目当前无 NOTICE 文件);
不得附加限制:不得对本许可授予的权利附加额外限制。
明确不授予 / 授权终止
商标:本许可不授予任何商标、商号或服务标记的使用权;
专利终止:若你对本项目或其贡献者发起专利诉讼(包括交叉诉讼与反诉),本许可授予你的专利授权自动终止。
免责声明
软件按 「现状」 提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权担保。在任何情况下,作者或版权持有人均不对因软件、软件的使用或其他交易而产生的任何索赔、损害或其他责任负责(无论是在合同诉讼、侵权诉讼还是其他诉讼中)。
第三方依赖许可
运行时依赖主要为 MIT / ISC / Apache-2.0 许可,与 Apache-2.0 兼容:
依赖 | 许可 | 用途 |
MIT | MCP 协议实现 | |
MIT | 外部输入校验 | |
MIT | 跨平台子进程 | |
Apache-2.0 | GUI 驱动与受管浏览器 | |
ISC | 视觉像素比对 |
开发依赖(TypeScript、ESLint、Prettier、Vitest、Vite、tsx 等)各自遵循其开源许可,且不随 npm 发布产物分发。
与安全边界的关系
本 MCP 不保存、不读取、不转发任何 AI-Agent 的 API key 或登录态(详见 SECURITY.md)。许可条款不改变这一设计边界。
Available Tools
11 toolsapprove_visual_baselineapprove_visual_baselineADestructive
仅在用户明确审阅并授权后批准视觉基准。必须核对候选摘要与批准说明;自动返修禁止调用。宿主必须实施实际审批控制。
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | ||
| candidateId | Yes | ||
| approvalNote | Yes | ||
| expectedDigest | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses essential behavioral safeguards: the agent must verify the candidate digest against the approval note, automatic rework calls are prohibited, and the host must implement real approval controls. These are non-obvious operational constraints that materially affect correct 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?
The description is three short, purposeful sentences with no filler. The most critical constraint—explicit human approval—is front-loaded, followed by verification requirements and the host-level enforcement note.
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 presence of an output schema and annotations, the description covers the main behavioral and safety requirements needed to invoke the tool correctly. It is slightly thin on what the approval actually changes in the system's state, but this is largely inferable and covered by schema 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?
Schema description coverage is 0%, so the description must compensate. It adds meaning by tying the expectedDigest to the approvalNote and requiring verification between them, but it leaves candidateId and optional taskId semantically unexplained and relies on schema names and formats for the rest.
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 ('approve') and resource ('visual baseline') and adds an unmistakable precondition: approval is only valid after explicit human review and authorization. This clearly differentiates it from sibling tools like prepare_visual_baseline, verify_task, and rework_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when the tool may be invoked (after user review and authorization) and when it may not be invoked (automatic rework), and it requires the host to enforce actual approval control. It does not name a specific sibling alternative, but the prohibition provides strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_taskcancel_taskADestructive
取消运行中任务:CLI agent 终止进程树;GUI agent(codex 等)尽力点击界面停止按钮并等待 GUI 空闲(有界超时),未确认停止时结果中明示。排队中任务直接移除;终态任务无动作。
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| taskId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description details exact mechanisms (CLI process-tree termination, GUI button-click with bounded timeout, explicit indication if stop is unconfirmed) and state-dependent outcomes. This adds significant value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-structured sentence front-loads the core action, then details state-dependent behavior. No wasted words; all sentences earn their 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 output schema exists (so return values are covered), the description adequately explains the tool's behavior for all task states. It could mention the reason parameter's purpose, but that's minor given the simple tool and existing output 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?
With 0% schema coverage, the description must compensate for parameters. It never mentions taskId (obviously the target) or reason (optional). The description focuses on behavior but provides no direct guidance on parameter usage or semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool cancels running tasks, and differentiates behavior for CLI vs GUI agents, plus queued and terminal states. It uses a specific verb ('取消'/cancel) and resource ('任务'/task), making it distinct from siblings like continue_task or run_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains behavior across task states (running, queued, terminal), implying when to use it (for running/queued) and when it does nothing (terminal). It doesn't explicitly name alternatives, but the purpose is unambiguous and no misleading guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_taskcontinue_taskA
恢复处于 needs_user 的任务。zcode:agent_question 时 message 发往原会话,关闭旧实例/登录/系统权限场景中 message 仅作已处理确认。codex:user_confirmation 时重新接入观察 GUI 内运行(不发送消息);login_required 时复检环境后重发任务书。
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| message | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the sparse annotations, explaining exactly what happens to the message parameter in different scenarios, including cases where no message is sent at all. It also discloses side effects like reconnecting to observe GUI and rechecking the environment, which is valuable 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 compact and front-loads the core purpose, then branches by runtime mode with semicolon-separated cases. Every clause adds behavioral information, with 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?
Given the tool's complexity, the description covers the major user-facing states and runtime modes with specific message behavior for each. The output schema exists, so return-value documentation is not required here. The main workflow conditions needed to invoke the tool correctly are all present.
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 clarify the nuanced behavior of the message parameter across zcode and codex states, which is the critical semantic ambiguity. taskId is less explicitly described, but its meaning is reasonably inferable from the tool's purpose.
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 verb and resource: resumes tasks in the needs_user state. It further distinguishes behavior across zcode and codex modes and specific sub-states, making it clearly distinct from siblings like run_task or cancel_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly scopes usage to tasks in needs_user state and provides situational branches for when each behavior applies. It does not explicitly name alternatives or exclusions, but the context is specific enough that an agent can infer when to call this tool versus run_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profilesget_profilesARead-only
查看当前 agent 适配与可执行探测结果(含未安装/调研占位提示)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, setting the safety profile. The description adds value by revealing that results may include placeholder prompts for uninstalled/research items, giving the agent insight into the content of the output. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly worded sentence that front-loads the purpose and immediately communicates the scope. No filler or unnecessary detail. Every word contributes to understanding the 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?
Given the simplicity of the tool (no parameters, read-only, output schema exists), the description is fully sufficient. It clearly states what the tool does and what kind of results to expect. No additional details are needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema. Per the baseline rule for 0 parameters, the score is 4. The description adds no parameter information, which is appropriate since no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('查看/view') and resource ('当前 agent 适配与可执行探测结果' - current agent adaptation and executable probing results), and also notes placeholder hints. It distinguishes itself from siblings, which are all task-related (run_task, query_task, etc.), by focusing on profiling results rather than task execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: if you want to view agent adaptation and probing results, call this tool. However, it provides no explicit when/when-not guidance or mention of alternative tools. Since siblings are fundamentally different, no exclusion is needed, but the lack of explicit context leaves this at an implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_reportget_task_reportARead-only
取某轮验收报告全文(report.md)。round 缺省取最新一轮。
| Name | Required | Description | Default |
|---|---|---|---|
| round | No | ||
| taskId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only profile is covered by structured data. The description adds useful context beyond that: the report is fetched from report.md and round defaults to the latest. It does not describe pagination, error behavior, or report length, but for a simple read tool 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?
A single, dense sentence that front-loads the core action (fetch full report) and then the parameter default. Zero wasted words, and the most important behavioral nuance (round default) is placed second, right after the verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with an output schema and readOnlyHint annotations, the description covers the essentials: what is fetched, which file, and the round default. No missing critical information prevents correct invocation; taskId's role is inferable from context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does clarify that round is optional and defaults to the latest round, and that the result is the full text of report.md. However, taskId's semantics are only implied by the tool name and are not explicitly described, so compensation is 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?
Description states a specific verb (取/get), a specific resource (验收报告全文/report.md), and the round-scoping behavior. This clearly distinguishes it from sibling tools like query_task or list_tasks, which are about task state rather than report file content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage rule: round defaults to the latest round when omitted. However, it does not explicitly state when to use this tool instead of siblings such as query_task or verify_task, nor does it mention any exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_taskslist_tasksARead-only
列出历史任务(可按项目路径 / 状态过滤,limit 默认 50)。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | ||
| projectPath | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about the 'historical' scope and the default limit of 50, but does not describe return format or pagination behavior. This is comparable to the calibration example where a filtered-list tool with read-only annotations earned a 3.
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 concise sentence delivers the verb, resource, scope, filter options, and default limit. Every element earns its place and the key action 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 simple read-only listing tool with three optional parameters and an output schema, the description covers all functional essentials: what the tool lists, how to filter, and the default limit. Annotations cover safety and the output schema covers return values, so nothing an agent needs to call it 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?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It does name projectPath and status as filter dimensions and adds the default limit of 50, which the schema does not specify. However, it does not clarify valid status values, projectPath format, or the limit maximum, so the compensation is 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 states a clear verb and resource: '列出历史任务' (list historical tasks). It also mentions the key filtering dimensions, making the core purpose unambiguous. It does not explicitly differentiate from sibling tools such as query_task, so it stops 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 implies when to use the tool (to list historical tasks with optional filters) but provides no explicit guidance on when not to use it or which sibling tool might be a better alternative. The usage context is clear but there are no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_visual_baselineprepare_visual_baselineC
准备视觉基准候选,返回摘要与预览;不采用正式基准。需要用户授权。
| Name | Required | Description | Default |
|---|---|---|---|
| caseIds | No | ||
| imports | No | ||
| projectPath | Yes | ||
| viewportIds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations readOnlyHint=false and destructiveHint=false, the safety profile is partially conveyed Equipment. The description adds useful behavioral context: it requires user authorization, returns a summary and preview, and does not commit to a formal baseline. This exceeds what annotations provide.
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 short sentences with no filler. The primary action and the most important outcome (summary/preview) are front-loaded. It relies on the reader already knowing the tool's context, but the length is appropriate.
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 presumably covers the return structure, but the input schema has no descriptions and the description doesn't explain the parameters. No usage scenarios, exclusions, or ordering with sibling tools are provided. For a 4-parameter tool with meaningful semantics, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions no parameter names or roles. projectPath, caseIds, imports, and viewportIds are completely undocumented in both schema and description, so an agent has no guidance on what values to provide.
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 ('prepare') and a specific resource ('visual baseline candidate'), and clarifies it returns a summary and preview. The phrase 'does not adopt a formal baseline' distinguishes it from formal approval tools like approve_visual_baseline without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given. The statement that it does not adopt a formal baseline implies it is a preparatory step before approval, but the description never says to use it before approve_visual_baseline or before other editing tools. Sibling differentiation is left entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_taskquery_taskARead-only
查询任务状态 / 进度 / 最近日志尾部(默认 agent.log 末 40 行)。返回任务 meta 与日志片段。
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| tailLines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile, and the description is consistent with those (a query operation). It adds value beyond annotations by specifying the default log tail behavior (last 40 lines) and the two-part return shape (meta + log snippet). No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys purpose, default behavior, and return content with zero filler. Every clause earns its place, and the most important information (status/progress/log tail) appears first.
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 presence of an output schema covers the return values, so the description needn't detail them. For a moderate 2-parameter read tool, it covers purpose, default behavior, and return content adequately. The only gap is the lack of explicit guidance on when to choose this over get_task_report/verify_task, which is minor given the clarity of the read-only purpose.
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 bears the compensation burden. It explains tailLines behavior implicitly via the 'default last 40 lines' note, which clarifies the default when tailLines is omitted. taskId is not described but is self-evident from its name. The description partially compensates for the coverage gap but doesn't fully document parameter syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('查询'/query), the resource (task), and the precise scope: status, progress, and recent log tail with a stated default of the last 40 lines of agent.log. It also names the return content (task meta and log snippet), which distinguishes it from siblings like run_task (execution), cancel_task (cancellation), and list_tasks (listing). It doesn't explicitly name a sibling alternative, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied — an agent would infer this tool is for checking task state/progress/logs — but there is no explicit when-to-use vs. when-not guidance and no named alternatives or exclusions. The description leaves sibling differentiation (e.g., vs. get_task_report or verify_task) to the agent's inference rather than stating it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rework_taskrework_taskBDestructive
手动返修:把终态任务(failed/needs_attention)重新入队续跑,同一 agent/项目与轮次记账。feedback 为追加指示(建议带上一次验收失败摘要)。
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| feedback | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注释已提供 destructiveHint=true 和 readOnlyHint=false,描述未与之矛盾。描述补充了'同一 agent/项目与轮次记账'以及 feedback 的追加指示语义,这些是注释之外的有用信息。但未说明具体副作用(如是否会覆盖原有结果),对破坏性工具而言透明度中等。
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?
描述为单句,信息密度高,无冗余内容。虽然未使用分段或强调结构,但精炼且关键信息(状态限制、行为、反馈用途)均在前半句呈现,符合高效表达。
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?
工具简单(2个参数),且有输出 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%,描述需承担全部参数解释责任。描述明确解释了 feedback 作为'追加指示'并建议携带验收失败摘要,这对该参数提供了有用语义;但 taskId 仅从'终态任务'中隐含,未直接说明其标识作用,且未给出任何格式或示例。补偿不充分。
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?
描述以明确的动词'返修'指出了操作,并限定了资源(终态任务 failed/needs_attention)和行为(重新入队续跑),能够与兄弟工具如 run_task(启动新任务)和 continue_task(可能继续非终态任务)大致区分。但未显式提及与这些工具的差异,因此扣一分。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
描述隐含了使用条件(当任务处于 failed 或 needs_attention 终态时),但未明确说明何时不应使用此工具,也未提及替代方案(如 verify_task 或 cancel_task)。使用情境可从状态限制推断,但缺少显式的 when-not 指导。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_taskrun_taskA
派活:启动外部 AI-Agent 开发任务并可自动验收返修,异步返回 taskId。ZCode 要求 model=供应商/模型,不支持 mode;TraeWork 的 model 可选并支持 Work/Code/Design mode。task/context 内的 ZCode 项目路径引用会在发送前校验。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| task | Yes | ||
| model | No | ||
| agentId | No | ||
| context | No | ||
| planDoc | No | ||
| autoVerify | No | ||
| projectPath | No | ||
| designSystem | No | ||
| autoFixRounds | No | ||
| taskTimeoutMs | No | ||
| reasoningLevel | No | ||
| allowCreateProject | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and openWorldHint=true already signaling a mutating external operation, the description adds valuable behavior: asynchronous execution returning taskId, automatic verify/rework capability, and pre-send validation of ZCode path references in task/context. 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 description is compact and front-loaded: the core function and async result appear first, followed by platform-specific parameter rules and a validation note. Every sentence adds information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 13 parameters and 0% schema-level explanations, this description is not complete enough. The output schema helps with return values, but the agent still lacks semantic guidance on most parameters required to configure a task 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 there are 13 parameters, but the description only clarifies model, mode, and path-reference validation in task/context. It does not explain agentId, planDoc, autoVerify, autoFixRounds, taskTimeoutMs, reasoningLevel, designSystem, projectPath, or allowCreateProject, leaving the agent to guess for the majority of inputs.
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 ('启动外部 AI-Agent 开发任务') and a distinctive outcome ('异步返回 taskId'), going well beyond the bare title. This clearly separates a launch/dispatch operation from sibling tools like continue_task, query_task, or rework_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the core phrasing '派活' and '启动外部 AI-Agent 开发任务', but the description does not explicitly state when to choose run_task over a sibling such as continue_task or rework_task. The platform-specific model/mode rules are useful configuration guidance but are not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_taskverify_taskARead-only
对已完成任务或项目路径执行一次验收(不改源码):自动命令检查 + 代码分析(相对 git 基线)。可用 extraChecks 临时加验。需任务/项目二选一。
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | ||
| checksMode | No | ||
| baselineRef | No | ||
| extraChecks | No | ||
| projectPath | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| mode | No | |
| model | No | |
| round | No | |
| checks | No | |
| result | No | |
| status | No | |
| taskId | No | |
| agentId | No | |
| logFile | No | |
| message | No | |
| diffstat | No | |
| errorType | No | |
| finishedAt | No | |
| abortSource | No | |
| projectPath | No | |
| reportFiles | No | |
| reportRound | No | |
| cancelReason | No | |
| changedFiles | No | |
| keptInstance | No | |
| lastRunSignal | No | |
| modelProvider | No | |
| needsUserKind | No | |
| agentEndReason | No | |
| permissionMode | No | |
| zcodeSessionId | No | |
| pendingQuestion | No | |
| progressSummary | No | |
| boundProjectPath | No | |
| cancelRequestedAt | No | |
| verificationSource | No | |
| latestVerificationVerdict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavior beyond that: it explicitly says source code is not modified, checks are run against a git baseline, and extraChecks are temporary. No contradiction with annotations is present.
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, non-mutation note second, method and custom-check capability after. Every clause adds information, 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?
Together with the output schema and readOnly/destructive annotations, the description is mostly sufficient for an agent to invoke the tool correctly: it knows the target, the non-mutating scope, the git-baseline context, and the task/project selection rule. The missing checksMode explanation and lack of explicit sibling routing keep it from being 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 carries the burden. It usefully explains that taskId/projectPath are a one-of requirement, that extraChecks are temporary additions, and that analysis is relative to a git baseline. The main gap is checksMode, whose append/replace semantics are left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('executes acceptance/verification'), a specific target ('completed task or project path'), and a concrete method ('automatic command checks + code analysis relative to git baseline'). This clearly distinguishes verify_task from siblings like run_task, continue_task, or query_task, even without naming them.
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 a clear use context: verify completed tasks or project paths, and requires exactly one of task/project. It does not explicitly name alternative tools or state when not to use it, but the '已完成' constraint and the verification framing are enough for an agent to select it appropriately.
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.
11 tool updates
v1.0.0- Changed
approve_visual_baseline1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
cancel_task1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
continue_task1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_profiles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_task_report1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
list_tasks1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
prepare_visual_baseline1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
query_task1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
rework_task1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
run_task1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
verify_task1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "abortSource": { + "type": "string" + }, + "agentEndReason": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "boundProjectPath": { + "type": "string" + }, + "cancelReason": { + "type": "string" + }, + "cancelRequestedAt": { + "type": "string" + }, + "changedFiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "checks": { + "items": { + "additionalProperties": false, + "properties": { + "durationMs": { + "type": "number" + }, + "name": { + "type": "string" + }, + "passed": { + "type": "boolean" + } + }, + "required": [ + "name", + "passed", + "durationMs" + ], + "type": "object" + }, + "type": "array" + }, + "diffstat": { + "type": "string" + }, + "errorType": { + "type": "string" + }, + "finishedAt": { + "type": "string" + }, + "keptInstance": { + "type": "boolean" + }, + "lastRunSignal": { + "type": "string" + }, + "latestVerificationVerdict": { + "type": "string" + }, + "logFile": { + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "needsUserKind": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "pendingQuestion": { + "type": "string" + }, + "permissionMode": { + "type": "string" + }, + "progressSummary": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "reportFiles": { + "additionalProperties": false, + "properties": { + "json": { + "type": "string" + }, + "md": { + "type": "string" + } + }, + "type": "object" + }, + "reportRound": { + "type": "number" + }, + "result": {}, + "round": { + "type": "number" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + }, + "verificationSource": { + "type": "string" + }, + "zcodeSessionId": { + "type": "string" + } + }, + "type": "object" +}
11 tool updates
v0.5.4- First observed
approve_visual_baseline - First observed
cancel_task - First observed
continue_task - First observed
get_profiles - First observed
get_task_report - First observed
list_tasks - First observed
prepare_visual_baseline - First observed
query_task - First observed
rework_task - First observed
run_task - First observed
verify_task
TDQS
Scored across 11 tools
Each tool maps to a clearly distinct action or resource: launching, resuming, reworking, canceling, verifying, retrieving, and baseline prep/approval are all separated. Retrieval tools are split by task status/history/report, so there is no meaningful overlap.
All tools follow a consistent snake_case verb_noun pattern such as run_task, cancel_task, list_tasks, and get_profiles. The minor get/list and singular/plural variations do not break the predictable naming convention.
11 tools is well within the well-scoped range, and each tool covers a necessary part of the task orchestration and baseline workflow. The set feels complete without being bloated.
The tool surface covers the full task lifecycle: start, resume, rework, cancel, verify, query, list, and report, plus environment profiles and visual baseline approval. No obvious dead ends or critical missing operations are apparent.
Maintenance
Related MCP Connectors
The AI orchestration agent for modern software teams.
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
Task management for teams building with AI agents. Agents claim tasks and report progress.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Related MCP Servers
- AlicenseAqualityBmaintenanceDelegate coding tasks to external AI coding agents in isolated git worktrees with independent verification, enabling any MCP client to orchestrate multi-agent workflows.5MIT
- AlicenseNot gradedqualityBmaintenanceEnables autonomous agents to manage tasks in a pull-based work queue with strategic goal alignment, real-time monitoring, and cross-project choreography.MIT
- FlicenseAqualityCmaintenanceEnables AI agents to orchestrate tasks as a DAG with automated validation loops, executing validation commands, tracking statuses, and allowing iterative code fixes until tasks pass.16-
- FlicenseBqualityCmaintenanceEnables AI coding assistants to run a machine-verified DESIGN→PLAN→EXECUTE→VERIFY→COMPLETE workflow with human approval gates, state integrity checks, and DAG task scheduling.7-