Skip to main content
Glama

cs-agent-mcp

cs-agent-mcp 是一个本地 stdio MCP 服务。它把 Codex、Claude 等编码 Agent 统一成一组 cs_agent_* 工具,让根 Agent 可以创建、调用和管理子 Agent,子 Agent 也可以继续递归委派。

快速开始

运行环境:

  • Node.js 22.13.0 或更高版本。

  • 已安装并登录准备使用的本机 Agent,例如 codexclaude

推荐先全局安装并确认版本:

npm install -g cs-agent-mcp@latest
cs-agent-mcp --version

选择正在使用的根 Agent 注册 MCP。Codex 用户执行:

codex mcp add cs-agent -- cs-agent-mcp
codex mcp list

Claude Code 用户执行:

claude mcp add --scope user cs-agent -- cs-agent-mcp
claude mcp list

新开一个 Codex 或 Claude Code 会话后,可以直接发送下面的任务:

请使用 cs-agent MCP 完成以下任务:
1. 先用 cs_agent_capabilities 探测 codex 和 claude。
2. 优先创建 codex 子 Agent;如果不可用,则创建 claude 子 Agent。
   让它审查当前仓库的改动。
3. 等待并读取回复,然后销毁子 Agent。
4. 最后向我总结审查结果。

根 Agent 会调用 cs_agent_* 工具完成创建、等待和销毁。完成 MCP 注册后,不需要手工常驻 cs-agent-mcp 进程。

Related MCP server: personal-mcp

其他安装方式

不做全局安装时,可以让 MCP 客户端通过 npm 直接启动当前最新版:

npx -y cs-agent-mcp@latest --version
codex mcp add cs-agent -- npx -y cs-agent-mcp@latest

Claude Code 对应命令是:

claude mcp add --scope user cs-agent -- npx -y cs-agent-mcp@latest

需要可重复的固定环境时,可以把 @latest 换成明确版本号。

无需安装 Claude 桌面应用,也无需为 MCP 再登录一次。Codex 和 Claude 子 Agent 会优先使用 本机 codexclaude 可执行文件,并沿用当前用户已有的登录状态;Claude 还会复用现有用户 设置。已显式设置的 CODEX_PATHCLAUDE_CODE_EXECUTABLE 不会被覆盖。首次调用某个 Agent 时,如果对应 ACP 适配器尚未缓存,npm 可能下载适配器及其 SDK。这只是本地协议桥,不是重新 安装 Claude/Codex,也不需要手工配置适配器路径、端口或令牌。

受管 Claude 仍会保留用户的 skills、hooks、plugins 和无关 MCP。若 Claude 用户配置中存在 直接或通过 npxnpm execpnpm dlx 启动 cs-agent-mcp 的 MCP 名称,服务会在受管 session 中用同名的身份受限 loopback 入口覆盖它,避免递归委派误用 Workspace root 身份。 Claude 用户配置不会被修改或复制;配置变更会在对应 Workspace 控制面重启后重新读取。 当前自动覆盖范围是 ~/.claude.json 顶层的 user-scope MCP;不要在项目 .mcp.json 或 Claude local/project scope 另外注册指向 cs-agent-mcp 的 root 控制面,以免重新引入身份冲突。

支持的 Agent

支持级别

Agent

说明

重点实机支持

codexclaude

内置 ACP 适配器,并在发布验证中使用本机登录状态执行真实任务

ACP 兼容支持

piopenclawgeminicursorcopilotdroidfast-agentgrok-buildiflowkilocodekimikiromuxopencodepoolqoderqwentraezeroclaw

内置命令映射和通用 ACP client/runtime 测试通过;可用性取决于本机环境

“ACP 兼容支持”不是仅供展示的候选映射。这些 Agent 与 Codex、Claude 共用 Agent 创建和销毁、 持久或 oneshot 会话、消息与 Turn、权限回传、取消、事件、批量等待和 Workspace 共享控制面。 例如 pi 通过 pi-acp 启动,openclaw 使用原生 openclaw acpgemini 使用原生 ACP 模式。 不同支持级别的区别是发布门禁的实机覆盖范围,不是 MCP 编排能力不同。

pool 使用本机 pool acp,需要先安装 Pool CLI 并完成登录。zeroclaw 使用本机 zeroclaw acp;ZeroClaw 默认可能忽略 session/new 传入的 MCP servers,只有对应 Agent 配置启用 ACP MCP 后才能使用递归委派,因此不能仅凭 initialize 成功推断其子 Agent 能力。

建议先调用 cs_agent_capabilities 并通过 probeAgents 探测准备使用的 Agent。探测会真实启动对应 ACP server 并完成 initialize 握手,而不只是检查命令名称。也可以在 agents 配置中新增或覆盖 任何提供 ACP stdio 接口的 Agent。

何时使用多 Agent

MCP 初始化信息和工具描述会主动提示调用 Agent 在以下场景考虑委派:

  • 任务可以拆成相互独立、可并行验证的子任务。

  • 需要不同 Agent runtime 承担互补角色,例如实现与独立审查。

  • 子任务需要独立上下文、专门约束或较长时间运行,主 Agent 只负责协调结果。

  • 当前结果需要第二个 Agent 给出独立证据,而不是在同一上下文中自我复核。

不要为很小、强顺序依赖、上下文无法独立描述,或当前 Agent 能直接快速完成的工作创建子 Agent。 委派本身有启动、传递上下文和汇总结果的成本。

异构协作时先用 cs_agent_capabilities 探测准备使用的多个 Agent,再根据当前任务给它们分配互补 角色。服务只报告配置名称、可用性和执行限制,不把容易过期的“某个品牌永远更擅长某类任务” 写成运行时事实。每个 cs_agent_send 都应给出自包含的目标、范围、约束、交付物和验证要求。

推荐工作流:

cs_agent_capabilities
  -> cs_agent_run_structured(单次严格 JSON 结果;原子创建、等待和销毁)
或
  -> cs_agent_create(按独立角色创建一个或多个 Agent)
  -> cs_agent_send(先给每个 Agent 发送自包含任务)
  -> cs_agent_wait_many(多个 Turn 使用 any/all 汇总;单 Turn 使用 wait_message)
  -> cs_agent_respond_permission / cs_agent_cancel(按需)
  -> cs_agent_destroy(不再需要时释放 Agent)

配置

配置服务

Codex 和 Claude 已经可以在本机正常工作时,不需要创建服务配置文件。需要修改默认权限、 超时或 Agent 命令时,可以使用以下两个 JSON 文件:

  1. 用户级配置:~/.cs-agent-mcp/config.json

  2. 项目级配置:<cwd>/.cs-agent-mcprc.json

项目级值覆盖用户级值。<cwd> 是启动命令的工作目录,或通过 --cwd 显式指定的目录。

{
  "defaultAgent": "codex",
  "defaultPermissions": "approve-reads",
  "nonInteractivePermissions": "deny",
  "timeout": 1800,
  "agents": {
    "reviewer": {
      "command": "/absolute/path/to/acp-agent",
      "args": ["--stdio"]
    }
  },
  "mcpServers": [
    {
      "type": "stdio",
      "name": "project-tools",
      "command": "/absolute/path/to/project-tools-mcp",
      "args": []
    }
  ]
}

常用字段:

字段

默认值

作用

defaultAgent

codex

根执行身份使用的默认 Agent 名称

defaultPermissions

approve-reads

approve-allapprove-readsdeny-all

nonInteractivePermissions

deny

无交互权限请求时选择 denyfail

timeout

无限制

单次 Agent 调用的默认超时秒数

agents

内置注册表

新增或覆盖 ACP stdio Agent 命令

mcpServers

[]

注入每个受管 Agent 的其他 MCP 服务

auth

{}

ACP authenticate 方法与凭据的映射

authPolicy

skip

缺少匹配 ACP 凭据时选择 skipfail

agents 中的命令必须提供 ACP stdio 接口,不能直接填一个只支持交互终端的普通 CLI。内置 codexclaude 已经配置了相应适配器,通常不应覆盖。

工作目录由 MCP roots 决定:客户端提供一个 workspace root 时,子 Agent 默认在该目录工作; 提供多个 roots 时,cs_agent_create 必须显式传入 cwd;客户端不支持 roots 时,服务使用 启动目录或 --cwd 的值;客户端声明支持 roots 但返回空集合时,服务拒绝启动工作区。 所有 cwd 都必须是位于客户端声明的 workspace roots 内的现有真实目录。

规范化后的 roots 集合也是共享边界。同一组 roots 即使顺序不同,也会连接到同一个本机控制面和 同一棵 Agent 树;Codex、Claude 等多个根控制台可以交叉查看、等待、取消和销毁其中的任务。不同 roots 集合仍使用完全隔离的状态、身份和进程锁。

启动

完成 MCP 注册后,无需手工常驻进程。Codex 或 Claude 会在需要时自动启动 stdio 服务:

cs-agent-mcp

不做全局安装时对应命令是:

npx -y cs-agent-mcp

需要指定没有 roots 能力时的后备工作目录:

cs-agent-mcp --cwd /absolute/path/to/workspace

该命令作为轻量前端通过 stdin/stdout 传输 MCP 协议,正常启动后不会打印交互式提示,也不会监听 公网端口。前端会按需发现或启动一个仅绑定本机回环地址的 Broker;同一 workspace 的多个前端共享 Broker 内唯一的 Facade/runtime owner。最后一个前端离开后,Broker 会经过短暂 grace 再收束 runtime 并释放 workspace lock;grace 内重连不会更换 lock generation。运行状态、Agent 会话和事件历史 保存在 ~/.cs-agent-mcp/,无需手工管理后台服务。

MCP 能力

典型流程是:先检查能力,再按独立角色创建子 Agent,发送带幂等键且可独立执行的任务,循环等待 结果,最后按需取消 Turn 或销毁 Agent。MCP server instructions、工具 description 和输入 schema 字段说明都携带这套决策与编排提示,即使宿主只展示 tools/list 也能看到关键使用条件。

工具

主要参数

能力

cs_agent_capabilities

probeAgents?

列出工具、限制、内置 Agent,并可真实探测指定 Agent

cs_agent_run_structured

agentcontentidempotencyKeyoutputSchemadeadlineMsisolation?

原子运行一次性 Agent,返回经 JSON Schema 校验的严格 JSON

cs_agent_create

agentname?cwd?mode?sessionOptions?

创建使用持久或一次性 ACP 会话模式的受管 Agent

cs_agent_list

parentAgentId?agent?state?cursor?limit?

分页列出当前调用者可见的委派子树

cs_agent_status

agentId

查询生命周期、队列、权限和底层运行时状态

cs_agent_events

afterCursor?agentId?turnId?limit?waitMs?

增量读取结构化事件,支持最长 30 秒等待

cs_agent_send

agentIdcontentidempotencyKeyattachments?timeoutMs?

向子 Agent 的 FIFO 队列发送幂等任务,返回 messageIdturnId

cs_agent_get_message

messageId

读取一条不可变输入或回复消息

cs_agent_wait_message

turnIdmessageIdwaitMs?

等待回复、权限请求或无回复的终态

cs_agent_wait_many

turnIdsmode?waitMs?

等待任意或全部 Turn,返回 ready 与 pending 集合

cs_agent_get_turn

turnId

读取 Turn 状态、修订号、错误和关联消息

cs_agent_wait_turn

turnIdafterRevision?waitMs?

等待 Turn 状态变化或权限请求

cs_agent_respond_permission

permissionIdoutcome

允许、拒绝或取消待处理权限请求

cs_agent_cancel

turnIdreason?

取消排队中或运行中的 Turn,并取消其未完成后代 Turn

cs_agent_destroy

agentIdcascade?discardSession?

销毁 Agent,可递归销毁后代并丢弃底层会话

cs_agent_run_structured 内部完成 create oneshot -> send -> wait -> cancel on deadline -> destroy,再执行严格 JSON.parse 和 JSON Schema 校验。成功返回 { "operationId": "...", "result": ... };同一调用者用同一个 idempotencyKey 重试相同输入时, 返回同一个已持久化结果。相同键用于不同 prompt、schema 或 isolation 会返回 IDEMPOTENCY_CONFLICTdeadlineMs 从原子调用开始计时,覆盖创建、发送、等待以及有界的取消/销毁 收尾;命中 deadline 时会先取消 Turn,再销毁一次性 Agent。若底层收尾超过剩余预算,调用会按 deadline 返回错误,同时继续观察迟到的清理结果。解析和 schema 失败也会销毁。

isolation 只支持 inheritMcpServersinheritEnvironmentpermissionModenonInteractivePermissionspermissionPolicyinheritMcpServers: false 去掉用户/项目配置的 MCP, 但保留受管 Agent 返回控制面的认证 loopback MCP;inheritEnvironment: false 不继承环境变量,但保留 启动 ACP 命令所需的 PATH 和显式认证注入。当前不提供 filesystem 或 network 强隔离,这些字段及 其他未知隔离字段会在输入校验阶段拒绝,不会静默忽略。

默认 defaultPermissionsapprove-reads:读取类权限可以自动批准,写入等其他操作不会被静默 批准。权限请求会通过等待工具返回给祖先调用者,由它调用 cs_agent_respond_permission 处理;没有 可交互调用者时,默认 nonInteractivePermissions: "deny" 会拒绝该请求。

sessionOptions 支持 modelsystemPromptallowedToolsmaxTurns。附件使用 { "mediaType": "...", "data": "<base64>" }cs_agent_sendidempotencyKey 在同一调用者范围内全局去重;重试同一任务时应复用原键,向不同 Agent 发送任务时也必须使用不同的键。兼容字段 timeoutMs 不限制 Agent 任务执行时间;调用方应通过 等待、取消和 maxTurns 管理任务,而不是按预估耗时设置 Turn deadline。

maxTurns 是一个任务在 Agent 内部可使用的 agentic turns 硬上限,不是 Facade Turn 数量、 超时时间或递归委派深度。普通代码实现、审查、调试和工具调用较多的任务应省略该字段,使用适配器 默认行为;只有调用方需要严格预算并接受达到上限即失败时才应设置。不同适配器的支持范围和计数 方式可能不同,不要根据预估任务时长自动猜测较小值。达到上限时 Turn 会保持 failed,返回 MAX_TURNS_EXCEEDED,且不会自动提高限制或重试任务。

persistent 模式要求服务重启后恢复原 ACP 会话,无法恢复时明确失败;oneshot 模式允许 底层运行时在原会话不可用时建立新会话,因此不承诺跨重连保留上下文。两种模式下的 Facade Agent 都可以接收多个串行 Turn,直到祖先调用 cs_agent_destroy。受管 Agent 不能销毁自己。 discardSession 依赖目标 ACP 适配器支持 session/close;不支持时会返回明确错误并保留可恢复 状态,普通销毁不受影响。

多个独立任务应先完成全部 cs_agent_send,再调用 cs_agent_wait_manymode: "any" 在至少一个 Turn ready 时返回该轮全部 ready 项;mode: "all" 通常等待全部终态,但权限请求会提前返回,避免 调用方与子 Agent 死锁。权限或 timeout 中断 all 时,按 turnId 累计每轮 ready,后续 message 或 terminal 覆盖较早的 action_required,并继续等待返回的 pendingTurnIds。timeout 不取消 Turn。

等待工具单次最多等待 30 秒。单 Turn 可继续使用 cs_agent_wait_message 或 Turn revision;事件流使用 Event cursor。不要通过无限长的单次 MCP 调用阻塞宿主。

受管 Agent 会自动获得一个经过身份认证、仅回环访问的同一 Facade MCP 连接,因此 Claude 可以 再创建 Codex 子 Agent,Codex 也可以继续委派,无需为每一层配置 MCP。调用者只能查看和操作 自己的委派子树;同一 Agent 的 Turn 严格串行,不同 Agent 可以并行执行。默认限制为递归深度 4、受管 Agent 16 个、每个 Agent 排队 32 个 Turn、全局并发 Turn 8 个。

完整状态会持久化。服务重启后,历史 Message、Turn 和 Event 仍可查询;持久 Agent 会尝试加载 原 ACP 会话,无法恢复时会明确失败,不会静默创建一个丢失上下文的新会话。

诊断 CLI

cs-agent-mcp agents 提供只读本地排障入口,不启动 MCP stdio 服务,不连接 Broker,也不持有 Broker credential 或 loopback token。它只读取 ~/.cs-agent-mcp/mcp/facades/ 中的 snapshot/lock 以及 ~/.cs-agent-mcp/sessions/ 中已有的 runtime session record,并可同时展示多个 workspace:

cs-agent-mcp agents list
cs-agent-mcp agents list --all --json
cs-agent-mcp agents status <agent-id-or-prefix>
cs-agent-mcp agents attach <agent-id-or-prefix> --history 20
cs-agent-mcp agents top
cs-agent-mcp agents ps --all

list 默认只显示 running 实例里的非 destroyed Agent;--all 会包含 stopped/unknown 实例和 destroyed Agent。statusattach 的 selector 在全集解析:完整 Agent ID 可在其他 snapshot 损坏时继续匹配;前缀遇到损坏 snapshot 会 fail closed,要求使用完整 ID。

文本输出会分别标记 Agent 的 KINDRUNTIMEroot 是当前 MCP 客户端在 Facade 中的 调用者身份,不承载受管 runtime,也不会产生可跟随的任务输出;通过 cs_agent_create 创建的 managed Agent 才会记录 Turn、工具活动和输出事件。

top(别名 ps)在交互式终端中打开实时全屏视图,每秒刷新 Agent 状态。方向键、j/k、 PageUp/PageDown、Home/End、鼠标单击和滚轮用于选择;Enter 对选中的 managed Agent 进入同屏 Attach,Esc 返回列表,/ 过滤,a 切换是否包含全部状态,r 刷新,qCtrl-C 退出。 --all 只决定初始显示范围。root 行可查看但不可 Attach;终端小于 72x12 时会显示尺寸提示。

top|ps 的 Attach 子视图按原会话顺序显示用户消息、Agent 文本、thinking、tool call 输入和 tool result 输出;每项使用 [USER][ASSISTANT][THINKING][TOOL CALL][TOOL RESULT][TOOL ERROR] 标题区分类型,正文另起一行。mention 与媒体显示只读摘要, 不输出媒体二进制。长内容按终端宽度换行,向上滚动会暂停自动跟随并按新增消息数累计未读数, End 恢复实时跟随。persistent Agent 读取固定 session record;oneshot Agent 按时间合并同一 Agent 已有的原生 task session records。历史 session 不存在时显示 conversation unavailable 和已有错误, 不会无限显示 loading。会话内容不为 TUI 新建历史副本,也不启动 Agent。top|ps 要求 stdin/stdout 都是 TTY;重定向或脚本场景应使用 list --jsonattach --json,不会输出 ANSI 控制序列。

独立的 agents attach 命令保持事件流接口:先输出目标 Agent 的当前 snapshot 和有限历史,再按 cursor 只读跟随新事件。它不会发送 消息、响应权限、取消 Turn 或修改任何状态;Agent destroyed 时返回 0,实例 stopped/unknown 或 generation 更替时在最终 drain 后返回非零,Ctrl-C 返回 0。

JSON 输出使用 cs-agent-mcp.diagnostics.v1attach --json 是 JSONL,每行只会是 snapshoteventterminal。事件投影只暴露 allowlist 字段:output stream 的文本、 有界工具摘要、状态和终态错误摘要。thought 文本、identity、完整 Message、Permission request、 raw tool payload、rawInputrawOutput 和其他未知字段不会输出。

故障排查

现象

检查方式

安装到的版本不符合预期

运行 npm view cs-agent-mcp versioncs-agent-mcp --version,然后重新安装 cs-agent-mcp@latest

根 Agent 看不到 MCP

运行 codex mcp listclaude mcp list,确认存在 cs-agent,然后新开客户端会话

Codex 或 Claude 探测失败

先运行 codex --versionclaude --version,确认对应 CLI 已安装并登录,再调用 cs_agent_capabilities 探测

第一次调用较慢

等待 npm 下载对应 ACP 适配器及 SDK;网络失败后可以重试,不需要单独安装适配器

手工启动后没有终端提示

这是正常行为;cs-agent-mcp 使用 stdin/stdout 传输 MCP 协议,不提供交互式界面

不知道哪个 Agent 卡住

在终端运行 cs-agent-mcp agents top 实时浏览,或用 agents list --all 后接 agents status <agent-id>

想阅读某个 Agent 的完整会话

运行 cs-agent-mcp agents top 后选择 managed Agent 并按 Enter;消息、thinking 和工具调用均只读显示

想跟随某个 Agent 的原始事件

运行 cs-agent-mcp agents attach <agent-id>;这是只读事件流,不会响应权限或取消任务

Broker 版本不兼容

关闭使用旧 Broker 的全部 MCP 根客户端后重试;活跃旧 Broker 不会被新前端强制终止

cwd 或 workspace root 被拒绝

确认目录真实存在,并且位于 MCP 客户端声明的 workspace roots 内

稳定性与反馈

项目当前处于 0.x 阶段。工具名、输入字段、结构化输出和持久化 schema 属于公开契约;升级前 请查看更新日志。发现安装、兼容性或运行问题时,请通过 GitHub Issues 反馈。

架构与安全边界见 MCP 架构设计

Available Tools

14 tools
cs_agent_cancelA
Destructive

Cancel obsolete, unsafe, or no-longer-needed queued or active work, including unfinished descendant turns. This is a destructive control action; inspect status first when the outcome is uncertain.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional audit reason explaining why the delegated work is being cancelled.
turnIdYesQueued or active turn id to cancel.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite the destructiveHint annotation already flagging destructiveness, the description adds meaningful context by specifying that 'unfinished descendant turns' are also canceled and warns to 'inspect status first,' going beyond the annotation's simple flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. The first sentence states the action and scope, the second adds a necessary caution. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a simple schema and no output schema, the description adequately covers purpose, scope (including descendant turns), and a cautionary note. It could mention return behavior or error cases, but these are not strictly required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: turnId and reason are already clearly described in the schema. The description does not add extra parameter-specific meaning or examples, so it meets the baseline without exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Cancel' and identifies the resource as 'queued or active work, including unfinished descendant turns,' which clearly distinguishes it from sibling tools like cs_agent_destroy or cs_agent_send.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use the tool: for 'obsolete, unsafe, or no-longer-needed' work, and advises to 'inspect status first when the outcome is uncertain.' However, it does not explicitly name alternative tools or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_capabilitiesA
Read-onlyIdempotent

Call first when considering delegation or heterogeneous execution. Lists configured local agent names, optional live availability probes, facade tools, and execution limits so you can decide whether and how to delegate.

ParametersJSON Schema
NameRequiredDescriptionDefault
probeAgentsNoConfigured agent names to probe live before creating children; omit to list names without launching probes.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, so the description adds value by explaining optional live probes and listing what is included (agents, facade tools, limits). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the key instruction, and every clause adds meaningful guidance. Zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description lists the kinds of information returned (names, probes, facade tools, execution limits), enough to set expectations for a read-only listing tool. Could be more detailed about output format but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for the single parameter, so the description adds only marginal context about 'live availability probes' aligning with probeAgents. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists configured agent names, probes, facade tools, and execution limits for delegation decisions. It uses a specific verb ('lists') and resource (capabilities), and distinguishes itself from sibling tools like cs_agent_list by emphasizing its decision-support role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Call first when considering delegation or heterogeneous execution', giving clear when-to-use context. Lacks explicit exclusions but provides strong precedence and decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_createA

Create a managed child agent for a self-contained subtask that benefits from parallel work, a different agent runtime, specialization, or independent review. Call cs_agent_capabilities before choosing an agent; do not delegate trivial or tightly coupled work.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoAbsolute workspace directory for the child; required when roots are ambiguous.
modeNopersistent keeps a resumable session for follow-up tasks; oneshot creates a disposable task session.
nameNoHuman-readable role name, such as implementer, reviewer, or researcher.
agentYesConfigured local agent name returned by cs_agent_capabilities.
sessionOptionsNoOptional model, prompt, tool, and turn limits for this delegated session.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a write operation (readOnlyHint false) and non-destructive (destructiveHint false). The description adds that the agent is 'managed' and self-contained, implying lifecycle tracking, and mandates a prerequisite call. However, it does not disclose return values, failure modes, or resource implications, so only moderate transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, direct, front-loaded with the action and purpose. No filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters, a nested object, and no output schema. While the schema is detailed, the description omits what the tool returns (e.g., agent ID) and how to interact with the created agent via sibling tools. This is a notable gap for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers 100% of parameters, so baseline is 3. The description adds value by explaining that the agent parameter must come from cs_agent_capabilities, complementing the schema's description of 'agent' as a configured local agent name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a managed child agent and specifies suitable use cases (parallel work, different runtime, specialization, independent review). It distinguishes from sibling messaging/status tools by focusing on the creation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call cs_agent_capabilities before choosing an agent, and warns against delegating trivial or tightly coupled work. This provides clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_destroyA
Destructive

Destroy a managed agent after its work is complete or abandoned, optionally cascading through descendants and discarding its session. This releases the managed lifecycle and is destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesManaged agent id to destroy.
cascadeNoAlso destroy all live descendants; required when descendants still exist.
discardSessionNoAlso discard the persisted ACP session instead of keeping resumable state.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, and the description reinforces this with 'is destructive' and 'releases the managed lifecycle'. It adds a little context about post-completion usage, but it does not disclose additional behaviors such as irreversibility beyond the hint, potential permission requirements, or what happens to associated resources. Since annotations carry the safety burden, the description only marginally adds value, matching the baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose, and every phrase earns its place. The second sentence reinforces the destructive nature without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters (all documented in schema), destructive annotations, and no output schema, the description is sufficient for an agent to understand when and how to use it. It could mention the consequence of using cascade=false when descendants exist, but the schema already covers that. The description is complete enough for a destructive lifecycle operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter schema has 100% description coverage, explicitly explaining agentId, cascade, and discardSession. The description paraphrases these as 'cascading through descendants' and 'discarding its session' but does not add new meaning beyond what the schema already provides. With the baseline of 3 for high schema coverage, this is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Destroy a managed agent after its work is complete or abandoned'. It identifies the resource (managed agent) and the specific verb (destroy), and distinguishes this from sibling tools like cs_agent_cancel by indicating this is a final lifecycle action, not just a run-level cancellation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit timing context: 'after its work is complete or abandoned'. This implies the tool should be used at the end of an agent's lifecycle, not while it is actively being used. However, it does not explicitly name alternatives like cs_agent_cancel for stopping in-flight work, so it lacks the full when-not-to-use guidance that would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_eventsA
Read-onlyIdempotent

Read or briefly wait for structured delegation events after an opaque cursor. Use for progress monitoring across agents or turns when a reply-oriented cs_agent_wait_message call is not sufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum events to return, up to 1000.
turnIdNoOnly return events for this visible turn.
waitMsNoLong-poll for new events for at most this many milliseconds, up to 30000.
agentIdNoOnly return events for this visible agent.
afterCursorNoReturn only events after this opaque cursor; use 0 for the visible history start.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safe-read nature is established. The description adds meaningful behavioral context beyond annotations by mentioning the ability to 'briefly wait' (long-polling) and the 'opaque cursor' mechanism for incremental reads. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is incredibly concise: two sentences, front-loaded with the core action and resource, immediately followed by usage guidance. Every word earns its place with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with all-optional parameters and no output schema, the description covers purpose, usage context, cursor semantics, and the long-poll behavior. However, it does not describe the structure of the returned 'events' or ordering guarantees, which would be helpful given the absence of an output schema. Still, the overall context is adequate for an agent to select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% description coverage for all five parameters, including detailed explanations for limit, turnId, waitMs, agentId, and afterCursor. The description adds minimal extra meaning beyond the schema, only reinforcing the 'opaque cursor' and 'wait' concepts, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Read or briefly wait') and the resource ('structured delegation events after an opaque cursor'). It distinguishes itself from sibling tools by explicitly contrasting with the 'reply-oriented cs_agent_wait_message call'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance on when to use this tool: 'Use for progress monitoring across agents or turns'. It also names the alternative (cs_agent_wait_message) and explains when that alternative is not sufficient, giving a clear decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_get_messageA
Read-onlyIdempotent

Read one immutable delegated request or reply message when you already have its id. Use cs_agent_wait_message instead when waiting for an unfinished task.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesMessage id returned by send, wait, or an event.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the immutability of messages and the fact that it reads a single message, but it does not disclose return format or error behavior. Given the annotation coverage, the incremental transparency is limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the purpose and provide an explicit alternative. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is low-complexity with one parameter and thorough annotations. The description covers the operation, usage, and a key behavioral distinction. It is complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a clear description of messageId: 'Message id returned by send, wait, or an event.' The tool description adds the context of 'already have its id' but does not introduce new parameter semantics. Baseline of 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Read one immutable delegated request or reply message when you already have its id.' This provides a specific verb and resource, and distinguishes from the sibling tool cs_agent_wait_message by naming it directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs when to use this tool versus the alternative: 'Use cs_agent_wait_message instead when waiting for an unfinished task.' This gives a clear when-not condition and names the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_get_turnA
Read-onlyIdempotent

Read one immutable-point-in-time turn snapshot by id. Use it for detailed state, revision, error, and permission diagnostics without waiting.

ParametersJSON Schema
NameRequiredDescriptionDefault
turnIdYesTurn id returned by send, wait, or an event.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it adds 'immutable-point-in-time' and 'without waiting,' disclosing snapshot semantics and non-blocking behavior. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and followed by a usage note. No redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-parameter read tool with readOnly annotations; the description conveys purpose, usage, and expected diagnostic scope. Return format is only hinted at, but given the simplicity, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema fully covers turnId with a clear description; the tool description adds no parameter-specific information. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Read one immutable-point-in-time turn snapshot by id' — a specific verb and resource, and explicitly frames its diagnostic purpose (state, revision, error, permission), distinguishing it from get_message/list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says 'Use it for detailed state, revision, error, and permission diagnostics without waiting,' providing a clear use case and implying contrast with waiting tools, though it doesn't name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_listA
Read-onlyIdempotent

Inspect managed agents in the caller's delegation subtree before creating duplicates or when coordinating parallel work. Supports filtering and cursor pagination; it cannot reveal sibling or ancestor subtrees.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentNoOnly return children using this configured agent name.
limitNoMaximum agents to return in this page, up to 1000.
stateNoOnly return agents in this lifecycle state.
cursorNoOpaque pagination cursor returned by a previous cs_agent_list call.
parentAgentIdNoOnly return direct children of this visible parent agent id.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond this: the scoping to the caller's delegation subtree, support for filtering and cursor pagination, and the explicit limitation that sibling or ancestor subtrees are not accessible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every clause adds value. It is concise without sacrificing necessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, usage context, scoping limitation, and key capabilities (filtering, pagination). With no output schema, it does not describe return values, but this is acceptable for a list tool. Some additional details about combining filters could be useful, but overall it is complete enough for effective selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents each parameter. The description only generically mentions 'filtering and cursor pagination' without adding specific details about individual parameters, so it does not enhance the schema's semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Inspect', the resource 'managed agents', and the specific scope 'caller's delegation subtree'. It also distinguishes itself from siblings by noting it cannot reveal sibling or ancestor subtrees, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit use cases are provided: 'before creating duplicates or when coordinating parallel work'. It also gives an exclusion: 'cannot reveal sibling or ancestor subtrees'. However, it does not explicitly name alternative tools, relying on the sibling list for that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_respond_permissionA
Destructive

Resolve a pending permission request surfaced by wait or status. Apply least privilege: prefer one-time approval unless repeated access is explicitly intended; rejection or cancel can stop delegated work.

ParametersJSON Schema
NameRequiredDescriptionDefault
outcomeYesPermission decision; persistent allow/reject outcomes affect later matching requests.
permissionIdYesPending permission id returned by wait or status.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal destructive and non-idempotent behavior; the description adds contextual consequences: persistent outcomes affect later matching requests, and rejection/cancel can stop delegated work. It also reinforces 'least privilege' decision-making, going beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the purpose, and includes only decision-relevant information. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with full schema coverage, the description covers what the tool does, when it applies, and the decision philosophy. It doesn't explain return behavior, but with no output schema and low complexity this is not a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents both parameters with descriptions and enum values, so baseline is 3. The description adds value by explaining that permissionId comes from wait/status and by guiding outcome selection (prefer one-time approval), raising it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Resolve') and identifies the resource ('pending permission request'), clarifying it is surfaced by wait or status. This differentiates it from sibling tools like cs_agent_cancel by focusing on permission resolution rather than general cancellation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use the tool: when a pending permission request is surfaced by wait or status. It provides guidance on choosing outcomes with the least-privilege principle and notes that rejection or cancel can stop delegated work, but it doesn't name explicit alternatives or give a when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_sendA
DestructiveIdempotent

Assign a self-contained task to a managed descendant agent. Include the objective, scope, constraints, expected deliverable, and verification criteria; the idempotency key makes retries safe. For parallel work, send all independent turns before waiting with cs_agent_wait_many.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesTarget managed descendant agent id.
contentYesComplete delegated task brief with objective, boundaries, deliverable, and checks.
timeoutMsNoReserved submission-timeout hint kept for compatibility; it never limits task completion.
attachmentsNoOptional inline attachments needed to complete the task, up to 32.
idempotencyKeyYesCaller-generated stable key; reuse it when retrying the same logical message.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it explains that the idempotency key makes retries safe, revealing a key operational behavior. It also implicitly communicates async behavior by referencing cs_agent_wait_many. The annotations already provide readOnly, openWorld, idempotent, and destructive hints, so the description adds complementary operational context rather than contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each serving a clear purpose: what the tool does, what to include and why, and when to use it in parallel workflows. It is front-loaded with the primary action, contains no filler, and is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core task, content requirements, idempotency, and parallel usage. It does not explicitly state how to retrieve the result for a single send, but the reference to cs_agent_wait_many and the availability of sibling wait tools provide sufficient context. Given the tool's complexity and lack of output schema, this is nearly complete, though a direct pointer to the wait step would have been ideal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes further by explaining what should go into the 'content' parameter (objective, scope, constraints, expected deliverable, verification criteria) and clarifying the purpose of the idempotencyKey for safe retries. This adds practical meaning beyond the schema's per-parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Assign' with a specific resource ('managed descendant agent') and a concrete action (send a self-contained task). It distinguishes the tool from siblings like cs_agent_cancel, cs_agent_destroy, and cs_agent_get_message by focusing on task delegation. The instruction to include objective, scope, constraints, deliverable, and verification criteria further clarifies the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance for parallel work: 'send all independent turns before waiting with cs_agent_wait_many,' which clearly indicates when to use this tool in a parallel workflow. It lacks an explicit 'when-not-to-use' or mention of alternatives for single-task waiting, but the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_statusA
Read-onlyIdempotent

Inspect one managed agent's lifecycle, queue, pending permission, last error, and runtime state. Use it to diagnose a delegated task before deciding to wait, respond to permission, cancel, or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesVisible managed agent id returned by create or list.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the annotations by listing the specific state dimensions inspected (lifecycle, queue, pending permission, last error, runtime state). It aligns with the readOnlyHint and idempotentHint annotations, and does not introduce any contradiction. It doesn't detail the return structure but the annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action, and every sentence adds value. The first sentence defines the scope, the second provides usage context. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, read-only, no output schema). The description covers what it does and when to use it, and the annotations cover the safety profile. Given the low complexity and rich annotations, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage of the single agentId parameter, including its format and provenance ('Visible managed agent id returned by create or list'). The description does not add parameter-specific details, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Inspect' and enumerates the aspects (lifecycle, queue, pending permission, last error, runtime state), clearly distinguishing it from sibling tools like cs_agent_create, cs_agent_send, and cs_agent_cancel. It also states its role in diagnosing a delegated task, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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: 'Use it to diagnose a delegated task before deciding to wait, respond to permission, cancel, or retry.' This connects to probable sibling actions and provides clear decision context, effectively guiding the agent on when to invoke this tool vs. other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_wait_manyA
Read-onlyIdempotent

Wait for multiple turns after you send all independent turns first. Mode any returns all currently ready items; mode all waits until every turn is terminal but returns early for permissions or timeout. Accumulate ready items by turnId and continue with pendingTurnIds after an interrupted all wait.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoany returns when at least one turn is ready; all waits for all terminal turns.any
waitMsNoWait for at most this many milliseconds, up to 30000; timeout does not cancel turns.
turnIdsYesTurn ids returned by cs_agent_send, from 1 to 64 entries.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and idempotent annotations, the description reveals meaningful behaviors: mode 'any' returns all currently ready items, mode 'all' returns early on permissions or timeout, and interrupted all-waits require manual accumulation via pendingTurnIds. These details are not present in the schema and materially shape correct usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary action, then mode details, then recovery guidance. No redundant words; every clause contributes to either understanding or usage. The structure flows logically from what to do, to mode behavior, to post-interruption handling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling utility with 3 parameters and no output schema, the description covers the essential workflow: issuing turns first, choosing modes, handling partial results, and resuming. It does not specify the exact return value format, but the description of 'ready items by turnId' gives adequate shape. Overall, sufficient for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds semantic nuance to the 'mode' parameter by clarifying that 'any' returns all ready items, not just one, and introduces the concept of pendingTurnIds for handling interruptions—valuable context beyond the schema's terse 'returns when at least one turn is ready.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Wait for multiple turns,' distinguishing from sibling cs_agent_wait_turn. It immediately establishes the tool's role ('after you send all independent turns first') and elaborates mode semantics, leaving no ambiguity about its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage instructions: send independent turns first, then choose mode based on whether you want current ready items or to wait for all terminal. It also advises how to recover from interrupted 'all' waits by accumulating ready items and continuing with pendingTurnIds. Fails to explicitly name alternatives like cs_agent_wait_turn, but the context makes the distinction clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_wait_messageA
Read-onlyIdempotent

Preferred blocking wait after cs_agent_send for one turn. For multiple turns, send all independent turns first and use cs_agent_wait_many. Returns a terminal reply, a permission request requiring cs_agent_respond_permission, a terminal turn without a reply, or a bounded timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
turnIdNoTurn id returned by cs_agent_send.
waitMsNoWait for at most this many milliseconds, up to 30000; call again after timeout.
messageIdNoRequest message id returned by cs_agent_send; resolved to its turn.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state readOnlyHint=true and idempotentHint=true, and the description adds significant behavioral context: it returns a terminal reply, a permission request requiring cs_agent_respond_permission, a terminal turn without a reply, or a bounded timeout. This goes beyond annotations and clarifies blocking and return semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first states purpose and alternative, the second lists possible outcomes. Every sentence is informative with no fluff, and key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool, complete schema parameter descriptions, and annotations covering safety, the description is adequate. It explains behavior (blocking), outcomes (reply/permission/terminal/timeout), and next steps (respond_permission), making it complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 3 parameters with descriptions (100% coverage), so the baseline is 3. The description references the turn from cs_agent_send but adds no parameter-level detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Preferred blocking wait after cs_agent_send for one turn,' specifying the action (blocking wait), resource (message/turn), and relationship to send. It also distinguishes from cs_agent_wait_many, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Preferred blocking wait after cs_agent_send for one turn' and instructs to use cs_agent_wait_many for multiple turns after sending all independent turns. This provides direct when-to-use and alternative-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cs_agent_wait_turnA
Read-onlyIdempotent

Wait for a turn revision, permission request, or terminal state. Use this instead of cs_agent_wait_message when state transitions matter more than reply content.

ParametersJSON Schema
NameRequiredDescriptionDefault
turnIdYesTurn id to observe.
waitMsNoWait for at most this many milliseconds, up to 30000.
afterRevisionNoOnly return as changed after this previously observed revision.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the types of state changes to wait for (revision, permission request, terminal state), which goes beyond the annotations without contradicting them. It does not detail timeout behavior or return value structure, but enough context is provided for a wait operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with the first sentence stating the core purpose and the second providing usage guidance. There is no redundant information or filler; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (three scalar parameters, no output schema) and the presence of annotations, the description is largely complete. It explains the purpose and when to use it, which is sufficient. The term 'terminal state' is somewhat vague, and there is no mention of return values or error conditions, but these are not critical for a wait tool and the description otherwise covers the essentials.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (turnId, waitMs, afterRevision) clearly described in the schema. The tool description does not add additional meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: waiting for a turn revision, permission request, or terminal state. It uses a specific verb ('Wait') and resource ('turn'), and distinguishes itself from the sibling tool cs_agent_wait_message by focusing on state transitions rather than reply content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidance: 'Use this instead of cs_agent_wait_message when state transitions matter more than reply content.' This tells the agent when to prefer this tool over an alternative, which is exactly what the dimension requires.

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. Dates show when Glama detected each change.

  1. 14 tool updatesv0.3.1
    • First observedcs_agent_cancel
    • First observedcs_agent_capabilities
    • First observedcs_agent_create
    • First observedcs_agent_destroy
    • First observedcs_agent_events
    • First observedcs_agent_get_message
    • First observedcs_agent_get_turn
    • First observedcs_agent_list
    • First observedcs_agent_respond_permission
    • First observedcs_agent_send
    • First observedcs_agent_status
    • First observedcs_agent_wait_many
    • First observedcs_agent_wait_message
    • First observedcs_agent_wait_turn

TDQS

A4.2/5.0
Disambiguation4/5

Tools have clearly distinct roles with detailed descriptions, but the multiple wait/read variants (wait_message, wait_turn, get_message, get_turn, events) create some overlapping surface that could cause misselection without careful reading.

Naming Consistency4/5

All tools share the cs_agent_ prefix and use consistent lowercase_with_underscores, but the verb pattern is mixed: some are bare verbs (create, list, send, cancel, destroy) while others are verb_noun (get_message, wait_turn). This is still predictable and readable.

Tool Count5/5

14 tools is well within the optimal range and each tool serves a distinct need in the delegation lifecycle: capabilities, creation, messaging, waiting, permissions, cancellation, and destruction. The count feels appropriate for the domain.

Completeness4/5

The lifecycle is well covered: create, list, status, send, wait, cancel, destroy, plus capability discovery and permission handling. Minor gaps exist such as no explicit update_agent or non-turn messaging tool, but these are likely out of scope and core workflows are fully supported.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables any MCP-compatible client to use existing Claude Code agents from .claude/agents/ directories. Spawns agents in separate CLI sessions for better context optimization and performance across Codex, Gemini CLI, and other AI coding assistants.
    3
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    MCP server that bridges coding agents (Claude Code, Codex, Gemini CLI) via ACP for pair programming, enabling agents to consult each other as tools.
    -
  • A
    license
    B
    quality
    A
    maintenance
    A local stdio MCP server that enables coding agents to discover credential handles and create scoped action requests with local approval and sanitized output.
    7
    118
    15
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/codestable/cs-agent-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server