ANON MCP
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., "@ANON MCPshow me my open todos sorted by due date"
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.
ANON MCP
将 ANON 的项目 HTTP API 暴露为本地 stdio MCP server。使用 TypeScript 和官方 MCP SDK,无需修改 ANON,也不直接连接数据库。
工具从 ANON 的 docs/openapi.yaml 生成,当前提供 142 个工具。已结合 docs/api.md、docs/plugin-development.md、后端鉴权中间件和路由实现确认接入方式。完整映射见 工具目录。
为什么使用 MCP
ANON 已为脚本提供绑定单个项目的 anonk_ API 密钥,适合通过 MCP 暴露可发现、带参数 schema 的实时操作。密钥仅在本地进程中读取;后端继续执行 scope、角色和数据可见性检查。
Skill 更适合补充「活动前检查清单」「汇总待办后生成周报」等工作流程,但本身不提供统一的工具调用协议。因此此仓库先实现 MCP,后续可在其上增加工作流 skill。
Related MCP server: FastAPI MCP Production Kit
快速开始
需要 Node.js 22+ 和可访问的 ANON 实例。
npm ci
npm run build
cp .env.example .env在 ANON「我的 → API 密钥」为目标项目创建密钥,选择需要的权限点,然后编辑 .env:
ANON_BASE_URL=http://localhost:4000
ANON_API_KEY=anonk_这里替换为真实密钥
ANON_MODULES=project,todos,dashboard,announcements
ANON_READ_ONLY=falseANON_BASE_URL 是实例源地址,也接受以 /api 结尾的地址;使用前端反向代理地址亦可。生产部署使用 HTTPS。密钥只展示一次;到期或撤销后需替换配置并重启。
npm start此命令从当前目录的 .env 读取配置,随后等待 stdin 上的 MCP JSON-RPC;终端没有欢迎输出是正常行为。stdout 专供协议通信,启动错误写入 stderr。
MCP 客户端配置
对使用 mcpServers 配置结构的客户端,可加入以下条目。将两处路径改成当前仓库的绝对路径;由客户端启动进程,不需要预先运行 npm start。
{
"mcpServers": {
"anon": {
"command": "node",
"args": [
"--env-file=/absolute/path/anon-mcp/.env",
"/absolute/path/anon-mcp/dist/index.js"
]
}
}
}客户端也可通过进程环境直接传入 ANON_BASE_URL、ANON_API_KEY 等变量,此时省略 --env-file 参数。项目 ID 自动从 /api/open/me 获取,调用者不能通过工具参数切换项目。多个项目可分别配置多个 MCP 进程和密钥。
使用方式
先调用 anon_get_open_me 查看项目、实时权限与有效期,然后调用业务工具。参数统一使用 path、query、body 分组;仅传所需分组。
查询未完成待办:
{
"name": "anon_get_todos",
"arguments": { "query": { "status": "open", "sort": "dueAt", "order": "asc" } }
}创建待办:
{
"name": "anon_post_todos",
"arguments": {
"body": { "title": "确认场地设备", "dueAt": "2026-10-20T18:00:00+08:00" }
}
}完成待办并附上备注:
{
"name": "anon_post_todos_todo_id_complete",
"arguments": {
"path": { "todoId": "替换为待办ID" },
"body": { "completionNote": "已确认" }
}
}工具参数按 schema 校验,非法参数不会发送到 ANON。工具可见不表示具有执行权限;实际授权由 ANON 每次请求决定。时间使用带时区的 ISO 8601,财务金额以元提交。
成功结果通过 structuredContent 和 JSON 文本同时返回:JSON 接口为 {status, data},CSV 为 {status, contentType, text},图片/文件为 {status, contentType, base64}。失败设置 isError: true,保留 ANON 的 error.code、消息与 HTTP 状态。客户端还可读取 anon://guide 资源。
配置
变量 | 默认值 | 用途 |
|
| ANON 实例源地址 |
| 必填 |
|
| 空,全部模块 | 逗号分隔的模块白名单,见工具目录;身份/健康工具始终开放 |
|
| 设为 |
| 自动获取 | 可选,额外验证密钥所属项目 |
|
| 每个 HTTP 请求的超时,范围 100–300000 毫秒 |
常用模块:project,todos,dashboard,announcements,finance,materials,physical,work-modules,work-sheet,stage-rundowns,stage-signups,lostfound。模块名无效会在启动时报错,避免误配后意外开放全部工具。
文件与接口范围
支持 JSON、CSV、multipart 上传与项目域内的二进制下载。上传字段使用 {filename, mimeType?, base64},多个附件用数组;内容是不带 data: 前缀的标准 Base64。每个文件最多 20 MiB,每次最多 10 个附件;JSON 请求体最多 2 MiB,单次响应最多 8 MiB。MCP 客户端可能另有限制,较大文件请使用 ANON 页面。
接口范围沿用 ANON API 密钥边界:不提供用户登录、密钥管理、项目创建/全量列表、全局 /api/files 下载、后台或 cron。另排除密码查看与自定义工具启动令牌接口;这些属于独立的凭证流程。平台账号普通接口仍按后端的加密模式契约使用。
401 表示密钥失效,403 检查项目、scope、实时角色权限,429 稍后重试。不会自动重试写操作,也不跟随 HTTP 重定向;超时或取消后,先核实写入结果再重试。
开发与 API 同步
npm run typecheck # TypeScript 检查
npm test # 构建、契约和 stdio 协议测试,无需真实 ANON 或数据库
npm run watch # 持续编译;另由客户端启动生成的 dist/index.js
npm run sync:api # 从 ../anon/docs/openapi.yaml 更新快照和工具目录
npm run check:api # 检查快照及目录是否与上游一致上游不在相邻目录时可传入规范路径:npm run sync:api -- /path/to/anon/docs/openapi.yaml。运行时只依赖仓库内的规范快照,移动此仓库后仍可运行。同步后需重新测试、重启进程;规范与代码有差异时,以 ANON 的实际路由及 docs/api.md 为准。
src/catalog.ts 转换规范并筛选工具,src/client.ts 处理鉴权与 HTTP,src/server.ts 提供 MCP 协议,tests/ 覆盖模拟后端契约和真实子进程握手。resources/anon-openapi.yaml 为 ANON 的 MIT 许可规范快照,许可与原作者署名见 LICENSE。
.env 已被忽略,不要提交真实密钥。当前仓库的 AGENTS.md 保留原样。
Available Tools
142 toolsanon_delete_accounts_account_idADestructive
删除平台账号。需 accounts:manage 权限且当前用户在该账号可见范围内。 DELETE /api/projects/{id}/accounts/{accountId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds valuable context beyond annotations: required permission (accounts:manage) and visibility scope, plus clarification that the project is auto-determined. It does not, however, describe side effects such as cascading deletion or irreversibility details.
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 short, front-loaded with the core action, and structured as purpose, permission requirement, endpoint, and project clarification. Every line adds relevant information, though the endpoint line is somewhat redundant with the schema's path structure.
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 destructive delete tool whose annotations already carry the safety profile, the description supplies the key missing context: permission requirement and automatic project scoping. It lacks any note on what happens to the deleted account's associated data, but that is a minor gap given the basic operation and no 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?
Schema description coverage is 0%, so the description must compensate for the single required parameter accountId. It clarifies that projectId is not needed (useful negative information) but never explains what accountId represents or its format. The schema itself only enforces a non-empty string, leaving the parameter largely undocumented.
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 (平台账号), clearly distinguishing it from sibling account tools like anon_get_accounts and anon_patch_accounts_account_id. An agent can identify the operation and target without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides prerequisite conditions (accounts:manage permission, visibility scope) but does not state when to use this tool versus alternatives (e.g., anon_delete_members_user_id or other delete tools). Usage is only implied by the name and permission note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_announcements_announcement_idADestructive
删除公告。需 announcement:manage 权限。同时删除全部确认记录。 DELETE /api/projects/{id}/announcements/{announcementId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description goes further by disclosing the cascade effect (all confirmation records are destroyed too) and the auth requirement (announcement:manage). Those are exactly the kinds of consequences an agent needs before issuing an irreversible call, and they are not derivable from 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?
Four short sentences, no filler: purpose, permission, side effect, endpoint/parameter note. Front-loaded with the action and consequence, with the mechanical details (endpoint, project inference) trailing.
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 one-parameter destructive delete with no output schema and a fully-covered annotation set, the description supplies everything relevant: what is deleted, what else is deleted, what permission is required, and which parameters are/are not expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load; it does so by clarifying that only announcementId is supplied and the project is inferred from the API key, explicitly forbidding a projectId the agent might otherwise invent. It adds no detail about the announcementId value format itself, but that is largely self-evident from the name.
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?
Precise verb+resource ('删除公告') plus a scope detail — it also deletes all confirmation records — that an agent would not learn from the name alone. An agent can tell this apart from anon_patch_announcements_announcement_id and anon_post_announcements_announcement_id_confirm without opening any schema.
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?
States a concrete gating prerequisite (announcement:manage permission) that tells the agent when this call will succeed, which is real usage context. It stops short of naming alternatives or when-not-to-use conditions relative to the PATCH/POST announcement siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_custom_tools_tool_idADestructive
删除自定义工具。需 tools:manage 权限。删除工具并级联作废该工具签发的全部 API 密钥。 DELETE /api/projects/{id}/custom-tools/{toolId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds a critical side effect the annotations cannot express: deletion cascades to revoke all API keys issued by the tool. It also discloses the auth requirement and the implicit project scoping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: action, permission and cascade consequence first, then the raw endpoint, then the scoping note. Every line earns its place and the disruptive consequence 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 destructive one-parameter tool with full annotation coverage and no output schema, the description supplies the action, the auth prerequisite, the cascading side effect, and the project-scoping rule. Nothing an agent needs to call it safely is absent.
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 only parameter (toolId) carries no format detail, so the description must compensate. It does so partially by explaining why projectId is absent (project inferred from the API key), which clarifies the shape of the required path argument, though it adds nothing on toolId itself.
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 specific verb and resource ('删除自定义工具' / delete custom tool) and is clearly distinguishable from the sibling read/create/update variants (anon_get_custom_tools, anon_post_custom_tools, anon_patch_custom_tools_tool_id). It even supplies the underlying DELETE route, leaving no ambiguity about the operation.
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 states the required permission scope ('需 tools:manage 权限') and clarifies that projectId must not be supplied because the project is derived from the API key, which is exactly the kind of precondition an agent needs. What is missing is explicit when-to-use vs. when-not / alternative guidance, but the operational context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_finance_tx_idADestructive
删除账目。需 finance:manage 或 finance:add 权限。财务管理者可删任意账目;finance:add 记账者仅能删自己添加的账目,删他人账目返回 403。 DELETE /api/projects/{id}/finance/{txId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds substantive context beyond them: the required permission scopes, the 403 outcome when deleting another user's entry, and that the project is derived from the API key. This is exactly the auth/error context an agent needs for a destructive mutation.
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?
Front-loads the verb, then permission semantics, then the route; every sentence carries information. Slightly dense with the permission branches but no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param destructive delete with no output schema, the description covers purpose, authorization, scoping, and failure behavior. It omits return/confirmation semantics, which is minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden and does explain that projectId must NOT be supplied (project comes from the API key), adding real meaning about path scope. It gives no format/example for txId itself, so not a 5.
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+resource ('删除账目' / delete a finance entry) plus the exact HTTP route DELETE /api/projects/{id}/finance/{txId}. This clearly distinguishes it from siblings like anon_patch_finance_tx_id and anon_get_finance.
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?
Gives concrete authorization rules: needs finance:manage or finance:add, managers can delete any entry, add-level users can only delete their own, others get 403. This effectively defines when the call succeeds. It does not name a sibling alternative (e.g., patch to modify instead of delete), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_lostfound_item_idADestructive
删除失物。需 lostfound:manage 权限。级联删除照片原图/预览图存储对象与 File 文档。 DELETE /api/projects/{id}/lostfound/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description goes further by disclosing the cascade side effects: photo original/preview storage objects and File documents are also deleted. That is exactly the 'what gets destroyed' context an agent needs before calling a non-idempotent delete, plus the permission requirement.
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?
Front-loaded with the action and permission requirement, then cascade behavior, then routing. Efficient overall, though interleaving the raw HTTP route between behavioral facts is slightly less scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-schema, no-output-schema delete, the definition covers purpose, authorization, cascade destruction, and project scoping. The main gap is itemId semantics, which the nested schema does not fill in either.
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 load. It usefully explains that projectId is not needed because the project is derived from the API key, but it never describes the one real parameter, itemId (format, source, constraints). Partial compensation only.
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 ('删除失物' / delete lost item) and the HTTP route makes the operation unambiguous against siblings like anon_get_lostfound_item_id, anon_patch_lostfound_item_id, and anon_post_lostfound.
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 supplies a genuine prerequisite (lostfound:manage permission) but never states when to choose this delete over alternatives such as anon_patch_lostfound_item_id for updates or a status change. Usage is implied by the verb rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_materials_resource_idADestructive
删除资源。需 materials:manage 权限。删除资源及其全部版本与文件。 DELETE /api/projects/{id}/materials/{resourceId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false. Beyond that, the description adds genuine behavioral context: it is a cascade delete that also destroys all versions and files, and it requires materials:manage authorization. That scope-of-destruction detail is not available in 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?
Front-loaded with the action, followed by permission requirement, deletion scope, and endpoint. Every sentence carries information and there is no filler. Slightly dense with four clauses but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema and annotations that already flag the safety profile, the description covers the essentials: what is destroyed, the permission gate, and the fact that no projectId is needed. Nothing critical is missing, though confirmation/irreversibility is only implied.
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?
Only one parameter exists with 0% schema description coverage, so the description must compensate. It does so by giving the endpoint template showing resourceId in the path and explicitly stating the project is derived from the API key and projectId must NOT be passed — useful negative guidance. It still does not describe resourceId's format, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (删除资源 = delete resource) and adds that it removes the resource together with all its versions and files, which sharpens the scope. The embedded DELETE endpoint confirms the target. It does not explicitly name a sibling to distinguish from, so 4 rather than 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?
It provides a real prerequisite — the materials:manage permission — which helps an agent know when it is allowed to call this. However, it gives no explicit when-to-use/when-not guidance and does not point to alternatives such as anon_patch_materials_resource_id or anon_get_materials_resource_id for non-delete needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_materials_types_type_idADestructive
删除资源类型。需 materials:manage 权限。类型下仍有资源时返回 400。 DELETE /api/projects/{id}/materials/types/{typeId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and idempotent=false, so the safety profile is covered. The description adds real value beyond that: the required scope (materials:manage), the specific 400 failure condition, and that the project is derived from the API key. It stops short of describing the success response.
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?
Front-loaded with the action and permission, then the failure condition and path. The raw DELETE URL is mildly redundant with the tool name but useful for grounding. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive endpoint with no output schema, the description covers the key decision inputs: permission, blocking condition, and identifier resolution. The only notable omission is what a successful delete returns, which is minor given the destructive annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the sole param typeId is undocumented in the schema. The description clarifies that no projectId is needed (resolved from the API key) and shows the path shape, but gives no semantics for typeId itself (source, format, where to obtain it).
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 (删除/delete) and resource (资源类型/resource type), and the sibling set makes the distinction meaningful versus anon_delete_materials_resource_id (deletes a resource, not a type) and anon_patch_materials_types_type_id. An agent can select this correctly without opening the schema.
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?
Adds concrete preconditions: requires materials:manage permission and returns 400 if the type still has resources, which tells the agent to empty the type first. It does not explicitly route to alternatives (e.g., patch or list types), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_members_user_idADestructive
移除成员。需 member:manage 权限。不能移除自己。 DELETE /api/projects/{id}/members/{userId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds genuinely non-structured context: the member:manage authorization requirement, the self-removal prohibition, and that the project scope is inferred from the API key. It does not address reversibility or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Terse and front-loaded: the action, the permission requirement, and the self-removal constraint come first, followed by the endpoint and the project-scoping clarification. Every sentence carries 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?
For a destructive single-parameter delete with no output schema, the definition covers the essentials: what is removed, the auth requirement, the self-removal guard, and the project-scoping assumption. Only the userId semantics and any failure/idempotency nuance remain unstated.
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% for the single nested path.userId parameter, so the description must carry the load. It usefully clarifies that no projectId is expected (project inferred from the API key) and shows userId in the path template, but it never explains what userId represents or its format.
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 gives a specific verb and resource ("移除成员" / remove member) and pins it to a concrete endpoint (DELETE /api/projects/{id}/members/{userId}), which cleanly separates it from the sibling anon_patch_members_user_id (update) and the other delete tools. An agent can identify the operation without opening the schema.
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 states the required permission (member:manage) and an explicit precondition/restriction (cannot remove yourself), which tells the agent when the call is valid. It does not name an alternative tool or describe failure/fallback paths, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_milestones_milestone_idADestructive
删除里程碑。需 project:manage 权限。 DELETE /api/projects/{id}/milestones/{milestoneId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent behavior, so safety is covered. The description adds genuinely useful context beyond annotations: the required project:manage permission and the fact that the target project is derived from the API key rather than supplied. It stops short of describing cascade effects of deletion.
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?
Front-loaded with the action, then permission, endpoint, and a useful scoping note. Compact and well-ordered; the raw endpoint line is slightly redundant but still informative.
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 destructive mutation whose annotations already flag destructiveness, the description covers purpose, auth, and project scoping. Without an output schema it omits any return/confirmation detail, but that is minor for a delete endpoint.
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 burden falls on the description. It clarifies a non-obvious scoping point (no projectId needed, project auto-determined), which is valuable, but does not document the milestoneId parameter itself beyond what its name implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource (删除里程碑) and disambiguates it from siblings like anon_patch_milestones_milestone_id and anon_post_milestones. An agent can immediately tell this is the deletion operation on milestones specifically.
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 states the required permission (project:manage) which acts as a prerequisite, and clarifies the project scoping, but gives no explicit when-to-use/when-not or alternative routing. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_physical_categories_cat_idADestructive
删除实物分类。需 materials:manage 权限。分类下仍有物资时拒绝删除。 DELETE /api/projects/{id}/physical/categories/{catId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds context the annotations cannot: the required permission scope, the guard that deletion is refused while items remain, and that the project is inferred from the API key. It does not state irreversibility or what happens to nested references, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then permission, then failure condition, then endpoint — every line carries information and there is no filler. Slightly terse spacing between clauses, but nothing wasted.
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 destructive mutation with a single path parameter and no output schema, the description covers authorization, the rejection rule, and project scoping, which is most of what an agent needs to call it safely. Missing only value-format detail for catId and confirmation that the deletion is irreversible.
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 single nested catId parameter has no format guidance (ID vs. name, source of the value); the description only implies it belongs to the path. It does usefully clarify that no projectId is required because the project is derived from the API key, which compensates partially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('删除实物分类' / delete physical category), which is distinguishable from sibling operations like anon_delete_physical_items_item_id or anon_delete_materials_types_type_id. It does not explicitly contrast with those siblings, 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?
Gives the permission precondition (materials:manage) and an explicit refusal condition (rejects deletion when the category still contains items), which is real when-to-use/when-it-fails guidance. It never points to an alternative action (e.g., deleting or reassigning items first), so no exclusion routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_physical_items_item_idADestructive
删除物资条目。需 materials:manage 权限。级联删除该物资的变动日志。 DELETE /api/projects/{id}/physical/items/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is known, but the description adds real value beyond them: the required materials:manage permission and the cascading deletion of the item's change logs, which is a non-obvious side effect. It stops short of stating irreversibility or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, all front-loaded: purpose, permission, side effect, then route. Nothing redundant; the DELETE line anchors the agent to the exact endpoint.
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 destructive single-parameter delete with no output schema, the description covers permission, cascading scope, and path derivation, leaving little an agent needs before calling. It could note irreversibility, but the essentials are 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 carries the burden. It clarifies that the project is derived from the API key and projectId must not be passed, which is useful routing context, but itemId itself is only referenced via the route template with no format or source guidance.
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?
'删除物资条目' names a specific verb (delete) plus the exact resource (a physical/materials item addressed by itemId), and the appended DELETE route removes any ambiguity. An agent can distinguish it from anon_patch_physical_items_item_id and anon_delete_physical_categories_cat_id without opening a schema.
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 verb/resource and the stated materials:manage permission requirement, but the description never says when to prefer this over the patch/update sibling or when deletion is inappropriate. No explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_qq_binding_group_open_idBDestructive
按群解绑项目 QQ 群。需 project:manage 权限。从项目的 qqGroups 中移除指定群(幂等,群不存在时返回原列表)。QQ 侧把机器人移出群(GROUP_DEL_ROBOT 事件)也会自动解绑。 DELETE /api/projects/{id}/qq-binding/{groupOpenId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context beyond annotations (permission requirement, removal from qqGroups, auto-unbind on the QQ side, project inferred from the key). But it explicitly claims the operation is idempotent ('幂等') while the annotation declares idempotentHint=false, a direct contradiction on that flag. Contradicting a structured annotation caps this dimension despite the otherwise rich disclosure.
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?
Purpose is front-loaded in the first clause, followed by permission, side effects and the HTTP route. Dense and mostly waste-free, though the route line partially duplicates what the tool name already encodes.
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 destructive mutation with no output schema, the description covers the essentials an agent needs: required permission, what is mutated, idempotency behavior, project resolution, and an independent auto-unbind condition. Its only completeness failure is that the stated idempotency conflicts with the annotations.
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% for the single nested groupOpenId parameter, so the description must compensate. It clarifies that the project component of the path is derived from the API key and need not be passed, which resolves a real ambiguity, but it adds no meaning about the groupOpenId value itself (format/origin).
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+resource: unbind ('解绑') a project's QQ group by groupOpenId, matching the DELETE route shown. The action is clearly distinct from the PATCH sibling anon_patch_qq_binding_group_open_id, though the description never names or contrasts a sibling explicitly, which keeps it from 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?
Provides useful preconditions (requires project:manage permission, project resolved from the API key so no projectId is passed) and describes an alternate trigger path (auto-unbind on GROUP_DEL_ROBOT). However it gives no explicit when-to-use vs when-not guidance and does not mention the PATCH binding sibling as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_roles_role_nameADestructive
删除角色。需 role:manage 权限。仍有成员使用时返回 409。 DELETE /api/projects/{id}/roles/{roleName} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare destructiveHint=true and idempotentHint=false, the description adds real behavioral context beyond them: the required scope (role:manage), the 409 failure mode when the role is still in use, and that the project is inferred from the API key so no projectId is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences: action, permission, failure mode, endpoint plus the explicit note that projectId is not needed. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the operation, authorization requirement, conflict behavior, and path binding well. Only the roleName value format is left unaddressed, which is minor for this destructive single-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for a single nested path param, so the description has to compensate. It shows roleName's position in the URL template and clarifies that projectId is intentionally absent, but never states roleName's expected format or source.
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 (删除角色 / delete a role) and pins the exact endpoint and path shape, making it trivially distinguishable from patch_roles_role_name and the other delete_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear preconditions for use: the caller needs role:manage permission, and it will fail with 409 if members still reference the role. It does not explicitly route against alternatives such as patch_roles_role_name, so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_stage_rundowns_ridADestructive
删除 Rundown。需 tools:manage 权限。级联删除全部节目的素材文件(存储对象与 File 文档)与现场大屏分享文档。执行中禁止删除(409)。 DELETE /api/projects/{id}/stage-rundowns/{rid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description goes well beyond them: it names the permission scope, enumerates exactly what is destroyed (storage objects, File documents, big-screen share documents), and documents the 409 execution-lock behavior. This is exactly the extra context a destructive tool needs.
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?
Front-loaded with purpose, then permission, cascade scope, and the 409 constraint in tight successive sentences. The trailing raw endpoint line is somewhat redundant but does anchor the HTTP semantics, so it is not wasted space.
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 destructive, no-output-schema, single-parameter tool, the definition covers the safety profile, cascade side effects, permission requirement, and failure mode. The only material gap is that the rid parameter's meaning and format are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single path parameter 'rid' is never explained in either the schema or the description, so the agent must infer it means rundown id. The description does add useful scoping information (projectId is auto-derived from the API key and must not be passed), which partially compensates, but not enough to lift this above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (删除/delete) and resource (Rundown), and immediately distinguishes itself from sibling delete tools by disclosing that it cascades into materials, File documents, and screen-share documents. An agent can tell this apart from anon_delete_stage_rundowns_rid_items_item_id without opening the schema.
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?
Gives a clear precondition (requires tools:manage permission) and an explicit when-not condition (deletion is rejected with 409 while the rundown is executing). It does not name a specific alternative sibling for the non-cascading case, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_stage_rundowns_rid_items_item_idADestructive
删除节目。需 tools:manage 权限。删除节目并级联清理其附件文件。执行中禁止编排变更(409)。 DELETE /api/projects/{id}/stage-rundowns/{rid}/items/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is known. The description adds genuinely new behavior: cascade cleanup of the item's attachment files, the tools:manage permission gate, and a 409 conflict during execution — all 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and constraint, then supplies the endpoint and the projectId note. Slightly redundant with 删除节目 appearing twice, but otherwise tight and every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers permissions, cascade side effects, and the conflict condition — the essentials an agent needs. Minor gaps remain (no statement about the delete response or impact on remaining item ordering), but the safety-critical facts are 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% for a single nested path parameter, so the description must carry the load. The endpoint template shows where rid and itemId sit, and it usefully explains that projectId is derived from the API key and need not be passed — good context, but the meaning/format of rid and itemId themselves is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (删除节目 / delete a rundown item) and the exact endpoint, so it is distinguishable from the sibling anon_patch_stage_rundowns_rid_items_item_id and the collection-level anon_delete_stage_rundowns_rid. It does not explicitly contrast itself with the nearest sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear precondition (需要 tools:manage 权限) and an explicit when-not (执行中禁止编排变更, returns 409), which is real guidance. However, it never names the alternative tool for editing an item (anon_patch_stage_rundowns_rid_items_item_id) or states when to prefer deletion over it, so usage is only partly covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_stage_signups_sidADestructive
删除报名批次。需 tools:manage 权限。 DELETE /api/projects/{id}/stage-signups/{sid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, so safety is largely covered. The description adds non-annotation context: the required tools:manage permission and the fact that projectId is auto-derived from the API key, which is useful operational detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded lines leading with the action, then the permission requirement, endpoint, and the projectId note. No wasted prose; the structure is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive delete with annotations already covering the safety profile and no output schema needed, the description supplies the key missing pieces: permission requirement and project scope resolution. It is adequately complete, with only sid semantics left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the sole parameter is a nested path object with sid. The description partially compensates by showing the endpoint and clarifying that no projectId need be passed, but it never explains what sid identifies or its format, leaving the parameter under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"删除报名批次" gives a specific verb (delete) and resource (signup batch), and the endpoint path confirms the scope. It is distinguishable from the item-level sibling delete tools by the '批次/batch' framing, though it does not explicitly name or contrast those siblings.
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 states a real prerequisite (requires tools:manage permission), which is genuine routing context. However, it gives no guidance on when to use this delete versus anon_patch_stage_signups_sid (update), anon_get_stage_signups_sid (read), or the item-level deletes; usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_stage_signups_sid_items_item_idBDestructive
删除报名节目。需 tools:manage 权限。 DELETE /api/projects/{id}/stage-signups/{sid}/items/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds genuinely new context beyond the annotations: the required auth scope (tools:manage) and the fact that the project is inferred from the API key rather than passed in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and permission requirement, followed by the concrete endpoint and the projectId clarification. No filler, though the raw path restates what the name already encodes.
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 destructive, non-idempotent mutation with no output schema and 0%-covered nested parameters, the description covers permission and project scoping but omits what exactly is destroyed (e.g., whether an attached review or child data goes with the item) and any return/confirmation behavior. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter is a nested object with two required fields (sid, itemId). The description never explains what sid or itemId denote — it only clarifies that projectId is unnecessary, which is not one of the required parameters. The URL template hints at their roles but adds little beyond the schema's own structure.
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 verb+resource is explicit (删除报名节目 = delete a signup item), and the embedded DELETE path disambiguates the exact sub-resource from siblings like anon_delete_stage_signups_sid (whole signup) and anon_delete_stage_signups_sid_items_item_id_review. It does not, however, explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a precondition — requires tools:manage permission — and clarifies that projectId must not be supplied because the API key determines the project. That is useful routing context, but there is no explicit when-to-use / when-not-to-use guidance versus the parent signup deletion or the review deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_stage_signups_sid_items_item_id_reviewADestructive
撤回本人投票。需 tools:manage 权限。没有本人投票则幂等返回。 DELETE /api/projects/{id}/stage-signups/{sid}/items/{itemId}/review 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context the annotations do not carry: the tools:manage permission requirement, the no-op/idempotent return when no vote exists, and that the project is derived from the API key. However, the statement '没有本人投票则幂等返回' (idempotent return) directly conflicts with the annotation idempotentHint=false, muddying retry-safety behavior for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences that are front-loaded with the action, then permission, idempotency, endpoint, and the projectId note. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-path-param destructive delete with no output schema, the description covers the essentials: scope (own vote), auth (tools:manage), idempotency behavior, and the projectId auto-resolution. Only the idempotency/annotation mismatch and undefined path params 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?
With 0% schema description coverage the description must compensate, and it does clarify that projectId is intentionally omitted ('无需传 projectId'). It leaves the two actual path params sid and itemId (stage-signup id, item id) undefined, though their meaning is largely inferable from the URL.
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+resource: '撤回本人投票' (withdraw one's own vote) for the stage-signup item review. It is distinguishable from the sibling anon_put_stage_signups_sid_items_item_id_review (which submits the vote) and from anon_delete_stage_signups_sid_items_item_id (which removes the item). It does not, however, explicitly name those siblings to disambiguate.
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?
Gives the precondition '需 tools:manage 权限' and the self-only scope ('本人投票'), which tells the agent when the call is valid. It stops short of naming alternatives (e.g., using the PUT review endpoint to submit rather than withdraw a vote) or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_stages_stage_idADestructive
删除项目阶段。需 project:manage 权限。删除后关联里程碑自动改为不关联阶段。返回形态同 GET 阶段列表。 DELETE /api/projects/{id}/stages/{stageId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that: the project:manage permission requirement and the cascade that associated milestones become unassociated. It does not state irreversibility or effects on stage rundowns/signups, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, followed by permission, cascade, return format and the auth note, with the raw method/path appended for reference. Sentences are short and mostly earn their place; the endpoint line is somewhat redundant with the operation already stated.
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 destructive delete with no output schema, the description covers permission, the milestone cascade and that the response mirrors the GET stage list, which is enough to act. It omits whether the delete is reversible and whether related rundowns/signups are also affected, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load. It explains the non-obvious detail that the project is inferred from the API key and therefore no projectId should be passed, which clarifies why only stageId is present in the nested path object. It does not further describe the stageId value itself.
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+resource (删除项目阶段 / delete a project stage) and even the HTTP operation DELETE /api/projects/{id}/stages/{stageId}, making it unambiguously distinct from the sibling anon_get_stages, anon_post_stages and anon_patch_stages_stage_id. An agent can tell what this does without opening the schema.
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 delete verb and the stated project:manage requirement, which tells the agent a permissioned context is needed. However, no alternatives are named (e.g. when to reorder/reassign a stage versus delete it) and there is no explicit 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.
anon_delete_todos_todo_idADestructive
删除待办。需 todo:manage 权限。 DELETE /api/projects/{id}/todos/{todoId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is partly covered. The description adds value the annotations cannot: the required permission scope (todo:manage) and the scoping behavior (project auto-derived from the API key), both of which affect whether the call will succeed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact lines: verb+resource first, then permission, then endpoint, then scoping note. Every sentence is relevant, though restating the HTTP path partially duplicates the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with no output schema, the description covers purpose, prerequisite permission, and project scoping. It omits the return/deletion semantics (e.g., what else is destroyed), but the robust destructive/reset annotations leave little uncovered.
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 some burden. It usefully explains that no projectId is needed because the project is derived from the API key, but it says nothing about the meaning or format of the one actual parameter (todoId), which the schema documents only as a minLength-1 string.
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 (删除/delete) and resource (待办/todo), and the embedded endpoint DELETE /api/projects/{id}/todos/{todoId} pins down exactly which object is removed. An agent can distinguish it from the sibling patch_todos_todo_id and post_todos_todo_id_complete without opening either schema.
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?
Gives a concrete prerequisite (需 todo:manage 权限) and clarifies that the project scope comes from the API key, which is genuinely useful context for invoking it. It does not, however, state when to prefer this over the sibling delete/completion tools or any exclusion conditions, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_delete_work_modules_midADestructive
删除任务模块。需 work:manage 权限。 DELETE /api/projects/{id}/work-modules/{mid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds value beyond that by disclosing the required permission scope and the fact that the target project is inferred from the API key, which prevents a likely caller mistake.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded lines with no filler: action, permission requirement, then endpoint/scoping. Every sentence carries information, though the endpoint restatement is somewhat redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param destructive delete with annotations carrying the safety profile and no output schema, the description covers action, auth, and scoping. The only material gap is that it never explains how to obtain the mid value.
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 is one nested parameter (path.mid), so the schema alone leaves mid undefined. The description compensates partially by showing the DELETE template with {mid} and explaining that projectId is implicit, indicating mid is a module identifier drawn from the path, but it never defines what a module id is or where to obtain it.
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 (删除/delete) and resource (任务模块/work module) plus the exact HTTP route, so the agent knows precisely what is destroyed. It doesn't explicitly contrast with sibling deletes like anon_delete_milestones or anon_patch_work_modules_mid, but the resource 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?
Adds the precondition that work:manage permission is required and clarifies that projectId must not be supplied, which is real usage guidance. However, it never states when to prefer this over other work-module operations (patch/post variants) or any 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.
anon_get_accountsARead-onlyIdempotent
列出平台账号。项目成员可用,仅返回当前用户可见范围内(visibility 校验)的账号,不含密文/明文。超管不受可见范围限制。 GET /api/projects/{id}/accounts 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: the calling authorization model, the visibility-scope filter, the super-admin exemption, and the guarantee that ciphertext/plaintext secrets are excluded. That is meaningful disclosure of what is and isn't returned.
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?
Front-loaded with the purpose, then permissions/visibility, then the endpoint and the projectId clarification. Each sentence carries information; only the raw endpoint line is somewhat redundant given the tool context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description needn't explain return values, and the annotations cover the safety profile. It supplies permissions, visibility scoping, and secret-exclusion context, which is enough for an agent to invoke it correctly; the platform filter is left to the 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?
Top-level schema coverage is 0% (the wrapping `query` object has no description), though the nested `platform` field is documented in the schema. The description does not mention the platform filter, but it does clarify that projectId is auto-derived and must not be passed, which is genuine parameter-level value. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("列出平台账号" / list platform accounts) up front, making the read intent unambiguous. The scope qualifier (visibility check) further sharpens it. It does not explicitly name the write siblings (anon_post_accounts, anon_patch/delete_accounts), but the get/list framing is clear enough to distinguish it.
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?
States the eligible caller (project members) and the visibility scoping behavior, which implies when the tool is appropriate. However, it gives no explicit when-to-use vs. alternative guidance (e.g., when to use this versus patching or a per-account get). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_activitiesARead-onlyIdempotent
列出项目动态。需项目成员身份。按创建时间倒序;带权限门(permissionGate)的动态仅对拥有该权限点(或 project:manage)的成员可见。 GET /api/projects/{id}/activities 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive/openWorld, so safety is covered; the description adds real behavior beyond that: results are ordered by creation time descending, gated items are filtered by permission point (or project:manage), and the project is derived from the API key rather than supplied. It stops short of describing pagination mechanics or return shape.
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?
Roughly three short sentences, purpose front-loaded, then scope, then visibility rules; the raw endpoint string is mildly redundant but the rest earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the essentials an agent needs: what it returns, auth requirement, ordering, and permission-gated filtering. Parameter details live in the schema, so the omission there is acceptable, though pagination behavior could be clearer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions no parameters at all, and the schema leaf nodes (limit/before/sourceType) carry their own descriptions, so the description adds no syntax or meaning of its own. The only tie-in is the ordering statement, which loosely supports the 'before' cursor without explaining it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb+resource ('列出项目动态' / list project activities) and pins it to an exact endpoint (GET /api/projects/{id}/activities). The scope is clear, but it does not name or contrast any sibling (e.g. dashboard actions or todos feeds), leaving differentiation to the agent.
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 states the membership prerequisite ('需项目成员身份') and the permissionGate visibility rule, which implies usage context, but gives no explicit when-to-use / when-not guidance or named alternatives despite a large sibling toolset. Usage is therefore inferred rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_announcementsARead-onlyIdempotent
列出公告。需项目成员身份。置顶优先,其后按发布时间倒序;按当前用户可见范围过滤,total 为可见总数。 GET /api/projects/{id}/announcements 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld. The description usefully adds behavior beyond that: pinned-first ordering, publish-time descending sort, filtering to the caller's visible scope, and that total reflects the visible count. It does not cover pagination defaults or rate limits, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly three compact sentences plus the endpoint path, with the core action and constraints front-loaded and zero filler. Every clause (membership, ordering, visibility, total semantics, project auto-detection) carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing endpoint with annotations covering the safety profile and no output schema, the description supplies membership requirements, sort/filter semantics, and the project-resolution rule. The only material gap is pagination/expired-filter behavior, which lives partly in the schema rather than the description.
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 reported at 0% for the (nested) parameters, and the description adds nothing about page, limit, or includeExpired — it doesn't even mention the expired-announcement toggle or the 50-item cap. The parameter burden is therefore not compensated in the description text.
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 (公告) plus the backing endpoint GET /api/projects/{id}/announcements. An agent can immediately distinguish this list operation from siblings such as anon_post_announcements, anon_delete_announcements_announcement_id, or anon_get_announcements_announcement_id_confirmations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a real prerequisite ('需项目成员身份') and clarifies that projectId is not needed because the API key determines the project, which prevents a wasted call. However, it never states when to pick this tool over the per-announcement or confirmation endpoints, so selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_announcements_announcement_id_confirmationsARead-onlyIdempotent
查看公告确认情况。需 announcement:manage 权限。按项目全体成员拆分为已确认/未确认两组。 GET /api/projects/{id}/announcements/{announcementId}/confirmations 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description adds meaningful context beyond them: the required announcement:manage permission, that results are split into confirmed/unconfirmed groups for all project members, and that projectId is auto-derived from the API key. It does not mention pagination or result size, keeping it at a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences with the purpose front-loaded, followed by permission, return structure, and the endpoint. Efficient, though the raw endpoint path and the projectId clarification could be folded together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the return shape (two groups of members) and the permission requirement. It leaves the announcementId semantics and any pagination behavior unaddressed, but is otherwise complete for calling the tool 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% for a single nested announcementId parameter, so the description must carry the burden. It helpfully clarifies what is NOT needed (projectId is auto-determined from the API key) but never explains the announcementId value or format beyond its position in the URL path.
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+resource ('查看公告确认情况' = view announcement confirmation status) and distinguishes itself from the sibling list tool (anon_get_announcements) and the confirm action (anon_post_announcements_announcement_id_confirm). An agent can identify this as the read-only status query without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a permission prerequisite ('需 announcement:manage 权限') which is useful gating context, but gives no explicit when-to-use/when-not guidance or named alternatives. Usage is only implied by the read-only nature and the permission requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_custom_toolsARead-onlyIdempotent
列出自定义工具。项目成员可查看,按 createdAt 升序;创建者已注销显示「未知用户」。 GET /api/projects/{id}/custom-tools 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: results are sorted by createdAt ascending, deactivated creators render as "未知用户", and no projectId is required because the project is inferred from the API key.
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?
Front-loaded with the purpose, then ordering/edge-case, then auth note. Fairly tight, though the raw URL path restates information that adds little beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so adequately: ordering, the deactivated-creator fallback, and access scope are all disclosed. For a zero-param list tool this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline this scores 4. The description reinforces this by explicitly stating no projectId needs to be passed, which preempts an agent from inventing a parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("列出自定义工具" / list custom tools) and the URL path confirms the exact endpoint. It clearly distinguishes this read/list operation from the sibling write operations (anon_post_custom_tools, anon_patch_custom_tools_tool_id, anon_delete_custom_tools_tool_id).
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 states who may access (project members) and that the project is auto-determined by the API key, which is useful context. However, it never explicitly routes the agent (e.g., "use post_custom_tools to create one"); the usage is only implied by the operation being a listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_dashboardBRead-onlyIdempotent
获取工作台聚合数据。需项目成员身份。聚合首屏数据,按权限裁剪(无财务权限点时 summary.modules.finance 为 null)。 GET /api/projects/{id}/dashboard 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds real context beyond them: the membership/auth requirement and permission-based output trimming (summary.modules.finance is null without finance permission). That tells the agent why fields may be absent. It stops short of describing cost, caching, or the full module set returned.
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?
Front-loads the purpose, then the prerequisite, then the permission-trimming behavior, then the endpoint and the projectId warning. Nearly every sentence carries information; the raw GET path line is the only mildly redundant element.
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?
There is no output schema, so the description carries the return-shape burden and does partially deliver by naming summary.modules.finance and its null-on-no-permission behavior. Yet it leaves the aggregate contents and the distinction from anon_get_dashboard_summary unexplained, which an agent needs to choose 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?
The only parameter (nested query.scheduleDays, defaulting to the preferred scheduleRange with a max of 30) is never mentioned in the description, and the reported schema description coverage is 0%. With low coverage the description is expected to compensate and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('获取工作台聚合数据') plus the scope of the payload ('聚合首屏数据'), so an agent knows this returns a composed first-screen view. However it never distinguishes itself from the very close sibling anon_get_dashboard_summary, leaving overlap unresolved.
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?
Gives two useful conditions: project membership is required, and projectId must NOT be passed because the project is derived from the API key. But it offers no when-to-use guidance versus siblings such as get_dashboard_summary, get_dashboard_my_actions, get_dashboard_schedule or get_dashboard_preferences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_dashboard_my_actionsARead-onlyIdempotent
获取本人待行动项。需项目成员身份。指派给本人的未完成待办 + 未确认的现场任务;逾期优先,再按 dueAt 升序,无日期排最后。 GET /api/projects/{id}/dashboard/my-actions 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds valuable behavioral detail beyond that: the result set composition (assigned unfinished todos + unconfirmed onsite tasks) and the exact sort order (overdue first, then ascending dueAt, undated last). It stops short of describing the response shape, but ordering semantics is meaningful added 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?
Front-loads the purpose, then constraints, then the endpoint path. The added 'no need to pass projectId' line is slightly redundant with the empty schema but earns its place by explaining scoping. Generally tight with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-parameter list endpoint with no output schema, the description covers content, ordering, and auth prerequisites adequately. It could be stronger by explicitly contrasting with the other dashboard/todos endpoints, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4. The description further clarifies that no projectId is needed because the project is derived from the current API key, which is exactly the kind of implicit-scoping detail that matters for a parameterless endpoint.
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+resource pair ('获取本人待行动项' – get my pending action items) and enumerates exactly what it returns: incomplete todos assigned to me plus unconfirmed onsite tasks. It does not name or distinguish itself from siblings like anon_get_dashboard or anon_get_dashboard_summary, so an agent must still infer which dashboard endpoint to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite ('需项目成员身份' – requires project membership), which is useful context. However there is no explicit statement of when to prefer this over anon_get_dashboard, anon_get_dashboard_summary, or anon_get_todos, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_dashboard_preferencesARead-onlyIdempotent
获取工作台偏好。需项目成员身份。无记录时返回默认值(defaultView 依权限默认为 project/personal)。 GET /api/projects/{id}/dashboard/preferences 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds genuinely non-structural context: the project-member authorization requirement and the fallback semantics when no record exists (defaultView resolving to project/personal by permission), which an agent could not infer from the empty schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines: purpose first, then precondition/behavior, then the endpoint and the projectId note. Every sentence carries information and nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema GET, the description covers the operation, the auth requirement, the default-value behavior, and the implicit project scoping. The only gap is that the shape of the returned preferences object is never hinted at, which matters slightly since no output schema exists.
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 takes zero parameters, so the baseline is 4. The description goes slightly further by explaining that no projectId is needed because the project is inferred from the API key, preempting a likely agent mistake, but there are no other parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("获取工作台偏好") and pairs it with the concrete endpoint GET /api/projects/{id}/dashboard/preferences, so the operation is unambiguous. It is not confused with siblings like anon_get_dashboard_summary or anon_get_dashboard_my_actions, though it never explicitly contrasts itself with the PATCH counterpart or those dashboard reads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite ("需项目成员身份") and the context that the project is derived from the API key, which is useful for calling it correctly. However it never says when an agent should read these preferences rather than call anon_patch_dashboard_preferences to modify them, or when this is preferable to anon_get_dashboard_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_dashboard_scheduleARead-onlyIdempotent
获取日程分组。需项目成员身份。 GET /api/projects/{id}/dashboard/schedule 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds two valuable non-structural facts: caller must be a project member, and the project is resolved automatically from the API key so no projectId is passed. Rate limits and return shape remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded clauses: purpose, auth requirement, endpoint/scope clarification. Every sentence carries information; only the raw endpoint string is arguably redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with annotations covering the safety profile and no output schema, the description covers purpose, auth, and the scoping rule. It could hint at what a "schedule group" contains, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only schema parameter (days, default 7, max 30) already carries its own description and constraints, so the schema does the heavy lifting. The description adds meaning only for the absent projectId (auto-determined), not for the days parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("获取日程分组") and includes the concrete endpoint GET /api/projects/{id}/dashboard/schedule. The schedule resource is distinguishable from dashboard siblings like anon_get_dashboard_summary and anon_get_dashboard_my_actions, though it never explicitly contrasts itself with 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?
It gives a prerequisite ("需项目成员身份" – requires project member identity), which is real usage signal, but offers no when-to-use vs when-to-use-an-alternative guidance and no exclusions. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_dashboard_summaryARead-onlyIdempotent
获取仪表盘汇总。需项目成员身份。 GET /api/projects/{id}/dashboard/summary 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description nonetheless adds two behavioral facts not in the annotations: a member-identity authorization requirement and that the project scope is auto-resolved from the API key rather than passed in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact lines: purpose first, then the access precondition, then the endpoint and the no-projectId clarification. Nothing is padded and every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only tool whose safety profile is fully covered by annotations, the description supplies the key operational facts (auth requirement, implicit project scope). The only gap is that with no output schema it doesn't hint at what the 'summary' contains, but that is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description goes slightly beyond by explaining why none are needed (the project is inferred from the API key), which preempts an agent from searching for a projectId argument.
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 gives a specific verb+resource ('获取仪表盘汇总' / get dashboard summary) and pins the exact endpoint, so the agent knows what it does. However, it never distinguishes itself from the very close sibling anon_get_dashboard (or anon_get_dashboard_my_actions / anon_get_dashboard_schedule), leaving the agent to guess which dashboard endpoint to pick.
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 states a real usage precondition ('需项目成员身份' – requires project membership) and clarifies the project is derived from the API key, which is useful context. But it offers no explicit when-to-use/when-not guidance relative to the other dashboard-family tools, so selection remains implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_financeARead-onlyIdempotent
列出账目与汇总。任一项目成员可用。财务管理者(finance:manage 或 project:manage)见全部账目与完整汇总;finance:add 记账者仅见自己添加的账目且 summary 为 null。transactions 按创建时间倒序。 GET /api/projects/{id}/finance 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantive behavior: role-based visibility (finance:manage / project:manage see everything, finance:add sees only their own entries with summary=null), descending creation-time ordering, and that the project is derived from the API key. This is exactly the extra context annotations cannot convey.
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?
Front-loaded with the purpose, then permission semantics, ordering, endpoint, and the no-projectId note. Every sentence carries information, though the permission branch is dense and could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with no output schema, the description covers authorization, role-dependent data visibility, the null-summary edge case, sort order, and the endpoint/project resolution. An agent has everything needed to call it and interpret the result 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?
The tool takes zero parameters, so the baseline is 4. The description usefully clarifies that no projectId is needed because it is auto-determined from the API key, which prevents an agent from trying to supply it despite the path template.
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 ("列出账目与汇总" – list transactions and summary) on a concrete endpoint, and the scope is explicit. It does not, however, differentiate itself from the very similar sibling anon_get_finance_export, so an agent must infer the boundary.
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 tells who may call it ("任一项目成员可用") and what different roles see, which implicitly sets usage context. It never states when to choose this over anon_get_finance_export or anon_post_finance, so no explicit when-to-use / when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_finance_exportARead-onlyIdempotent
导出账目 CSV。需 finance:manage 权限。导出目标成员相关账目(其为付款人、或 splitAmong 为空、或其在 splitAmong 中),按创建时间升序。响应为 text/csv; charset=utf-8,UTF-8 带 BOM,Content-Disposition:attachment;列为 日期,类型,金额(元),付款人,参与平摊,备注,添加人。 GET /api/projects/{id}/finance/export 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: the required finance:manage permission, the exact filter semantics for the target member, the response media type, UTF-8 BOM, Content-Disposition: attachment, and the full column list. It also clarifies that projectId must not be passed because the project derives from the API key — a non-obvious constraint.
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?
It is dense but front-loaded, opening with the action and permission, then filter semantics, then response format. The column enumeration is long but pays for itself by telling the caller what the CSV will contain. No sentence is pure filler, though the endpoint/URL restatement is slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates fully by specifying the response content type, encoding, disposition header, and exact columns. Permission needs, scoping rules, and the auto-derived project are all covered, so nothing an agent needs to call this 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?
There is a single userId parameter whose schema description covers its default and membership requirement, but the tool description adds the crucial behavioral meaning of that parameter — it selects the member whose related ledger entries are exported (as payer or split participant). That is real semantic value beyond the schema's field-level text.
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 (导出/export) and resource (账目 CSV / finance ledger), and its scope ('导出目标成员相关账目') clearly distinguishes it from the sibling anon_get_finance, which is the non-export listing endpoint. An agent can identify the tool's job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete preconditions (需 finance:manage 权限) and defines exactly which entries are exported (payer, empty splitAmong, or member in splitAmong) plus the sort order, so the agent knows the situation this tool fits. It stops short of naming when to prefer it over anon_get_finance (JSON list vs CSV download), so it isn't a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_healthARead-onlyIdempotent
健康检查。 GET /api/health
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds nothing beyond restating the endpoint – it does not disclose the response shape (status code, body, uptime) or whether it requires auth, which is the only real value it could add.
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 lines, purpose front-loaded, zero waste. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless probe whose safety profile is already carried by annotations and which has no output schema, the definition is essentially complete. It could optionally note what the health payload reports, but nothing required to invoke 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?
The tool takes zero parameters, so the schema has nothing to document and the baseline is 4. No parameter information is needed.
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?
"健康检查" (health check) is a specific verb+resource that clearly identifies this as a service-availability probe, and the endpoint mapping (GET /api/health) reinforces it. It's distinguishable from the CRUD-heavy siblings at a glance, though it's terse and lacks any elaboration.
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 only implied by the name "health check" – an agent can reasonably infer it's for verifying service liveness, but there is no explicit when-to-use statement or contrast with any alternative diagnostic tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_lostfoundARead-onlyIdempotent
列出失物。项目成员可查看。按 foundAt 倒序,上限 200 条。 GET /api/projects/{id}/lostfound 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description still adds real behavior: results sorted by foundAt descending and capped at 200 records. It also notes the project is derived from the API key, which prevents the agent from inventing a projectId argument.
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?
Front-loaded with the resource, access rule, ordering and row cap in the first sentence, followed by the endpoint and key-resolution note. Dense and efficient; the raw HTTP method/path line adds orientation value but is marginally redundant for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a low-complexity read endpoint, the description supplies the ordering and 200-row cap needed to reason about results, plus the auth/identity rule. It stops short of describing return fields, but for a list tool with read-only annotations that gap is minor.
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?
Top-level schema description coverage is 0%, and the description adds no explanation of the q or status filters, so it does not compensate for the coverage gap. It does add one useful parameter-adjacent fact — that projectId must NOT be supplied — though the nested q/status descriptions are left to carry filter 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?
States a concrete verb+resource: list lost-and-found items, matching the plural list endpoint as opposed to the singular anon_get_lostfound_item_id sibling. The plural-vs-singular resource is implied by the name rather than spelled out, so it does not fully differentiate from siblings in text, 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?
Provides an access prerequisite ('project members can view') and implicitly scopes the call to the caller's own project via API key, but never states when to use this list endpoint versus anon_get_lostfound_item_id, anon_get_lostfound_share, or anon_post_lostfound. Usage context is implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_lostfound_item_idARead-onlyIdempotent
获取失物详情。项目成员可查看。 GET /api/projects/{id}/lostfound/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds genuinely new behavioral facts: view permission is limited to project members, auth is via the current API key, and the project scope is inferred rather than passed. It does not describe error behavior for missing/nonexistent items.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded lines: purpose, permission scope, endpoint plus scoping note. No filler, nothing repeated from structured fields.
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 single-parameter read tool with no output schema and full annotation coverage, the description supplies the access rule, the endpoint shape, and the project-scoping behavior an agent needs to call it correctly. Return payload details are not given, but that is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the only parameter is a nested path.itemId, so the description must compensate. It does: the REST path template reveals itemId's role and explicitly states projectId is auto-resolved from the API key and must not be passed, preventing a common mistake.
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+resource: retrieve a lost-and-found item's detail ('获取失物详情'), which cleanly differs from the sibling list tool anon_get_lostfound and the photo endpoint. It does not explicitly name those siblings to disambiguate, 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?
Gives access context ('项目成员可查看' – project members can view) but no explicit when-to-use or when-not-to-use guidance relative to anon_get_lostfound or anon_get_lostfound_item_id_photo. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_lostfound_item_id_photoARead-onlyIdempotent
获取失物照片。项目成员可读。有 WebP 预览时优先返回预览,否则返回原图;无照片返回 404。 GET /api/projects/{id}/lostfound/{itemId}/photo 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, yet the description still adds real behavioral context: WebP preview is preferred over the original when available, a 404 is returned when no photo exists, and the project scope is derived from the API key rather than a parameter. These are return/error and auth-scope facts not in 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?
Front-loaded with the core purpose, then permission, return behavior, and scope note in compact form. No wasted sentences, though the raw route line and projectId caveat are somewhat procedural rather than essential.
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 1-parameter GET with annotations present and no output schema, the description covers the essentials: what is returned (WebP vs original), the 404 case, and auth/scope. Only the itemId semantics and response content-type remain unstated.
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% for the single itemId parameter, so the schema gives no semantics. The description partially compensates by embedding {itemId} in the route template and clarifying that projectId is not needed, but it never explains what itemId is or its format, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('获取失物照片' / get the lost-found item's photo) and even gives the underlying route. It is clearly distinguishable from the sibling anon_get_lostfound_item_id (item detail) and anon_get_lostfound (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a permission precondition ('项目成员可读' – readable by project members) which helps an agent know it is an authorized read, but it names no alternative or when-to-use/when-not condition relative to the sibling item/material preview tools. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_materialsBRead-onlyIdempotent
列出资源。项目成员可用,仅返回可见范围内的资源(可见范围优先于权限点)。 GET /api/projects/{id}/materials 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered. The description adds genuinely non-structured context: callers must be project members, results are scoped by visibility (which overrides permission points), and the project is auto-derived from the API key so projectId must not be passed. That is real behavioral value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences/segments with the purpose front-loaded, followed by access constraint and the endpoint. No filler, though the embedded HTTP path is somewhat redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool whose annotations carry the safety profile and which has no output schema, the description covers permissions, scope semantics, and project auto-detection adequately. It still omits pagination/result-set limits and any guidance on the optional type filter, so it is only minimally 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 reported at 0% for the single optional query parameter, so the description is expected to compensate. It says nothing about the query object or its typeId filter (resources by type), leaving the only input entirely unelaborated in the prose.
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+resource ('列出资源' = list materials) and gives the underlying endpoint GET /api/projects/{id}/materials. It is clearly distinguishable from the singular anon_get_materials_resource_id and the type-listing anon_get_materials_types, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Adds an access condition ('项目成员可用') and a scoping rule (only visible-scope resources are returned, visible scope outranks permission points), which orients the agent. However, it never states when to prefer this tool over siblings like anon_get_materials_resource_id for a single item, so usage remains implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_materials_resource_idARead-onlyIdempotent
获取资源详情。项目成员可用;资源不可见(可见范围过滤)时返回 403。 GET /api/projects/{id}/materials/{resourceId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds genuinely non-structured behavior: the membership requirement, the exact 403 failure mode under visibility filtering, and the fact that project scope is derived from the API key. It stops short of describing the returned payload shape.
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?
Front-loads the purpose, then access/error behavior, then the endpoint and the projectId note. Four compact clauses with no filler; the raw endpoint string is the only mildly redundant element.
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 read-only single-resource fetch with no output schema, the description covers what an agent must know to call it and what failure to expect (403). The main omission is any hint of what the response contains, which is acceptable absent an output schema but would help.
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% for the single nested resourceId parameter, and the description does not define its format. It does add one meaningful parameter clarifier — that projectId must NOT be supplied because the project is resolved from the API key — which compensates partly but leaves resourceId semantics to inference.
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 ('获取资源详情' / get resource detail) and grounds it with the concrete endpoint GET /api/projects/{id}/materials/{resourceId}. It is distinguishable from the list tool (anon_get_materials) and the preview/versions siblings by being the single-resource detail fetch, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real access context — project members may call it, and a 403 is returned when the resource is filtered out by visibility scope — but provides no explicit when-to-use guidance versus anon_get_materials_resource_id_preview or anon_get_materials_resource_id_versions. Usage is implied by the resource-detail framing rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_materials_resource_id_previewARead-onlyIdempotent
预览资源最新版本。项目成员且通过可见范围校验。取最新版本——有缩略预览时返回 image/webp;无预览但文件 mime 命中内联白名单(位图、PDF、Markdown、常见音视频)时返回原始文件流;否则 404。 GET /api/projects/{id}/materials/{resourceId}/preview 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial behavior beyond them: the auth/visibility requirement, the content-negotiation outcome (image/webp when a thumbnail exists, raw stream for whitelisted inline MIME types, 404 otherwise). That tells the agent exactly what it will get back and when it fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the fallback chain, then auth, then the route. Every clause carries information. The raw 'GET /api/projects/...' line is the one mildly redundant element given the tool name already encodes the path.
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?
No output schema exists, and the description fully compensates by enumerating the three possible response outcomes and the 404 case. Combined with the stated authorization precondition, an agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single nested resourceId parameter, so the description must carry the load. It clarifies that the project is derived from the API key and that projectId must not be passed — useful — but gives no format or semantics for resourceId itself beyond the URL template. Partial compensation only.
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+resource: 'preview the latest version of a resource'. The 'latest version' scoping distinguishes it from the sibling anon_get_materials_resource_id_versions_version_preview, which targets a specified version. An agent can select correctly without opening the schema.
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?
Gives clear usage conditions: project membership plus visibility-scope check, and 'takes the latest version' which implicitly routes away from the version-specific preview sibling. It never explicitly names that alternative or states exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_materials_resource_id_versionsARead-onlyIdempotent
列出版本。项目成员且通过可见范围校验。按版本号倒序。 GET /api/projects/{id}/materials/{resourceId}/versions 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds real context beyond them: the visibility/auth precondition, the descending-version-number sort order, and the fact that the project is derived from the API key. Sort order and the auto-scoped project are non-obvious behaviors not encoded in the schema.
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?
Front-loaded with the action word, then constraints in terse fragments with no filler. Every sentence carries information; the endpoint line is the only mildly redundant element given the name already encodes the path.
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?
No output schema exists, and the description compensates by stating the ordering of returned versions and the auth/visibility gate. Missing pagination behavior and any return-field detail keeps it from full completeness, but it covers what an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter at 0% schema description coverage; the description clarifies the project need not be passed (it comes from the API key), which is useful negative guidance. But it never explains the single path.resourceId parameter's meaning or format, so the schema's only parameter remains semantically thin.
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 ('列出版本' / list versions) and pins the exact endpoint, making it distinguishable from the write sibling anon_post_materials_resource_id_versions and the download/preview variants. It does not explicitly name those siblings, so it stops short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite ('项目成员且通过可见范围校验' – must be a project member passing visibility scope), which is genuine usage context. However it never states when to prefer this over the version_download or version_preview siblings, leaving the choice implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_materials_resource_id_versions_version_downloadARead-onlyIdempotent
下载指定版本原文件。项目成员且通过可见范围校验。响应带 Content-Disposition:attachment。 GET /api/projects/{id}/materials/{resourceId}/versions/{version}/download 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the response is served as an attachment via Content-Disposition, and access is gated on project membership plus visibility scope. It does not cover error or missing-file behavior, which keeps this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action ('下载指定版本原文件') and then layers access, response, and endpoint details in short clauses. The raw HTTP path is somewhat redundant with the tool name but is compact and harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains what the caller receives (a downloadable attachment) and what authorization is required, plus the implicit project scoping. Only failure modes and any pagination/size limits are unaddressed, which is a minor gap for a download endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and a nested path object, so the description must compensate. It clarifies that resourceId identifies the material and version selects the version, and that no projectId is required, but it adds no format, bounds, or validation detail beyond what the schema implies.
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: download the original file for a specified material version ('下载指定版本原文件'), which is enough to separate it from the preview siblings by the word '原文件'. It does not name those siblings, so an agent must infer the download-vs-preview distinction, but the purpose itself 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?
Gives an access prerequisite ('项目成员且通过可见范围校验') and notes the project is derived from the API key, so no projectId is needed. However, it never states when to prefer this tool over anon_get_materials_resource_id_versions_version_preview or anon_get_materials_resource_id_versions, leaving the choice implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_materials_resource_id_versions_version_previewARead-onlyIdempotent
预览指定版本。项目成员且通过可见范围校验。有缩略预览时返回 image/webp;无预览但文件 mime 命中内联白名单(位图、PDF、Markdown、常见音视频)时返回原始文件流;否则 404。 GET /api/projects/{id}/materials/{resourceId}/versions/{version}/preview 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this read-only, idempotent, non-destructive. The description adds real behavioral detail beyond that: the different response media types, the inline mime whitelist, and the 404 fallback. It omits actual size limits and whether thumbnails are generated on demand.
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?
Front-loads the purpose, then the three response branches, then the path and implicit project note. Dense but every sentence carries distinct information; the raw endpoint line is slightly redundant.
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 single-param read tool with no output schema, it covers what an agent needs: the permission gate, the implicit project, and the three possible responses. Missing only numeric limits for inline previews and thumbnail availability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but schema descriptions carry no param info; the description supplies meaningful semantics anyway: the project is inferred from the API key, which is genuinely non-obvious. It does not explain resourceId or version formats, so it only partly compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: previews a version of a material resource, with the content-type outcome spelled out. It does not name siblings like anon_get_materials_resource_id_versions_version_download, but the endpoint line disambiguates the operation.
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?
Explains the resolution logic (thumbnail vs inline whitelist vs 404) and states the permission gate, so the agent knows when a 404 is expected. It never points to the sibling download endpoint as the alternative for non-previewable files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_materials_typesARead-onlyIdempotent
列出资源类型。项目成员可用,仅返回可见范围内的类型。 GET /api/projects/{id}/materials/types 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, but the description adds real behavioral context beyond them: results are filtered to the caller's visible scope (仅返回可见范围内的类型) and the project is auto-derived from the API key. That visibility-filtering and auth detail is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, front-loaded with the purpose followed by the endpoint and the projectId clarification. Every line carries information; minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with no output schema, the description covers purpose, access scope, visibility filtering, and project resolution. Return shape is unspecified, but nothing critical to invoking 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?
The tool takes zero parameters, so the baseline is 4. The description usefully confirms no projectId is required because it is inferred from the API key, which preempts a likely agent assumption.
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 (列出资源类型 = list material types) and names the exact endpoint, so an agent can tell it apart from anon_get_materials (which lists resources) and anon_post_materials_types. It does not explicitly name a sibling, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an access condition (项目成员可用 - available to project members) but offers no when-to-use vs alternatives guidance and never mentions the related type-management tools. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_milestonesARead-onlyIdempotent
列出里程碑。需项目成员身份。按 date 升序。 GET /api/projects/{id}/milestones 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely non-obvious behaviour on top: the project-membership auth requirement, the automatic API-key-based scoping (no projectId), and the date-ascending sort order.
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?
Very compact and front-loaded: the operation is named first, then constraints. The endpoint line is mildly redundant with the name but still useful for resource identification. Little waste overall.
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 list tool with no output schema, the description covers access, scope, and ordering, which is most of what an agent needs. It does not describe the shape of a returned milestone, and the purpose of the from/to filters is left entirely to the 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?
Reported schema description coverage is 0%, though the nested from/to properties do carry inline descriptions in the schema. The description itself adds nothing about the from/to date filtering, only clarifying that projectId is intentionally absent, so it only partially compensates.
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+resource (列出里程碑 / list milestones) and the underlying endpoint, so an agent immediately knows this is a read-list operation. It is distinguishable from siblings like anon_post_milestones and anon_patch_milestones_milestone_id, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a useful prerequisite (需项目成员身份) and clarifies that the project scope is derived from the API key rather than a parameter, which heads off a likely agent error. However, it gives no explicit guidance on when to prefer this over sibling milestone tools or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_onsiteARead-onlyIdempotent
现场模式聚合。现场模式聚合接口(项目成员)。myModules 为指派给本人的模块(含本人确认/签到/完成状态与 state 流转);emergency 为可见的紧急/重要公告(≤5 条);contacts 为填写了联系方式的成员;incidents 按权限可见(work:manage 见全部,普通成员仅自己上报的);rundowns 为舞台执行聚合(≤5 条,执行中的 Rundown 恒在列,未开始的仅取开始时间 ±24h 窗口内);myPermissions 为本人权限点数组(前端据此显隐现场页权限入口)。 GET /api/projects/{id}/onsite 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/safe, and the description adds substantial behavioral context: incident visibility is permission-gated (work:manage vs. normal members), infections, rundown windows (±24h, ≤5), emergency items capped at ≤5, and myPermissions driving frontend visibility. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the purpose and systematically describes each aggregate section, but it is long and dense, mixing many sub-fields in one paragraph. It earns its place given the tool's complexity, though it could be more scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a zero-param interface, the description must carry the full burden of explaining the aggregate shape, which it does by enumerating myModules, emergency, contacts, incidents, rundowns, and myPermissions. Minor gaps remain around response format and ordering, but it is largely complete for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters and schema coverage is 100%, so baseline is 4. The description explicitly notes the project is determined by the API key and no projectId is needed, which is useful added context despite the zero-param schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is an aggregate endpoint for '现场模式' (onsite mode) scoped to project members, with a GET path. It distinguishes itself from siblings like anon_get_onsite_incidents by aggregating multiple sub-resources, though the exact meaning of '现场模式' is assumed rather than defined.
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 (aggregating onsite data) but gives no explicit when-to-use versus alternatives such as anon_get_onsite_incidents or anon_get_dashboard. The permission-based filtering of incidents and rundowns hints at behavioral expectations, but no guidance distinguishes this tool from other aggregate endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_onsite_incidentsARead-onlyIdempotent
列出现场异常。work:manage/project:manage 见全部,普通成员仅见自己上报的;按时间倒序,最多 50 条。 GET /api/projects/{id}/onsite/incidents 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive). The description adds genuinely useful behavior beyond them: permission-scoped visibility, reverse-chronological ordering, and a hard 50-item cap — critical for interpreting results. It stops short of pagination details, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then permission scope, ordering, limit, endpoint, and the no-projectId note. Every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, annotation-backed read tool with no output schema, the description covers purpose, permissions, ordering, limit, and auth source. A note on response shape or pagination would make it fully complete, but nothing essential is missing to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description adds important context beyond the empty schema by explaining that the project is inferred from the current API key (no projectId needed) and by documenting the endpoint path.
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+resource (列出现场异常 = list onsite incidents) and clearly distinguishes the sibling family: there is anon_get_onsite (onsite overview) versus this incidents list, plus anon_post_onsite_incidents for creation. The purpose is unmistakable.
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?
Discloses permission-based visibility (work:manage/project:manage see all, ordinary members see only their own reports) and the ordering/limit, which tells the agent when the result may be incomplete relative to a manager's view. It doesn't explicitly name alternative tools, but the visibility caveat is real usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_open_meARead-onlyIdempotent
查看当前 API 密钥身份。需 API 密钥调用;permissions 为密钥 scopes 与持有者实时角色权限的交集。 GET /api/open/me
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the API-key auth requirement and the non-obvious semantics of the returned 'permissions' field (intersection of key scopes and the holder's real-time role permissions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the purpose, followed by the auth precondition and the permissions semantics. No filler, and the endpoint string is compact context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return. It explains the permissions field but does not indicate what else the identity payload contains (e.g., key name, owner, role), leaving the response shape only partially characterized for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is nothing further the description could add on parameter 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 gives a specific verb and resource in Chinese: '查看当前 API 密钥身份' (view the current API key identity), which is a self-distinguishing purpose among mostly resource-scoped get_* siblings. It does not explicitly contrast itself with any alternative tool, 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?
It states the precondition '需 API 密钥调用' (requires an API key to call), which is real usage context. However, it gives no when-to-use/when-not guidance or routing relative to sibling endpoints like anon_get_accounts or anon_get_project, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_physical_categoriesARead-onlyIdempotent
列出实物分类。项目成员可用。按 order 升序返回;首次访问若项目无任何分类,自动填充默认 6 类(印刷品/设备器材/装饰布置/耗材文具/证件票券/其他)。 GET /api/projects/{id}/physical/categories 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds genuinely non-obvious behavior: ascending 'order' sort, and that the first call lazily seeds six default categories when none exist. This seeding is the most important thing an agent should know and is not derivable from annotations or schema. It stops short of covering error/auth-failure behavior or return characteristics, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by the two behavioral facts that matter (ordering, seeding); the parenthetical list of default categories is informative and compact. The raw endpoint line 'GET /api/projects/{id}/physical/categories' is largely redundant for MCP invocation and is the only wasted element.
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?
No output schema exists, and the description covers ordering and lazy-seeding well, but it never describes the shape of the returned categories (id/name/order) that a caller would likely need to feed into anon_delete_physical_categories_cat_id or the patch/reorder tools. For a 0-param read tool this is a minor but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4, and the description earns it by explaining why: the project is auto-resolved from the current API key, so no projectId is needed. That clarifies the implicit invocation context that the empty schema cannot express. It does not describe how the implicit project scope could be overridden, so it stays at 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb+resource: '列出实物分类' (list physical categories). The resource noun is precise enough to distinguish it from siblings such as anon_get_physical_items (items, not categories), anon_post_physical_categories (create), and anon_patch_physical_categories_reorder/patch/delete — an agent can route correctly without opening any schema.
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?
'项目成员可用' tells the agent the access condition (project members), which is useful context. However, there is no explicit when-to-use vs. when-not-to-use guidance and no named alternative (e.g., 'use get_physical_items for individual items'); usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_physical_itemsARead-onlyIdempotent
列出物资条目。项目成员可用。支持按分类/状态/负责人/标签筛选与排序。 GET /api/projects/{id}/physical/items 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds real value with the auth/scoping note that the project is derived from the API key and no projectId is needed. It says nothing about pagination or result limits, which is a gap for a list endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, front-loaded with purpose, then access, then the filter list. The raw endpoint path is slightly redundant but not wasteful enough to harm the structure.
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 read-only list tool with full annotation coverage and no output schema, the description covers purpose, access, filters and the API-key scoping rule, which is the main thing an agent could get wrong (passing projectId). Only pagination/result-shape guidance is absent, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Reported schema description coverage is 0% at the top level, so the description must carry weight; it does enumerate the filter/sort dimensions (category, status, responsible, tag) matching the nested query fields. However it adds no syntax, multi-value, or default details beyond the field names the schema already lists.
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 ('列出物资条目' – list physical items) and names the filterable dimensions, which distinguishes it from siblings like anon_get_physical_summary and anon_get_physical_items_item_id. It does not explicitly name those siblings, so the differentiation is implicit rather than stated.
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?
'项目成员可用' gives an access precondition and the supported filters imply the read/query use case, but there is no explicit when-to-use versus alternatives (e.g. summary vs. single item vs. categories). Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_physical_items_item_idARead-onlyIdempotent
获取物资条目。项目成员可用。跨项目访问返回 404。 GET /api/projects/{id}/physical/items/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, but the description adds genuine behavioral context beyond them: the auth requirement (project members only), the failure mode (404 on cross-project access), and the fact that the project is resolved from the API key and must not be passed. These are non-obvious operational facts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short front-loaded lines: purpose, access/error semantics, then the endpoint and project-resolution note. Little waste, though the raw endpoint line partially duplicates information an agent can infer from the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say something about what the returned item contains; it is silent on return shape. It does cover access, error behavior, and parameter context, so it is adequate but not complete for a get-by-id tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single nested itemId parameter is undocumented in the schema, so the description carries the burden. It usefully clarifies what is NOT a parameter (projectId is derived from the API key) but never explains the itemId itself or its format. Partial compensation only.
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 (获取物资条目) and pins it to the concrete endpoint GET /api/projects/{id}/physical/items/{itemId}, which implicitly distinguishes single-item retrieval from the list sibling anon_get_physical_items. It does not name a sibling explicitly, 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?
Provides useful context — available to project members, cross-project access returns 404 — which tells the agent when the call will succeed. However, it never states when to prefer this over anon_get_physical_items or the logs sibling; routing is left to inference from the path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_physical_items_item_id_logsARead-onlyIdempotent
列出物资变动日志。项目成员可用。按时间倒序,最多 100 条。 GET /api/projects/{id}/physical/items/{itemId}/logs 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered; the description adds genuinely new behavioral context: reverse-chronological ordering, a hard cap of 100 entries, and the implicit-auth model. It stops short of 5 because it does not explain what happens beyond the 100-entry limit or the response shape.
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?
Front-loads the purpose, then stacks permission, ordering, limit, endpoint, and the auth clarification in terse sentences with zero padding. Ideal for a list endpoint.
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 read-only list tool whose annotations already cover the safety profile and which has no output schema, the description supplies ordering, result cap, and auth context. Remaining gaps (pagination beyond 100, return shape) are minor but real.
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% for the single itemId parameter, so the description must carry the burden. It helpfully clarifies that no projectId is required (auto-derived from the API key), but never explains what itemId refers to or its format, leaving the one real parameter only implicitly defined.
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 (列出/List) and resource (物资变动日志/physical item change logs) scoped to a single item, which an agent can distinguish from the sibling anon_post_physical_items_item_id_log (which writes logs). It does not explicitly name the sibling to avoid, 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?
Adds a prerequisite ("项目成员可用" – available to project members) and clarifies that the project is derived from the API key rather than passed in. However it gives no explicit when-to-use guidance or comparison against alternatives such as anon_get_physical_items or the log-creation sibling, leaving usage implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_physical_summaryARead-onlyIdempotent
实物清单汇总。项目成员可用。返回总计与按分类聚合的计划/在库/使用/损耗/条目数。 GET /api/projects/{id}/physical/summary 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely useful context beyond them: the return shape (totals + per-category aggregation) and the auth fact that the project is derived from the API key, so no projectId is needed.
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?
Front-loaded with the purpose and return content, followed by a compact permission note and endpoint/auth line. The GET path is somewhat redundant technical noise but the text is otherwise tight and waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only summary with no output schema, the description explains the return contents (totals plus aggregated category metrics) and the auth model, which is enough for an agent to call it correctly. Slightly more detail on the aggregation granularity would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description also preempts a likely confusion by explaining that projectId is not required because the project is inferred from the API key, adding meaning over the (empty) schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('实物清单汇总' / physical inventory summary) and states the exact aggregate output (totals plus per-category planned/in-stock/in-use/loss/item counts), which cleanly distinguishes it from sibling list tools like anon_get_physical_items and anon_get_physical_categories.
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 states the prerequisite that project members may use it ('项目成员可用'), which implies usage context, but it never explicitly says when to choose this summary over anon_get_physical_items or anon_get_physical_categories, nor any exclusions. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_projectARead-onlyIdempotent
获取项目详情。项目成员或超管可访问。超管的 myRole 固定为「超级管理员」。 GET /api/projects/{id} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and openWorld, so safety is covered. The description adds real value beyond that: authorization rules, the super-admin myRole value (「超级管理员」), and the fact that the target project is implicitly resolved. It stops short of describing the returned payload beyond that one field.
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?
Short and front-loaded: purpose first, then access rules, then the implicit-parameter note. The embedded 'GET /api/projects/{id}' restates the route and is mildly redundant, but it is brief and does no real harm.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param, read-only detail endpoint with annotations covering the safety profile and no output schema, the description supplies the essentials: what it returns in general, who can call it, and how the target is determined. Only the shape of the returned project object is left unspecified.
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 zero parameters, the baseline is 4. The description actually earns it by explaining the missing projectId is deliberate — the project comes from the current API key — which resolves why the schema is empty rather than leaving it 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?
States a specific verb+resource (获取项目详情) and is the only project-detail getter among a large sibling set dominated by stage/todo/material/finance operations. It also preempts the biggest ambiguity by noting the project is derived from the API key, so an agent knows this needs no identifier.
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?
Gives a concrete access precondition (project members or super admins), which is genuinely useful guidance. However, it never states when to prefer this over related reads like anon_get_open_me or the mutation sibling anon_patch_project, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_risksARead-onlyIdempotent
列出风险预警。需项目成员身份。仅返回 active 与 ignored 状态;排序为级别 critical→warning→info,同级按最近检测时间倒序。 GET /api/projects/{id}/risks 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds real context beyond that: a membership/auth requirement, the status filter (only active and ignored surfaces), and the ordering rules (critical→warning→info, then most-recent detection).
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?
Purpose is front-loaded and the following sentences are compact and informative. The raw endpoint line (GET /api/projects/{id}/risks) is somewhat redundant given the surrounding prose, but it is a minor addition rather than 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?
With no parameters, no output schema, and annotations covering the safety profile, the description supplies the remaining essentials: the returned status set, sort order, and auth requirement. It stops short of describing pagination or result shape, but that gap is limited for a zero-arg list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters means the baseline is 4. The description reinforces this by explaining that the project is derived from the API key and no projectId should be passed, which meaningfully clarifies the absence of parameters rather than leaving it ambiguous.
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 specific verb+resource (列出风险预警 / list risk warnings) and adds filter and sort semantics. It is distinguishable from the risk mutation siblings (evaluate/ignore/restore) by operation, but it never names an alternative, so the sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite (需项目成员身份) and states what is returned (only active/ignored), which implies how to use it, but it never says when to choose this over anon_post_risks_evaluate or the ignore/restore tools. Usage is implied, not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_stage_rundownsARead-onlyIdempotent
列出 Rundown。项目成员可查看。按 startAt、createdAt 升序;totalDurationMin 为全部节目时长之和。每项目可建多份 Rundown(如 Day1/Day2、主/副舞台)。 GET /api/projects/{id}/stage-rundowns 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds behavioral context beyond them: ascending sort by startAt/createdAt, the meaning of totalDurationMin, and that the project is auto-resolved from the API key so no projectId is needed.
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?
Front-loaded with the core action, followed by scoping and field notes; every sentence carries information. Slightly dense with endpoint/field detail but no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param listing tool with readOnly annotations and no output schema, the description supplies permission, sort order, and a key field definition, which is largely sufficient. Return-shape detail is thin but acceptable given no 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 zero parameters the baseline is 4. The description usefully explains why there are none, noting the project is automatically determined by the current API key, which preempts an agent hunting for a projectId parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('列出 Rundown' / list Rundowns) and even names the endpoint. It is distinguishable from the sibling anon_get_stage_rundowns_rid in that this returns the collection, though it does not explicitly contrast the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a permission condition ('项目成员可查看') but gives no explicit when-to-use guidance or comparison against the sibling list/get tools. Usage is only implied by the list semantics and the note about multiple rundowns per project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_stage_rundowns_ridARead-onlyIdempotent
获取 Rundown 详情。项目成员可查看。附件已解析为 StageRundownAttachment;缺失的文件 id 跳过。跨项目 rid 按 404 处理。 GET /api/projects/{id}/stage-rundowns/{rid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds real behavior beyond them: attachments are parsed into StageRundownAttachment, missing file ids are skipped, and cross-project rids return 404. It does not describe pagination or payload size, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by tightly packed constraints (permissions, attachment handling, 404 rule, auth scoping). The embedded HTTP route line is slightly redundant but low-cost.
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 read-only single-resource tool with no output schema, the description covers auth scoping, permission requirements, attachment processing, and error semantics well. Only the response shape (fields returned) is left implicit, which is acceptable given no 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 description coverage on the single nested 'rid' param, the description must compensate, and it does: it clarifies that rid is project-scoped, that cross-project rids 404, and that projectId is derived from the API key. It omits the rid's expected format, keeping it below 5.
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+resource (获取 Rundown 详情 = get Rundown details), which cleanly separates it from the list sibling anon_get_stage_rundowns by implying single-item retrieval. It does not explicitly name the sibling, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a precondition ('项目成员可查看' – project members can view) and an edge-case rule (cross-project rid → 404), but never states when to use this vs anon_get_stage_rundowns or the patch/delete variants. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_stagesARead-onlyIdempotent
列出项目阶段。项目成员可访问。stages 按 order 升序;currentStageIndex 为第一个未完成阶段的下标,全部完成为 -1。 GET /api/projects/{id}/stages 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive safety, and the description adds real behavioral context beyond them: member-only access, stages sorted by ascending order, and the meaning of currentStageIndex (-1 when all complete). It also clarifies that the project is resolved from the API key, so no projectId is required.
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 content is dense and front-loaded: purpose, access, return semantics, then endpoint. The explicit 'GET /api/projects/{id}/stages' line is mildly redundant with the tool name but confirms the path; otherwise every sentence carries weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by documenting the key return semantics (ordering and currentStageIndex). Combined with the access note and zero-parameter clarification, an agent has what it needs, though not every returned field is described.
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?
Zero parameters, so the baseline is 4. The description reinforces this by explaining that the project is auto-determined by the API key and no projectId should be passed, which prevents a caller from inventing a parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('列出项目阶段' / list project stages), which is clearly distinguishable from siblings like anon_get_stage_signups or anon_get_stage_rundowns. It does not explicitly contrast itself with those siblings, but the resource 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?
'项目成员可访问' gives an access precondition, which is useful context. However there is no explicit when-to-use guidance or routing to alternatives such as anon_get_project or anon_get_stage_signups, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_stage_signupsARead-onlyIdempotent
列出报名批次。项目成员可查看,按 startAt、createdAt 升序。 GET /api/projects/{id}/stage-signups 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real context beyond that: sort order (startAt, createdAt ascending), member-level access, and that the project is derived from the API key rather than passed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and scope before the endpoint and auth detail. No wasted prose, though the raw endpoint restates what the tool name already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with full annotation coverage and no output schema, the description covers access, ordering, and scoping. It stops short of describing the returned batch structure, which is the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description usefully explains the absence of a projectId by stating the project is auto-resolved from the current API key, removing ambiguity about how scoping works.
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: '列出报名批次' (list signup batches), with a concrete endpoint. This clearly distinguishes it from the singular sibling anon_get_stage_signups_sid, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'项目成员可查看' implies who may call it and hints at list-level usage, but it gives no explicit when-to-use or when-to-prefer-_sid guidance. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_stage_signups_sidARead-onlyIdempotent
获取报名批次详情。项目成员可查看。 GET /api/projects/{id}/stage-signups/{sid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld. The description adds genuinely new context beyond them: the project is auto-derived from the API key, so no projectId is required, and view permission is restricted to project members. It does not describe the returned detail shape, but with annotations covering the safety profile this is solid added value.
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?
Front-loaded purpose in the first phrase, followed by permission, endpoint, and the projectId clarification. Efficient with little waste, though the raw endpoint path is somewhat redundant/noisy relative to the rest.
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 read-only detail fetch whose safety profile is fully covered by annotations, the description covers purpose, permission, and auth routing. There is no output schema, so one could wish for a hint about what "details" contains, but nothing needed to invoke 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?
With 0% schema description coverage on a single required nested path param (sid), the description carries the burden. It clarifies the auth routing (no projectId needed) but never explains what sid identifies or its format; the meaning of sid is only inferable from the tool name. Adequate but not compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("获取报名批次详情" / get signup batch details), with "详情" implying the single-item view and thereby distinguishing it in spirit from the sibling list tool anon_get_stage_signups. The explicit GET route reinforces that this retrieves one batch. It stops short of naming the sibling it is not, so not 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?
"项目成员可查看" gives an access condition (project members may view), which is useful context. However, it gives no explicit when-to-use vs the sibling anon_get_stage_signups (list) or when-not, leaving the agent to infer that this is for a single batch by sid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_todosARead-onlyIdempotent
列出待办。需项目成员身份。支持按分类/指派人/状态过滤与排序。 GET /api/projects/{id}/todos 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful operational context: project-membership authorization and the fact that projectId is inferred from the API key, which prevents the agent from inventing a projectId argument. Pagination and result shape remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines, front-loaded with what the tool does, then prerequisites, capabilities, and the endpoint/auto-project note. No redundant filler; every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers purpose, auth requirement, filter/sort capability, and the auto-determined project scope. Missing pagination/limits and default sorting behavior, but nothing critical to correct invocation is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description summarizes the available filter/sort dimensions (category, assignee, status, sort), reinforcing what the schema's nested properties expose and signaling that these are optional query modifiers. It does not spell out the 'order' direction argument, so it stops short of full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (列出/list) and resource (待办/todos) and even names the backing endpoint, so an agent can distinguish it from write siblings like anon_post_todos or anon_patch_todos_todo_id. The scope (list, with filter/sort) 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?
Gives the prerequisite ('需项目成员身份') and the supported operations (filter/sort), which tells the agent when this tool applies. However, it names no alternative (e.g., anon_get_todos_template_export) nor any exclusion condition, so routing among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_todos_template_exportARead-onlyIdempotent
导出待办模板。需项目成员身份。offset = 原时间字段 − 项目锚点时间(毫秒,可为负)。 GET /api/projects/{id}/todos/template/export 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds the membership/auth requirement, which is real added context, but the offset definition ("offset = 原时间字段 − 项目锚点时间") reads like template/field semantics and is not clearly tied to this zero-parameter GET, adding ambiguity rather than clarity.
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?
It is short and front-loads the purpose, then the auth requirement, then the endpoint. The offset sentence is of questionable relevance for a parameterless export and could be trimmed, but the overall structure is tight.
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, zero-parameter export with no output schema, the description adequately covers purpose, auth requirement, and the fact that the project is inferred from the API key. The main gap is not describing the export's format/contents, but annotations and simplicity keep this acceptable.
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 takes zero parameters (empty schema, no required fields), so per calibration the baseline is 4. The description's offset formula does not correspond to any input parameter, so it neither helps nor meaningfully harms parameter understanding.
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+resource ("导出待办模板" / export todo template) and clarifies that the project is auto-determined by the API key, which distinguishes it from tools that take an id. However, it never names its natural counterpart anon_post_todos_template_import, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite ("需项目成员身份" / requires project membership) and states that no projectId needs to be passed, which is genuinely useful. But there is no explicit when-to-use vs. when-not guidance and no reference to the import sibling that would complete the export/import pairing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_work_modulesARead-onlyIdempotent
列出任务模块。列出项目全部现场任务模块,按创建时间升序。需项目成员身份。 GET /api/projects/{id}/work-modules 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare a safe read (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower, and the description still adds real context: deterministic ascending-by-creation-time ordering, the project-membership auth requirement, and the fact that the project is derived from the API key rather than passed in.
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?
Short and front-loaded with the list action, scope, ordering, and auth prerequisite. The opening 列出任务模块 slightly restates what the next sentence says more fully, but the endpoint path line is genuinely informative and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read with no output schema, the description covers what is returned (all on-site task modules), the ordering, the auth requirement, and the implicit-project resolution. Nothing an agent needs to invoke 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?
With zero parameters the baseline is 4, and the description adds meaningful value by explaining that no projectId is needed because the project is auto-resolved from the API key – directly addressing the absence of any parameter in the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (列出) and resource (现场任务模块) with the ordering scope (按创建时间升序) and endpoint path. It is clear on its own, but it never distinguishes itself from closely named siblings like anon_get_work_sheet, anon_post_work_modules, or anon_patch_work_modules_mid, so sibling differentiation is left to inference.
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 permission prerequisite (需项目成员身份) is a useful usage condition, but there is no explicit when-to-use guidance, no statement of when not to use it, and no named alternative among the many work-module/get siblings. Usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_work_sheetARead-onlyIdempotent
查看本人任务单。本人的现场任务单(项目成员)。items 按 startAt、createdAt 升序;无分配时为空数组。 GET /api/projects/{id}/work-sheet 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds real behavioral detail beyond them: items are ordered ascending by startAt then createdAt, and an empty array is returned when there are no assignments. It also disambiguates the endpoint path and states the project is resolved from the API key rather than a parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then ordering/empty-array semantics, then the endpoint and auth note. Information-dense and short, with only mild overlap between the first two sentences ('view own work sheet' repeated as 'own onsite work sheet').
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?
There is no output schema, so the description compensates by describing the returned items (sort order, empty-array case), and it clarifies the auth model. For a zero-parameter read tool this is nearly complete; it could still name the user_id sibling to fully close the selection gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so parameter semantics carry no burden and the baseline is 4. The description usefully reinforces this by explaining that projectId must not be passed because the project is derived from the current API key.
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 ('查看本人任务单' / view one's own work sheet) and scopes it to the '本人' (self) case, which implicitly separates it from the sibling anon_get_work_sheet_user_id. It never explicitly names that sibling, so the differentiation is inferable rather than stated.
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 establishes context (viewing one's own onsite work sheet as a project member, project inferred from the API key) but gives no explicit when-to-use rule or contrast with the user_id variant that appears in the sibling list. The agent must infer which of the two work-sheet tools to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_get_work_sheet_user_idARead-onlyIdempotent
查看指定成员任务单。需 work:manage 权限(project:manage 等价放行,超管不受限)。 GET /api/projects/{id}/work-sheet/{userId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely useful context beyond that: the required authorization scope and the fact that the project is resolved automatically from the API key rather than supplied. This is exactly the kind of auth/scoping detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, followed by the permission constraint and the routing note. No filler, though the raw endpoint template could be considered redundant given the parameter structure is already in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but this is a simple read-only lookup and the description covers purpose, authorization, and the implicit project scoping. It omits any hint about the returned sheet's contents, which is a minor gap for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter is a nested path.userId, so the description must carry the load. It clarifies that userId identifies the target member ('指定成员') and that no projectId is needed because the project is derived from the API key, which resolves the ambiguity, but it gives no format or validation guidance for userId itself.
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 gives a specific verb+resource in Chinese ('查看指定成员任务单' – view a specified member's task sheet), scoped to a single member via userId. It also states the exact endpoint path, which pins down the operation unambiguously. It does not explicitly name the sibling anon_get_work_sheet as the alternative, 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?
It states the prerequisite permission ('需 work:manage 权限', with project:manage passing and super admin unrestricted), which tells the agent when the call will succeed. However, it never contrasts this member-scoped call with the sibling anon_get_work_sheet, so the choice between the two must be inferred from the tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_accounts_account_idADestructive
更新平台账号。需 accounts:manage 权限且当前用户在该账号可见范围内。可更新 platform/account/mode/note/visibility;改密码传 password(server)或 passwordCipher(user,仅 full 模式);mode 改为非 full 时清除密码。 PATCH /api/projects/{id}/accounts/{accountId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnly=false), the description discloses real side effects the agent could not infer: switching mode to non-full clears the password, and password handling differs by cipherKeySource and mode. It also surfaces the auth requirement (accounts:manage plus visibility scope), which is exactly the behavioral context annotations cannot carry.
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?
Front-loads purpose, then permission, then field/password rules, then the endpoint. Every clause earns its place, including the note that projectId is auto-derived from the API key, which prevents a spurious parameter.
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 nested-body mutation with no output schema and destructive semantics, the description covers auth, the destructive side effect, and parameter modes. Remaining gaps (response shape, visibility array semantics) are minor and partly covered by the 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?
Top-level schema description coverage is 0% (body/path are bare), so the description must compensate, and it largely does: it enumerates updatable body fields and explains the password/passwordCipher split and the mode-dependent clearing rule. It leaves cipherKeySource and the visibility empty-array semantics unstated (the latter only lives in the schema), so not a full 5.
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 (更新/PATCH) and resource (平台账号), and enumerates the updatable fields (platform/account/mode/note/visibility), so the agent knows exactly what the tool mutates. It does not explicitly differentiate itself from adjacent siblings like anon_post_accounts or anon_patch_members_user_id, but the resource 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?
Gives concrete preconditions: requires accounts:manage and the caller must fall within the account's visibility scope. It also gives conditional guidance for the password path (server vs user, full mode only). No explicit when-not-to-use or named alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_announcements_announcement_idADestructive
更新公告。需 announcement:manage 权限。字段均可选;expiresAt 传 null 清除过期时间。 PATCH /api/projects/{id}/announcements/{announcementId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false. The description goes beyond them by disclosing the required permission (announcement:manage) and the important side effect that passing null for expiresAt clears the expiration time, which is exactly the kind of mutation detail annotations cannot convey.
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 compact sentences plus the endpoint line, with the key facts (permission, optionality, null-clearing) front-loaded. The PATCH path restates information already implied by the tool name, but the surrounding note about automatic project resolution earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-field optional-body mutation with no output schema and no annotation-level permission info, the description covers the highest-risk details: auth requirement, partial-update semantics, null-clearing behavior, and implicit project scoping. Missing per-field guidance is largely self-evident from the schema's enums and names.
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 effectively 0% for the body's seven fields (only the nested visibility object carries its own schema description). The description partially compensates by explaining that all fields are optional and that expiresAt accepts null to clear, and by explaining why projectId is absent (derived from the API key), but it leaves type, isPinned, and requireConfirmation undocumented.
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+resource ('更新公告' / update announcement) and pins it to the PATCH endpoint for a single announcement id, so it is unmistakably distinct from post_announcements, delete_announcements, and get_announcements. It does not explicitly name those siblings, but the partial-update framing makes its scope clear without opening the schema.
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?
Adds real context: it requires the announcement:manage permission and notes that all body fields are optional, implying a partial update. However, it never states when to choose this over post_announcements (create) or delete_announcements (remove), leaving the when-to-use decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_custom_tools_tool_idADestructive
更新自定义工具。需 tools:manage 权限。部分更新,校验同创建。 PATCH /api/projects/{id}/custom-tools/{toolId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds genuinely new behavioral context beyond those: the required authorization scope, that the update is partial/merging, and that validation rules mirror creation. It does not discuss reversibility of overwritten fields or any rate limits, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and permission requirement before the endpoint detail. Nothing is padded, though restating the PATCH URL template alongside the tool name is mildly redundant.
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 single-resource PATCH with full annotation coverage and no output schema, the description covers the essentials: permission scope, partial-update semantics, and the projectId scoping rule. The remaining gap is body-field documentation, which is a meaningful but not fatal omission for this tool class.
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 nested body contains six undocumented properties (url, mode, name, scopes, passToken, description). The description only clarifies one path-level point — that projectId is unnecessary — and gestures at 'validation same as creation' without explaining any body field semantics, leaving the agent to guess what the payload accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — '更新自定义工具' (update custom tool) — and is clearly distinct from sibling create/read/delete custom-tool tools (anon_post_custom_tools, anon_get_custom_tools, anon_delete_custom_tools_tool_id). The PATCH path is included, confirming the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real usage conditions: a required 'tools:manage' scope, the fact that this is a partial update rather than a replacement, and that projectId must NOT be supplied because the project is derived from the API key. It does not explicitly contrast itself with the sibling POST create tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_dashboard_preferencesBDestructive
更新工作台偏好。需项目成员身份。字段均可选;卡片数组各截断至 20 条;幂等 upsert。 PATCH /api/projects/{id}/dashboard/preferences 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts '幂等 upsert' (idempotent upsert) while the annotations declare idempotentHint: false, a direct contradiction of the structured safety metadata. It also frames the operation as a benign preference upsert without acknowledging destructiveHint: true, which the agent needs to treat the write as overwriting. This is an Annotation Contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded: purpose, permission requirement, field semantics, and endpoint follow in order with little waste. The embedded URL line is slightly redundant with the tool name but earns its place by pinning the resource path.
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 mutation tool with no output schema and a 0%-coverage parameter schema, it does cover identity requirements, truncation limits, and auto-scoped projectId. However, it omits whether unlisted preferences are preserved on a partial PATCH and contradicts the idempotency/destructiveness metadata, leaving real gaps for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it only partially compensates: it discloses that all fields are optional, that card arrays are each truncated to 20 entries, and that projectId is derived from the API key. The five nested body fields (cardOrder, defaultView, hiddenCards, scheduleRange, collapsedCards) are never explained, so half the semantics still come from the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource, '更新工作台偏好' (update dashboard preferences), and pairs it with the exact HTTP endpoint, so it is clearly distinguishable from the read-side sibling get_dashboard_preferences. It stops short of naming alternatives or contrasting scope explicitly, so it lands at 4 rather than 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?
'需项目成员身份' gives a concrete precondition for invocation, and '字段均可选' tells the agent the call can be partial. There is no explicit when-not guidance or named alternative (e.g. vs get_dashboard_preferences), so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_finance_ticketADestructive
设置门票。需 finance:manage 权限。支持两种请求体——多票种(ticketTypes 数组,0~20 个,保存时清零旧单票字段)与旧单票格式(ticketPrice + ticketCount,兼容保留);响应形态随请求体而定。 PATCH /api/projects/{id}/finance/ticket 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds context the annotations cannot: the required finance:manage permission, the fact that saving ticketTypes clears the old single-ticket fields (a concrete disclosure of what gets destroyed), and that the response shape varies with the request body. It stops short of describing permissions/rate-limit edge cases or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and permission, then the two body modes with their side effect, then the endpoint and the note that projectId is auto-derived. Every sentence carries distinct information; the endpoint line is the only mild redundancy but aids precision.
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 destructive nested-body mutation with no output schema, it covers auth, side effects, body modes, and project auto-scoping, which is most of what an agent needs. It notes the response shape is request-dependent but never sketches either shape, leaving some ambiguity before 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?
Top-level schema coverage is 0% (the body object itself is undocumented), so the description carries real weight: it names both body shapes, maps ticketTypes to the multi-type array (0~20) and ticketPrice+ticketCount to the legacy shape, and flags the field-clearing interaction. It does not enumerate individual nested field constraints (price precision, name maxLength), so it doesn't fully close the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (设置门票 = set/configure the finance ticket) and gives the concrete endpoint PATCH /api/projects/{id}/finance/ticket. The agent can tell it is a ticket-configuration write, distinct from anon_get_finance/anon_post_finance, though it never explicitly differentiates itself from the sibling anon_patch_finance_tx_id.
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 clarifies which request-body mode to use (ticketTypes preferred; legacy ticketPrice+ticketCount kept only for compatibility), which is genuinely useful selection guidance. However, it offers no when-to-use framing relative to the many finance siblings (get_finance, post_finance, patch_finance_tx_id), so usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_finance_tx_idADestructive
编辑账目。需 finance:manage 或 finance:add 权限。财务管理者可改任意账目;finance:add 记账者仅能改自己添加的账目,改他人账目返回 403。不修改附件。 PATCH /api/projects/{id}/finance/{txId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: permission scopes, the 403 outcome for unauthorized edits, the fact that attachments are not touched, and that the project is derived from the API key. These details meaningfully inform a destructive mutation.
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?
Front-loads the action and resource, then permissions, then the endpoint, so the most important information comes first. It is slightly dense with multiple clauses but every sentence contributes relevant constraints.
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 mutation tool with no output schema, the description covers auth, failure mode, side-effect scope (attachments untouched) and path resolution. The remaining gap is the semantics of the request body fields, which are undocumented in both the schema and the description.
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% (only amount is documented in the schema), so the description carries the burden. It usefully clarifies that no projectId needs to be passed, but it says nothing about the body fields (note, type, amount units, splitAmong, payerUserId) or txId, leaving the compensations 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?
States a specific verb and resource (编辑账目 / edit finance entry) and anchors it to the PATCH /finance/{txId} endpoint, which clearly separates it from sibling mutators like anon_post_finance (create), anon_delete_finance_tx_id (delete) and anon_patch_finance_ticket (tickets). An agent can identify the target resource without opening the schema.
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?
Gives concrete authorization context: requires finance:manage or finance:add, and spells out that finance:add users may only edit their own entries while editing others returns 403. That is strong when-to-use guidance, though it does not explicitly point to a sibling alternative for cases the caller cannot edit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_lostfound_item_idADestructive
更新失物。需 lostfound:manage 权限。multipart 表单,字段同登记(均可选);另支持 removePhoto=1 移除照片(级联删除存储对象与 File 文档)。换新照片时先持久化新照片再删旧照片。 PATCH /api/projects/{id}/lostfound/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: the required permission scope, the multipart encoding, the cascade delete of the storage object and File document when removePhoto=1, and the ordering guarantee when swapping photos. These are meaningful behavioral details, though the return/response behavior is not described.
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?
Front-loads the core action, then adds permission, encoding, and photo-handling details in compact sentences. Slightly dense but no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive PATCH with annotations already covering the safety profile, the description covers permission, request format, and the trickiest photo-removal/replacement behavior. The main omission is what the call returns, which is not critical given no 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?
Top-level schema description coverage is 0%, and the description only generically says fields mirror registration (all optional). It clarifies removePhoto semantics and that projectId is inferred from the API key, but leaves name/note/foundAt/foundLocation semantics to inference.
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+resource (更新失物 = update lost item) and reinforces with the PATCH route. Clear about what it does, but does not explicitly distinguish itself from the sibling anon_patch_lostfound_item_id_status tool, which also updates a lostfound item.
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?
Gives useful preconditions and usage hints: requires lostfound:manage permission, multipart form, all fields optional, and removePhoto=1 to strip the photo. However, it never states when to use this versus alternatives (e.g. the status PATCH or delete tool), leaving the routing decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_lostfound_item_id_statusADestructive
流转失物认领状态。需 lostfound:manage 权限。claimed 记录 claimedAt 并保存 claimNote(未提供则保留原值);pending 清空 claimedAt 与 claimNote;其余状态值 400「无效的状态」。 PATCH /api/projects/{id}/lostfound/{itemId}/status 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real value: it names the mutated fields (claimedAt, claimNote), the retain-on-omit rule for claimNote, the clearing behavior for pending, and the 400 'invalid status' failure mode. The only gap is that it doesn't describe the success response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and permission requirement are front-loaded, followed by per-value semantics, endpoint, and the projectId note. It is dense but every clause carries information; the 'no need to pass projectId' clause is slightly defensive but justified given the path template.
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 mutation endpoint with no output schema and 0% schema description coverage, the description covers what an agent needs: permission, side effects, validation failure, and hidden project scoping. Return-value details are the only missing piece, and they are minor for a status-transition call.
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 the load, and it largely does: it defines the two meaningful status values and clarifies that claimNote is retained when omitted. It also states that projectId is auto-resolved from the API key, sparing a likely mistaken parameter. The itemId path parameter is left self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — transitioning the claim status of a lost-and-found item — and pairs it with the exact endpoint (PATCH /api/projects/{id}/lostfound/{itemId}/status). This distinguishes it from the sibling anon_patch_lostfound_item_id, which is the general item update, without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: the lostfound:manage permission is required, and it enumerates how each status value behaves (claimed records claimedAt, pending clears it, others are rejected). It does not explicitly say when to prefer this over the general anon_patch_lostfound_item_id, so an alternative is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_materials_resource_idBDestructive
编辑资源。需 materials:manage 权限。 PATCH /api/projects/{id}/materials/{resourceId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=true and readOnlyHint=false, so the risk profile is largely covered. The description adds useful context: the required permission scope and that the project context is implicit. It does not disclose what is destroyed/changed, whether it is a partial merge, or reversibility.
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?
Very compact and front-loaded: action, permission, then route, then the projectId caveat. Each line carries distinct information with minimal waste, though the endpoint line partly duplicates what the tool name already encodes.
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 partial-update mutation with a nested body and no output schema, the description covers permission and routing context but not what fields are editable or what the response returns. Annotations absorb the safety half, so it is adequate but leaves noticeable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0% and the description explains none of the two parameters' semantics. It only clarifies an absent projectId (which is not a schema parameter), leaving the nested body fields (name, typeId, visibility, description) and path.resourceId unexplained by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (编辑资源 = edit resource) and pins it to the exact HTTP route PATCH /api/projects/{id}/materials/{resourceId}, which distinguishes it from the get/delete/post siblings on the same resource. It stops short of naming which sibling to use instead for read vs. create, so it is clear but not sibling-routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a real prerequisite (materials:manage permission) and clarifies that projectId is not needed because the project is derived from the API key. However, it offers no when-to-use vs. alternatives guidance or exclusions relative to the many other patch_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_materials_types_type_idADestructive
编辑资源类型。需 materials:manage 权限。 PATCH /api/projects/{id}/materials/types/{typeId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that this is a destructive, non-idempotent, open-world mutation, so the safety profile is covered. The description adds useful context about required permissions and automatic project scoping, but it does not explain what exactly gets changed or the consequences of the edit.
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, front-loaded lines with no filler. It conveys the action, permission requirement, endpoint, and project-scoping rule efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with nested request objects and no output schema, the description leaves key gaps: it does not explain the body fields, partial-update semantics, or expected response. Annotations cover the safety profile, but the description is not complete enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the top-level parameters, and the description does not explain the path parameter (typeId) or the body fields (name, visibility). It only clarifies that projectId should not be passed, which is a minor offset against an otherwise complete lack of parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '编辑资源类型' (edit resource type). The endpoint template and the required permission make the action unambiguous, and it can be distinguished from sibling operations such as delete/get/post for materials types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite ('需 materials:manage 权限') and clarifies that the project is implicit via the API key, which helps an agent call it correctly. However, it does not state when to choose this tool over alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_members_user_idADestructive
修改成员角色。需 member:manage 权限。 PATCH /api/projects/{id}/members/{userId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds value beyond them by disclosing the required permission scope (member:manage) and the auth behavior that the project is derived from the API key, which is meaningful operational context for a mutation endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded lines: action first, then the permission gate, then the endpoint and the negative constraint about projectId. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with an output schema absent (nothing to describe on returns), the description covers the action, the permission requirement, and the path shape. It is nearly complete, falling short only on the domain of valid role values and error/failure behavior.
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 semantics, and the nested schema exposes only 'userId' and 'roleName' with no descriptions. The description usefully clarifies that projectId must NOT be passed (preventing an error), but leaves the meaning/valid values of userId and roleName to inference, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('修改成员角色' / modify member role) plus the exact endpoint, so an agent knows precisely what is being changed. It does not explicitly contrast itself with siblings like anon_delete_members_user_id or anon_patch_roles_role_name, so it stops short of 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?
Provides a real prerequisite ('需 member:manage 权限'), which tells the agent when the call will be permitted, and clarifies the project is implicit. However, it gives no guidance on when to prefer this over the delete-member or role-patch siblings, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_milestones_milestone_idADestructive
更新里程碑。需 project:manage 权限。字段同创建(均可选),另可加 completedAt(传 null 取消完成)。 PATCH /api/projects/{id}/milestones/{milestoneId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=false, so safety is covered. The description adds non-annotation context: the required project:manage scope and the null-to-cancel semantics for completedAt, which an agent needs to call this correctly.
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?
Compact and front-loaded: purpose, permission, field semantics, then endpoint and path note. The included URL line adds useful orientation with little waste, though '字段同创建' leans on an external reference.
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 mutating, non-output-schema tool whose annotations cover safety, the description supplies the key missing pieces: auth scope, partial-update assumption, and the completedAt cancellation rule. It omits return behavior and whether omitted fields are preserved, but the core call requirements are 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%, and the description compensates partially: it notes all body fields are optional, explains completedAt=null semantics, and clarifies that projectId must not be sent (derived from the API key). It does not explain the meaning or format of date, title, stageId, or description, so the nested body remains partly opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('更新里程碑' / update milestone), clearly distinguishing it from the sibling delete/get/complete variants. It does not explicitly name an alternative sibling, but the operation itself 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?
It gives useful context: requires project:manage permission, and passing completedAt=null cancels completion (routing away from the dedicated complete endpoint). However, it never states when to prefer this PATCH over anon_post_milestones_milestone_id_complete or how it interacts with the create endpoint beyond 'fields same as create'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_physical_categories_cat_idBDestructive
更新实物分类。需 materials:manage 权限。 PATCH /api/projects/{id}/physical/categories/{catId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=true). The description adds value beyond them by disclosing the auth requirement (materials:manage) and the auto-scoping behavior that the project is derived from the API key, which reduces misuse. It stops short of saying what the update affects or is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then permission, then the scoping note. Little waste, though the raw endpoint line is somewhat redundant with the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations but no output schema and 0% param coverage, the description covers permission and scoping but omits what is updatable (the body only exposes name) and any return behavior. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the param burden. It only clarifies that projectId is not needed because the project is inferred from the API key; it never explains catId or the body.name field. That is inadequate compensation for two undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (更新实物分类 / update physical category), which clearly separates it from the delete, reorder, and post siblings on the same path. It does not name or contrast those alternatives, but the verb+resource 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?
Provides the required permission (materials:manage), which is useful precondition guidance. However, it gives no when-to-use vs alternatives direction against siblings like anon_patch_physical_categories_reorder or anon_post_physical_categories, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_physical_categories_reorderADestructive
重排实物分类。需 materials:manage 权限。按给定 id 数组顺序重排分类。 PATCH /api/projects/{id}/physical/categories/reorder 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=true, idempotent=false, openWorld=true, so the safety profile is covered. The description adds genuinely new context beyond annotations: the required materials:manage permission and the fact that the project is auto-resolved from the API key so no projectId is needed.
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?
Front-loads the purpose, then permission, then the ordering rule, then the endpoint. Efficient and mostly waste-free, though the raw PATCH path sentence is somewhat redundant for an agent.
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 single-parameter mutation tool whose annotations already carry the destructive/idempotent profile and with no output schema, the description covers purpose, auth, scoping, and parameter intent well. Only edge-case behavior (partial arrays, invalid ids) is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the burden but only partially compensates: it says the reorder follows the given id array order. It omits the id format, whether the array must be exhaustive of all categories, and handling of unknown ids.
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 (重排/reorder) and resource (实物分类/physical categories), and the mechanism (按给定 id 数组顺序). This clearly distinguishes it from the sibling anon_patch_physical_categories_cat_id, which edits a single category.
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?
Conveys implied usage — batch reordering of categories — and gives the prerequisite permission (materials:manage). However it never states when to use this over the single-category patch sibling, nor any exclusions or preconditions beyond the permission scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_physical_items_item_idADestructive
更新物资条目。需 materials:manage 权限。字段同新建(均可选);responsibleId 传 null 或空字符串清除负责人。 PATCH /api/projects/{id}/physical/items/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, destructive, non-idempotent, open-world behavior, so the bar is lower. The description adds the auth scope (materials:manage) and the responsibleId clearing rule, but does not explain what 'destructive' means here or whether omitted fields are left untouched. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then permission, then field semantics, then the raw endpoint and the auto-injected project — no filler. Dense but every clause contributes; only minor gain from splitting the endpoint line out.
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 mutation tool with a nested body and no output schema, it covers the essentials: permission requirement, optional-field semantics, the null-clearing rule, and the fact that projectId is auto-derived so the agent won't pass it. Missing only a note on update/clear behavior for other fields.
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 effectively 0% per the context signal, so the description should carry more weight. It conveys two important semantics (all body fields optional, responsibleId null/empty clears the owner) and explains the injected projectId, but leaves the remaining body fields (name, note, spec, tags, unit, status, quantities) to the schema names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (更新物资条目) and names the actual endpoint (PATCH .../physical/items/{itemId}), so it is clearly a partial-update tool. It implicitly separates from the create (post) and delete siblings via '字段同新建' and the PATCH verb, but does not call out those siblings by name.
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?
Gives a real precondition (需 materials:manage 权限) and clarifies the update is a partial one with all fields optional, which is useful usage context. However there is no explicit when-to-use vs alternatives guidance (e.g. when to use this versus post_physical_items or the log endpoint).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_projectADestructive
更新项目信息。需 project:manage 权限。全部字段可选;startDate/endDate 传空值清除。 PATCH /api/projects/{id} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/non-idempotent/openWorld, so the bar is lower, and the description still adds real context: the required permission scope, that PATCH is partial (all fields optional), and that passing null to startDate/endDate clears them. This is meaningful behavioral disclosure beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four terse clauses, permission and the partial-update rule front-loaded, zero filler. It could drop the raw endpoint line, but nothing is bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-body mutation with no output schema, the description covers the essentials an agent needs: permission scope, implicit project targeting, and the null-to-clear date semantics. Minor gaps remain around unmentioned fields, but the core call path is 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 effectively 0%, so the description carries the burden, and it compensates only partially: it documents null-clearing for startDate/endDate and that all fields are optional, but says nothing about name, status values, location, timezone, description, or currentStage.
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+resource (更新项目信息 / update project info) and is unambiguous against the many get_/post_ siblings. It does not explicitly distinguish itself from anon_get_project or other patch tools, but the update-vs-read distinction is self-evident from the verb.
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?
Gives useful prerequisites (requires project:manage permission, project determined by API key so no projectId needed) but never states when to use this tool versus alternatives or what conditions favor it. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_qq_binding_group_open_idADestructive
配置单个群的订阅消息类型。需 project:manage 权限。types 去重后整体覆盖该群的订阅类型;每个值须为精选 7 类之一(milestone:approaching / todo:remind / todo:due / announcement:published / risk:new / incident:reported / weekly:report),空数组表示该群不接收任何群消息。 PATCH /api/projects/{id}/qq-binding/{groupOpenId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, and the description reinforces this by stating that types wholly overwrites the group's subscriptions. It also adds valuable context beyond the annotations: the project:manage permission requirement and that the project is inferred from the API key.
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?
Purpose is front-loaded, followed by permission, replace semantics, and the endpoint. Dense and mostly waste-free, though the enum list duplicates the input schema and adds some 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?
There is no output schema, but for a mutation tool the description covers permission, the overwrite semantics, the empty-array edge case, and ID resolution. Return values are not described, which is the main missing element.
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 well for the body.types parameter: deduplication, wholesale-replace semantics, the seven allowed values, and the empty-array behavior. The path.groupOpenId parameter is only implied by name, so there is a small remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 配置单个群的订阅消息类型 (configure the subscription message types of a single group). Combined with the PATCH endpoint and the resource path, an agent can distinguish this from the sibling anon_delete_qq_binding_group_open_id without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: requires project:manage permission, and specifies that types wholly replaces the group's subscription set. It does not explicitly name when to prefer this over alternatives, but the operation is distinct enough that no ambiguity arises.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_roles_role_nameADestructive
更新角色权限。需 role:manage 权限。roleName 需 URL 编码。 PATCH /api/projects/{id}/roles/{roleName} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety bar is lower. The description adds genuinely useful context beyond them: the required role:manage permission, that roleName must be URL-encoded, and that the project is inferred from the API key. It still omits whether the permissions array replaces or merges existing permissions.
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?
Front-loaded with purpose then permission, encoding, and route details; every sentence contributes. The raw HTTP path is mildly redundant with the name but still aids an agent matching the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so return values need no explanation, and the description covers the key operational facts (auth, encoding, project inference). For a nested-body mutation tool it is still incomplete regarding the permissions array values and PATCH replace-vs-merge semantics.
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 the load. It adds real value for roleName (URL-encoding requirement) and explains that projectId is not needed, but it never documents the permissions array format or the allowed permission strings, leaving the most important body parameter 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?
States a specific verb and resource (更新角色权限 / update role permissions) and the raw PATCH route, making it clearly distinguishable from siblings like anon_post_roles (create) and anon_delete_roles_role_name (delete). It does not explicitly name those siblings, 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?
It gives a real precondition (需 role:manage 权限) which tells the agent whether it is authorized to call the tool. However it offers no explicit when-to-use vs alternatives guidance and no exclusions relative to the create/delete role siblings, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stage_rundowns_ridADestructive
更新 Rundown。需 tools:manage 权限。请求字段同创建(均可选);name 提供但 trim 后为空、startAt 提供但不可解析返回 400。执行中(execution.status 为 running)仅 name/note 可改,修改 startAt 返回 409。 PATCH /api/projects/{id}/stage-rundowns/{rid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructive/openWorld/non-idempotent), it discloses the required permission scope, validation failures (400 for empty-after-trim name or unparsable startAt), a conflict condition (409 for startAt during execution), and that projectId is derived from the API key. It stops short of describing partial-update semantics or what an omitted field does to existing values.
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 verb and permission requirement are front-loaded, followed by validation/state rules and the endpoint path. It is a dense single block with no padding, though the path line and the projectId note could be folded together for tighter reading.
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 mutation tool with rich annotations but no output schema, it covers permissions, error semantics, state constraints and tenant resolution well. The main remaining gap is whether the update is a merge-patch (unspecified fields preserved) or a replace, which an agent would need to know.
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% for a nested body object, so the description must carry the load. It states '请求字段同创建(均可选)' (fields same as create, all optional) and gives semantics for name and startAt, but leaves note undocumented and relies on the agent cross-referencing the create tool, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with '更新 Rundown' (update Rundown) - a specific verb+resource - and pins it to PATCH /api/projects/{id}/stage-rundowns/{rid}, which identifies the exact resource among many Patch siblings. It does not explicitly name the alternative tools (e.g. the items-patch or reorder siblings), so sibling differentiation is only implicit via the path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational context: '需 tools:manage 权限' and the state-dependent rule that while execution.status is running only name/note may change. It does not, however, name a sibling alternative or state when to prefer this tool over patch_stage_rundowns_rid_items_item_id, so there is no explicit when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stage_rundowns_rid_items_item_idADestructive
更新节目。需 tools:manage 权限。multipart 表单,字段同新增(均可选)。removeAttachmentIds 命中的附件从节目移除并级联删除存储对象与 File 文档;新上传文件追加在附件列表末尾。执行中禁止编排变更(409)。 PATCH /api/projects/{id}/stage-rundowns/{rid}/items/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the permission gate, the multipart form encoding, the cascade deletion of storage objects and File documents triggered by removeAttachmentIds, the append-at-end ordering for new uploads, and the 409 conflict during execution. This is substantial behavioral context for a destructive (destructiveHint=true) mutation.
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?
Front-loaded with the action and permission requirement, then behaviors, then the endpoint path. Dense but each clause carries information; the raw PATCH path line is mildly redundant but useful for routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema mutation with nested objects, it covers the safety-relevant facts an agent needs: permission requirement, destructive cascade, append ordering, and conflict behavior. Remaining gaps (full field list, validation rules beyond name trim) are acceptably delegated to the 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?
Top-level schema coverage is effectively 0% for the body/path shape, so the description has to compensate, and it does: it declares all fields optional, explains removeAttachmentIds cascade semantics, describes where new files land in the attachment list, and clarifies that projectId is auto-derived from the API key and must not be passed. Deep nested field formats (base64 size, mimeType default) still live only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (更新/PATCH) and resource (a stage-rundown item at /stage-rundowns/{rid}/items/{itemId}), which cleanly separates it from siblings like post_stage_rundowns_rid_items (create) and delete_stage_rundowns_rid_items_item_id (delete). The item being updated 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?
Gives the precondition (tools:manage permission) and references the create endpoint by saying 'fields same as create, all optional', plus a 409 rule when execution is in progress. It does not explicitly name alternatives or when-not-to-use, but the context needed to invoke it correctly is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stage_rundowns_rid_items_reorderADestructive
重排节目顺序。需 tools:manage 权限。order 必须与现有节目一一对应(长度相等、id 集合完全相同),否则 400。执行中仅可在未执行节目槽位内重排:当前节目或已有实际记录的节目所在位置必须原样,否则 409「执行中仅可调整未执行节目的顺序」。 PATCH /api/projects/{id}/stage-rundowns/{rid}/items/reorder 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it non-readonly, destructive and non-idempotent, and the description adds real behavior beyond that: the tools:manage permission requirement, a 400 on mismatched order (equal length / identical id set), and a 409 'execution in progress' rule that executed slots must stay in place. It also clarifies the project is derived from the API key rather than passed.
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?
Front-loads the purpose, then layers permission, validation, execution-state rule, endpoint and project note. Dense but each clause carries distinct information; slightly over-packed for a single short tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, state-constrained reorder op with nested params and no output schema, it covers auth, validation rules, and error codes well. The main omission is defining what rid refers to and any side effects on dependent items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the load: it explains that order must be a complete one-to-one mapping of existing program ids (equal length, identical id set), which is meaningful semantics beyond the schema's brief 'full ordering' note. It does not clarify the rid path parameter, leaving one gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (重排节目顺序 / reorder items within a stage rundown) and pins down the exact endpoint path, so an agent can distinguish it from the similarly named stages_reorder and physical_categories_reorder siblings.
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?
Gives clear operating context and constraints: it requires tools:manage, and it details the when-not condition that during execution only unexecuted slots may be reordered. It does not explicitly name alternative reorder tools, so it stops short of full when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stage_signups_sidADestructive
更新报名批次。需 tools:manage 权限。字段均可选,合并后仍需 endAt 晚于 startAt。 PATCH /api/projects/{id}/stage-signups/{sid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, and readOnly=false. The description adds meaningful context beyond those: it discloses the required permission scope, that all body fields are optional, the merge semantics of the partial update, and the cross-field validation that endAt must remain after startAt post-merge.
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?
Well front-loaded: purpose first, then permission, validation constraint, endpoint, and projectId note. Every sentence carries information with no filler, though the raw endpoint path is somewhat redundant given the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with full annotation coverage and no output schema, the description covers permission requirements, merge/partial-update semantics, the endAt>startAt invariant, and the implicit projectId. The main remaining gap is not listing the updatable fields, which the 0%-coverage schema leaves undocumented.
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 asserts body fields are optional and references endAt/startAt in the merge constraint, but never enumerates the available fields (name, note, endAt, startAt) or clarifies that path.sid is required. It partially compensates but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (更新/PATCH) and resource (报名批次/signup batch), clearly identifying the batch-level update operation. It is distinguishable from the item-level siblings (anon_patch_stage_signups_sid_items_item_id), though it does not explicitly name 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?
Provides a clear prerequisite (requires tools:manage permission) and clarifies that projectId need not be passed since the project derives from the API key. However, it gives no explicit guidance on when to use this batch update versus the item-level or delete siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stage_signups_sid_items_item_idADestructive
更新报名节目。需 tools:manage 权限。字段均可选,校验同新增。 PATCH /api/projects/{id}/stage-signups/{sid}/items/{itemId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context: the required tools:manage permission (auth need) and the fact that this is a partial update (字段均可选) whose validation mirrors the create endpoint. It stops short of explaining consequences of the destructive hint or how partial updates interact with omitted fields.
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?
Purpose is front-loaded in the first clause, followed by permission, optionality, and endpoint detail. The raw PATCH path line is somewhat redundant with the tool name but is short and harmless; overall there is little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a partial-update PATCH with a nested body object and no output schema, the description covers permission, partial-update semantics, validation source, and path handling. It leaves the body field set and the effect of the destructive flag undescribed, so an agent still lacks a full picture of what can be changed and what the risk is.
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 effectively 0%, so the description carries the burden. It meaningfully adds that all body fields are optional, that validation matches the create endpoint, and that projectId is derived from the API key rather than passed. It still does not describe the actual body fields (name, note, durationMin, participants) or their format beyond pointing at the create tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (更新) and resource (报名节目, a stage-signup item), and the endpoint path confirms the target resource unambiguously. It does not explicitly differentiate itself from the close sibling anon_patch_stage_signups_sid_items_item_id_status (which patches only status), so the agent must infer the distinction from naming.
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?
Gives a real prerequisite (需 tools:manage 权限) and notes that all fields are optional with validation matching the create endpoint, which implies usage context. However, there is no explicit when-to-use vs. when-to-use-an-alternative guidance against the many sibling PATCH tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stage_signups_sid_items_item_id_statusADestructive
拍板节目状态。需 tools:manage 权限。拍板状态,与投票互不影响;其余状态值 400「无效的状态」。 PATCH /api/projects/{id}/stage-signups/{sid}/items/{itemId}/status 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false and openWorld=true, so the safety profile is covered. The description adds genuinely new context: the tools:manage authorization requirement, the 400 response for invalid status values, and that projectId is derived from the API key. This is meaningful behavioral disclosure beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and permission, then the status constraint and route. Efficient, though the embedded raw URL and mixed-language phrasing are slightly redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and undocumented parameters, the description covers permissions, failure behavior and the auto-resolved project. It still leaves the meaning of sid/itemId and the exact effect of the finalized status unstated, so an agent lacks some call-time 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 compensate, and it does so only partly. It explains that projectId is unnecessary (auto-derived) and gives semantics for allowed status values, but sid and itemId are never explained and the status enum semantics (finalize vs voting) remain thin.
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 – finalizing (拍板) the status of a stage-signup item, and even names the underlying PATCH route, which distinguishes it from the sibling PATCH .../items/itemId. The meaning of 拍板 could be clearer for non-Chinese readers, but the paired URL path makes the intent 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?
Provides the permission prerequisite (tools:manage) and clarifies the operation is independent of voting, implying when this tool is appropriate. It never explicitly contrasts with the sibling anon_patch_stage_signups_sid_items_item_id or states when not to use it, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stages_reorderADestructive
调整阶段顺序。需 project:manage 权限。orderedIds 为全量阶段 id,按新顺序排列。返回形态同 GET 阶段列表。 PATCH /api/projects/{id}/stages/reorder 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false and openWorld=true, so the safety profile is covered. The description adds genuinely useful behavior: the required project:manage permission, the fact that orderedIds must be the complete set, and that the response mirrors GET stages. These go beyond the structured fields.
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?
Front-loaded with the purpose, then permission, parameter meaning, return shape, and the raw endpoint. Each sentence carries distinct information with no filler, though the URL line is somewhat redundant with the operation name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema and a single nested body param, the description covers permission requirements, parameter completeness semantics, return shape, and project determination. Little else is 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?
Schema description coverage is 0%, so the description must carry the load, and it does: it explains that orderedIds is a full-list stage id array ordered by the new sequence. This is essential semantic detail the bare 'array of strings' schema lacks, though it could note format/edge cases further.
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?
State a specific verb+resource: '调整阶段顺序' (reorder stages). An agent can immediately tell this concerns reordering the stage list rather than editing a single stage. It stops short of explicitly differentiating from the sibling anon_patch_stages_stage_id, so 4 rather than 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?
It provides a concrete prerequisite ('需 project:manage 权限') and clarifies project resolution ('项目由当前 API 密钥自动确定,无需传 projectId'), which is implied usage context. However it gives no explicit when-to-use vs alternatives, such as how it relates to patch_stages_stage_id or patch_physical_categories_reorder.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_stages_stage_idADestructive
更新项目阶段。需 project:manage 权限。completedAt 传 null 取消完成;标记完成即推进「当前阶段」(由完成态推导,无独立切换端点)。返回形态同 GET 阶段列表。 PATCH /api/projects/{id}/stages/{stageId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only give the safety profile) by disclosing the permission requirement, the null-completes-this-stage semantics, the side effect that completing advances the derived 'current stage' with no separate switch endpoint, and that the response mirrors GET stage list. This is exactly the mutation context an agent needs.
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?
Front-loads the purpose, then permission, edge-case semantics, return shape, and route. Dense but every line adds actionable information; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, it covers permissions, side effects, null-handling, output shape reference (GET stage list), and path scoping. Only the note field's meaning remains unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage the description must carry the param burden, and it does for the important ones: completedAt semantics including the null case, and clarification that projectId is not needed because the API key determines the project. The 'note' parameter is left unexplained, which is the only gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('更新项目阶段' / PATCH stage) and even gives the exact route, so an agent knows this is the field-level update for a single stage. It distinguishes itself implicitly from siblings like anon_patch_stages_reorder and anon_post_stages, though it does not name them outright.
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?
Gives the prerequisite (project:manage permission) and explains the key usage decisions: pass completedAt=null to un-complete, and marking complete is the only way to advance the current stage. This is clear context, though no explicit when-not/alternative routing is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_todos_todo_idBDestructive
更新待办。需 todo:manage 权限。字段均可选;status 置 open 会清除完成信息。 PATCH /api/projects/{id}/todos/{todoId} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds genuine behavioral context beyond that: the required permission scope and the specific rule that setting status=open clears completion information — a non-obvious side effect an agent must know.
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?
Compact and front-loaded, leading with the action, then permission, then the key field caveat. The inclusion of the raw endpoint path is slightly redundant but not harmful.
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?
Annotations cover the safety profile and the description adds permission and one field's destructive side effect, but with 0% param coverage, nested objects, and no output schema, a calling agent still lacks field-level semantics needed to invoke the body correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the body nests eight fields (note, dueAt, title, nodeAt, status, category, remindAt, assigneeIds). The description only says all fields are optional and explains status, leaving the meaning/format of the other seven fields undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('更新待办' / update todo) and the HTTP method (PATCH /api/projects/{id}/todos/{todoId}), clearly marking it as the todo-mutation operation. It is distinguishable from siblings like anon_post_todos or anon_delete_todos_todo_id, though it never explicitly names alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Adds practical context: requires todo:manage permission and clarifies that projectId is auto-determined from the API key, so it should not be passed. However, it gives no guidance on when to use this generic PATCH versus dedicated siblings like anon_post_todos_todo_id_complete or anon_post_todos_todo_id_updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_patch_work_modules_midADestructive
更新任务模块。需 work:manage 权限。字段均可选;startAt/endAt 需成对提交,任一键出现时两值同时重建,单传其一将把另一清空。替换 assigneeIds 时留任成员保留确认记录,被移除者清除。 PATCH /api/projects/{id}/work-modules/{mid} 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/idempotentHint annotations by disclosing exactly what gets destroyed: startAt/endAt are rebuilt as a pair so submitting one value clears the other, and replacing assigneeIds retains confirmation records for kept members while clearing removed ones. This is exactly the kind of consequence-level detail an agent needs before a destructive patch.
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?
Front-loads the verb+resource, then permission, then the tricky field semantics, then the endpoint and auth note. Every sentence carries information and there is no filler, though the endpoint/auth lines could be slightly tighter.
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 single-item mutation with annotations covering the safety profile and no output schema, the description supplies the permission requirement, the auto-determined project, and the subtle field-rebuild rules. It is nearly complete, missing only return/response expectations, which an output schema would normally cover.
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 explain the two non-obvious parameters (the startAt/endAt pairing rule and assigneeIds replacement semantics), but name, location, description, requiredCount, and mid are left undocumented, so it only partially closes the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('更新任务模块' / update task module) and includes the PATCH endpoint, which pins down the operation precisely. It is distinguishable from the create (post_work_modules) and delete siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the precondition ('需 work:manage 权限') and clarifies that projectId need not be passed because the API key determines it. However, there is no guidance on when to prefer this over alternatives or how partial updates interact with other work-module endpoints, leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_accountsADestructive
新增平台账号。需 accounts:manage 权限。mode 为 full 时密码二选一:浏览器加密(默认)传 passwordCipher(ANONv1 格式密文,服务端原样存储);服务端加密传 cipherKeySource=server 加 password 明文(服务端加密后存储)。otp/contact 模式不传密码字段。 POST /api/projects/{id}/accounts 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-idempotent, destructive, open-world write, and the description usefully adds the required accounts:manage permission plus a key storage behavior — passwordCipher is stored verbatim while cipherKeySource=server encrypts before persisting. That storage-permission detail is real added value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by the permission requirement and then mode/password rules; the closing lines about the POST path and auto-derived project are slightly redundant but still useful. Generally dense and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately covers creation semantics, permissions, project scoping, and password handling for a nested-object body. It does not address duplicate-account or error behavior, a minor gap for a create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is reported at 0%, so the description must carry the parameter burden, and it does: it explains the XOR choice between passwordCipher (default) and cipherKeySource=server + password, and that otp/contact modes omit password fields entirely. This clarifies relationships the flat schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb+resource (新增平台账号 = create a platform account), making it clearly the create counterpart to the anon_get/anon_patch/anon_delete_accounts siblings. It does not explicitly name those alternatives, so it sits just below the top tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to-use context for the three mode values, specifying that password fields are only supplied for mode=full and how browser vs server encryption selects which field to send. It stops short of naming when NOT to use this tool versus the patch/delete siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_announcementsADestructive
发布公告。需 announcement:manage 权限(project:manage 等价放行)。重要/紧急公告发布时向可见范围内成员发通知。 POST /api/projects/{id}/announcements 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false; the description adds genuinely useful non-annotation context: the required permission point, the fact that important/emergency announcements trigger notifications to members in the visibility scope, and that the project is auto-derived from the API key. This is real behavioral detail beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact lines, front-loaded with the core action, then prerequisites, side effects, and the endpoint/no-projectId note. Efficient, though the endpoint string is somewhat redundant with the name and the parameter semantics gap is not addressed.
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 mutation tool with no output schema, the description covers permission, notification behavior, and project resolution well, but leaves the rich nested body (types, visibility semantics, confirmation flag) unexplained. Adequate but with clear gaps given the schema complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the body has seven nested properties (type enum, title, content, isPinned, expiresAt, visibility, requireConfirmation) that the description never explains. The only parameter-related note is that projectId must not be sent, which does not compensate for the undocumented nested fields.
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+resource: '发布公告' (publish an announcement). Combined with the endpoint POST /api/projects/{id}/announcements, an agent can immediately tell this creates a new announcement, distinct from the sibling get/patch/delete announcement tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the prerequisite permission (announcement:manage, with project:manage as equivalent) and the conditional side effect for important/emergency posts. It does not explicitly contrast when to choose this over e.g. anon_post_announcements_announcement_id_confirm, but the create-context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_announcements_announcement_id_confirmBDestructive
确认知悉公告。需项目成员身份且在公告可见范围内。「我已知悉」确认,幂等不刷新时间戳。 POST /api/projects/{id}/announcements/{announcementId}/confirm 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts the operation is 幂等 (idempotent) and does not refresh the timestamp, while the annotations declare idempotentHint=false. This is a direct conflict on a behavioral trait an agent would rely on when deciding whether retries are safe, so the description actively contradicts the structured metadata.
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 action and its preconditions are front-loaded, followed by the route and the projectId caveat. It is dense but each sentence adds information; only the raw endpoint line borders on 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?
With no output schema, the description should carry behavioral context, and it does cover membership requirement, visibility scoping, and project resolution. But the idempotency claim is unreliable against the annotations, leaving the agent with an incomplete/incorrect picture of the write semantics.
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 single nested path parameter announcementId carries no schema description. The description partially compensates by explaining that projectId is not needed because the project is derived from the API key, but it adds nothing about the announcementId value itself.
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+resource: confirming acknowledgment of an announcement, plus the exact route POST /api/projects/{id}/announcements/{announcementId}/confirm. This is clearly distinct from siblings like anon_get_announcements_announcement_id_confirmations or anon_patch_announcements_announcement_id, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives preconditions (must be a project member and the announcement must be within visible scope) and clarifies that projectId is inferred from the API key, which is useful. However, it never says when to prefer this over alternatives such as viewing confirmation status, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_custom_toolsADestructive
创建自定义工具。需 tools:manage 权限。name 必填且 ≤50;url 必须可解析且协议为 http/https(≤1000,否则 400 invalid_url);mode 缺省 embed;description ≤200;scopes 超集静默过滤。 POST /api/projects/{id}/custom-tools 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=true, so the write/mutation profile is covered structurally. The description adds genuinely new behavior: the 400 invalid_url failure mode for non-http(s)/unresolvable URLs, silent filtering of out-of-range scopes, and the mode default — all beyond 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?
Extremely dense and front-loaded: purpose, permission, then per-field constraints separated by semicolons, closing with the endpoint and the non-obvious projectId note. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, it covers the essentials an agent needs: required fields, permission gate, validation limits and failure mode, defaults, and the project-scoping gotcha. It omits the passToken default (present only in schema) and gives no hint about the created resource's identity in the response, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
It adds meaning beyond the schema for most fields: name ≤50, url protocol/length bounds plus the exact error code, description ≤200, mode default embed, and the notable silent-filtering semantics of scopes (schema only says illegal items are dropped, description says supersets are filtered silently). passToken is left unmentioned, so it falls just short of complete coverage of the body fields.
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+resource ("创建自定义工具" / create custom tool) and the description's endpoint line (POST /api/projects/{id}/custom-tools) confirms it. It is cleanly separable from siblings get_custom_tools, patch_custom_tools_tool_id, and delete_custom_tools_tool_id.
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 surfaces a prerequisite ("需 tools:manage 权限") and clarifies that projectId must not be passed because the project derives from the API key, which is useful invocation context. However, it never states when to use this versus alternatives (e.g. patching an existing custom tool) or any when-not condition, so guidance remains implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_filesADestructive
上传项目文件。需 file:upload 权限。单文件上传,大小不超过 20MB。 POST /api/projects/{id}/files 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/mutating safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false). The description usefully adds context beyond them: the required permission scope, the 20MB size ceiling, and the fact that the project is derived from the API key so no projectId is passed. It stops short of describing duplicate-on-reupload behavior or failure responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact statements, purpose front-loaded, followed by permission, constraint, and endpoint semantics. There is no filler or repetition, and every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter upload tool with no output schema, the definition covers the essentials: permission requirement, size limit, single-file nature, and project scoping. Missing only secondary details like return value shape or behavior on duplicate filenames.
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?
Although reported schema coverage is 0% at the top level, the nested file object actually documents filename, base64 (standard Base64, no data: prefix, ≤20 MiB decoded) and mimeType. The description reinforces this by clarifying it is a single-file payload and that no projectId is needed despite the {id} in the endpoint, adding meaning the schema alone does not convey.
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 + resource (上传项目文件 / upload project files) and even names the endpoint POST /api/projects/{id}/files, so an agent knows exactly what operation this is. It does not, however, differentiate itself from similar write siblings such as anon_post_materials or anon_post_materials_resource_id_versions, leaving ambiguity about files-vs-materials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real preconditions (requires file:upload permission) and constraints (single file, ≤20MB), which implicitly tells the agent when the tool is callable. But there is no explicit when-to-use/when-not guidance or routing versus sibling upload tools, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_financeADestructive
新建账目。需 finance:manage 或 finance:add 权限。金额以元提交(最多两位小数),服务端转换为整数分。payerUserId 与 splitAmong 必须是项目成员。 POST /api/projects/{id}/finance 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the mutation nature is covered. The description adds genuinely useful behavior beyond that: required permissions and the server-side conversion of yuan (max 2 decimals) into integer cents, which an agent must know at call time.
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?
Front-loaded with the action, followed by permission, amount-handling, member constraints, endpoint, and project-scoping note. Dense but every sentence carries operational value; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, the description covers the essentials an agent needs: permissions, amount format, member validation, and implicit project scoping. Minor gaps remain (type semantics, note field), but nothing critical is missing 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 description adds meaning for amount (units and conversion rule) and for payerUserId/splitAmong (must be project members). It is silent on the 'type' enum and 'note' field, so it only partially compensates for the low reported schema description coverage; the inline schema descriptions carry much of the load.
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+resource ('新建账目' / create a finance entry) and even names the endpoint (POST /api/projects/{id}/finance), so the action is unambiguous. It does not explicitly differentiate itself from finance siblings (get/patch/delete), but the create purpose is clear from the text and tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives prerequisites (finance:manage or finance:add permission, payerUserId/splitAmong must be members) and a scoping clarification (project inferred from API key, no projectId needed). However, it never says when to use this vs. alternatives like anon_patch_finance_tx_id or anon_delete_finance_tx_id, leaving usage implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_invitesADestructive
创建项目邀请。需 member:manage 权限。不传 targetUserId 为开放链接(任何登录用户可接受,一次性);传入则仅该用户可接受。前端拼 location.origin + url 发给对方。 POST /api/projects/{id}/invites 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false). The description adds genuinely new context: the member:manage authorization requirement, the one-time nature of the open link, and that the project is derived from the API key rather than a parameter. It stops short of explaining reversibility or the returned resource.
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?
Purpose is front-loaded, followed by precondition, behavioral branch, sharing mechanic, and route. No redundant sentences; the frontend concatenation note earns its place as an operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the essentials: permission gate, the two invite modes, and implicit project scoping. It leaves the return payload (presumably the url) and the roleName field unaddressed, which are the main remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Reported schema coverage is 0%, so the burden falls on the description, which it partially meets: it explains targetUserId's two very different meanings (open link vs. restricted invitee) far beyond the terse schema note. However it says nothing about roleName or expiresInHours, leaving part of the nested body 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 verb and resource (create project invite) and immediately branches into the two distinct modes of the operation. An agent can tell exactly what this tool does and how it differs from read-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear conditions for choosing between the open-link path (omit targetUserId) and the targeted path (pass targetUserId), plus the required member:manage permission. It does not name or contrast with any sibling tool, so it stops short of the 5-level when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_lostfoundADestructive
登记失物。需 lostfound:manage 权限(project:manage 等价放行,超管不受限)。multipart 表单;name 必填且 trim 后非空;foundAt 可选(非法 400「无效的时间」,缺省为当前时间);photo 可选单张、仅图片(否则 400「仅支持图片文件」)且 ≤20MB,自动生成 WebP 预览(≤800px、≤100KB)。 POST /api/projects/{id}/lostfound 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark it non-read-only, destructive and open-world; the description goes well beyond that by disclosing the auth gate, multipart encoding, the auto-generated WebP preview side effect (≤800px, ≤100KB), and exact 400 error conditions for bad foundAt and non-image uploads. This is the kind of side-effect and failure-mode disclosure an agent needs before calling a mutating tool.
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?
Purpose and permission are front-loaded, then validation rules, then the endpoint and the projectId clarification. Dense semicolon-packed clauses but each carries distinct operational information, so little is wasted.
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 nested-body, permission-gated upload endpoint with no output schema, the description covers auth, encoding, validation, side effects and identity resolution - nearly everything needed to call it correctly. It does not hint at the response (e.g. the new item id) needed for follow-up patch/delete calls, which is a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds real meaning beyond the schema: name must be non-empty after trim, foundAt defaults to now and returns 400 「无效的时间」 when invalid, photo is a single image ≤20MB with an auto WebP preview. It is silent on note and foundLocation, so it is strong but not exhaustive over the nested body.
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+resource ("登记失物" / register a lost-and-found item) and pins the exact endpoint POST /api/projects/{id}/lostfound, which cleanly separates it from the get/patch/delete lostfound siblings. It does not explicitly name those alternatives, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete entry conditions: lostfound:manage permission (project:manage accepted, superadmin exempt) and the fact that the project is derived from the API key so no projectId is needed. It never states when to prefer this over e.g. patch_lostfound_item_id, so routing guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_materialsADestructive
创建资源。需 materials:manage 权限。支持 JSON 与 multipart 两种请求体;multipart 附带 file(可选,≤20MB,上传即创建版本 1)与 note(首版本备注),位图文件自动生成 WebP 缩略预览。 POST /api/projects/{id}/materials 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true), so the description's job is to add context, and it does: it discloses the required permission scope, the two supported request bodies (JSON vs multipart), the 20MB file cap, that upload auto-creates version 1, and that bitmaps get an auto-generated WebP preview. That is substantive behavioral detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and permission, then request-body details, then endpoint and project-scoping note. Dense but well-ordered with no padding; slightly heavy on multipart specifics for a one-parameter schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and a nested-object body at 0% schema coverage, the description covers permission, body formats, file limits and auto-project scoping. Gaps remain around the required JSON fields and what the response returns, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (only the nested visibility field carries a description), so the description must compensate. It adds meaning for multipart fields (file ≤20MB, note, auto WebP preview) and the implicit project scoping, but it does not explain the actual JSON body fields the schema requires (typeId, name, description), so coverage is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("创建资源" / create a material) and pins the exact endpoint POST /api/projects/{id}/materials, so the agent can distinguish it from siblings like anon_post_materials_types or anon_post_materials_resource_id_versions. It is clear but does not explicitly name those siblings to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides useful invocation context (requires materials:manage permission, project is auto-determined so no projectId is passed), which is real guidance. However it never states when to choose this tool over alternatives such as anon_post_materials_resource_id_versions for new versions, leaving the routing implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_materials_resource_id_versionsADestructive
上传新版本。需 materials:manage 权限。版本号自动递增并成为当前版;mime 命中位图白名单(png/jpeg/webp/gif)时自动生成 WebP 缩略预览(宽 ≤800px,体积 ≤100KB)。 POST /api/projects/{id}/materials/{resourceId}/versions 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, openWorld=true, so the safety profile is covered. The description adds real context beyond that: the version number auto-increments and supersedes the current version, the required permission, and the automatic WebP thumbnail generation with explicit constraints (png/jpeg/webp/gif whitelist, ≤800px, ≤100KB). It does not say whether prior versions are retained or how upload failures surface, but the added side-effect detail is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the action, then permission, then side effects, then the endpoint and the projectId note. The endpoint and projectId lines partly restate the schema path, but nothing is wasted enough to undermine the structure.
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 mutation tool with no output schema, the description supplies the essential prerequisites (permission), side effects (auto-increment, current-version replacement, thumbnail derivation) and parameter disambiguation. It stops short of describing the response payload or error conditions, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema descriptions are absent (0% coverage), but the description resolves a genuine ambiguity: the path template contains {id} yet no projectId parameter is required, which it explains. Nested schema descriptions already document base64/filename/mimeType/note, so the description need not repeat them; together the parameter semantics are well covered.
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+resource: uploading a new version of a material resource, with the concrete endpoint and the 'becomes current version' semantics. It is clearly a versioning write, distinct from the sibling anon_post_materials (create material), though it never names that sibling to sharpen the contrast.
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 states the required permission (materials:manage) and clarifies that projectId must NOT be passed because the project derives from the API key — genuine routing guidance. But it never says when to use this endpoint versus creating a new material (anon_post_materials) or editing existing metadata (anon_patch_materials_resource_id); usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_materials_typesBDestructive
创建资源类型。需 materials:manage 权限。 POST /api/projects/{id}/materials/types 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent write; the description adds two useful behavioral facts beyond them: the required permission scope and the fact that the project is resolved from the API key rather than a path parameter. It does not, however, explain the destructiveHint=true flag or what the call returns, so with annotations carrying the safety profile a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, purpose front-loaded, then permission, then the raw endpoint and the project-scoping note. Every line carries information; the endpoint path is slightly redundant but useful for routing.
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?
Covers purpose, auth requirement and project scoping, which is the operational essentials for a create tool with no output schema. It is still silent on what must be supplied in the body (a required 'name' plus 'visibility' semantics), leaving the agent to read the nested 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 description coverage is reported at 0% for the single 'body' parameter, and the description never mentions the body contents ('name', 'visibility') at all. The only semantics available live inside the nested schema, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('创建资源类型' = create a resource type), which clearly separates it from anon_post_materials (which creates a resource) and anon_patch_materials_types_type_id (which edits one). It does not name siblings explicitly, 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?
Gives one real prerequisite, the required 'materials:manage' scope, which is genuine usage context. However it offers no when-to-use vs alternative guidance (e.g. vs creating a resource directly) and no when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_milestonesADestructive
创建里程碑。需 project:manage 权限。 POST /api/projects/{id}/milestones 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write/destructive/not-idempotent/open-world, so the safety profile is covered. The description adds genuinely new behavioral context: the authorization requirement (project:manage) and the implicit project scoping from the API key, which prevents the agent from fabricating a projectId. It says nothing about validation failures or response shape, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded lines with no filler: action, permission, route, scoping clarification. The route line is mildly redundant with the tool name but still informative, so it is tight without being flawless.
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 write tool with no output schema and annotations already covering the safety profile, the description supplies the two facts an agent most needs (permission and implicit project scoping). Field-level body semantics are thin, but the schema structure and annotations carry most of the remaining burden.
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 single parameter is a nested body object (title, date required; stageId, description optional) whose fields get no explanation in the description. The one piece of parameter guidance it does give — 'no projectId needed' — compensates for the most likely mistake, but the required/optional body fields are left to the schema structure alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('创建里程碑') that is unambiguously distinct from the sibling read/update/delete milestone tools (anon_get_milestones, anon_patch_milestones_milestone_id, anon_delete_milestones_milestone_id). It even names the concrete route (POST /api/projects/{id}/milestones), leaving no doubt about what is created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides real operational context before invocation: the required project:manage permission and the fact that the project is resolved from the current API key so no projectId is needed. It does not, however, compare against alternatives or state when-not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_milestones_milestone_id_completeADestructive
标记里程碑完成。需 project:manage 权限。completedAt 置为当前时间;重复调用会刷新完成时间。 POST /api/projects/{id}/milestones/{milestoneId}/complete 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the required permission, the exact side effect (completedAt = current time), and that re-invocation refreshes the timestamp (consistent with idempotentHint=false). It also clarifies that project scope is derived from the API key, adding context the annotations do not carry; it does not, however, explain reversibility or how to undo completion, which is notable for a destructiveHint=true action.
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 action is front-loaded, followed by the permission requirement and the important re-invocation caveat. Slightly padded by restating the raw HTTP route and the 'no need to pass projectId' note, but nothing is genuinely wasteful.
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 one-parameter mutation with full annotation coverage and no output schema, the description covers permissions, side effects, idempotency behavior, and scope resolution. The main gap is the absence of any guidance on undoing or reversing a completion.
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 the load. It usefully states that projectId is not required (project inferred from the API key), but it never explains the milestoneId path parameter itself, leaving the sole parameter's semantics only implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '标记里程碑完成' (mark the milestone as complete). It is clearly distinguishable from siblings like anon_post_todos_todo_id_complete (different resource) and anon_patch_milestones_milestone_id (different operation).
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 names a prerequisite ('需 project:manage 权限') and warns that repeated calls refresh completedAt, which tells the agent not to retry casually. It stops short of explicitly naming when-not-to-use or pointing to the alternative PATCH tool for generic milestone edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_onsite_incidentsADestructive
上报现场异常。项目成员上报异常并通知项目管理者。moduleId 须为本项目任务模块。 POST /api/projects/{id}/onsite/incidents 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false. The description adds genuinely non-structured context: that submitting this notifies project managers (a side effect), and that projectId is derived from the API key so must not be passed. That is real behavioral value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose followed by constraints and the endpoint. Mostly tight, though the raw HTTP path and method line are redundant detail that an agent does not need to invoke 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?
No output schema, and for a destructive create operation the description covers the notification side effect and project scoping but omits permission requirements, return behavior, and the semantics of the category values. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single body param is a nested object (category, note, moduleId), so the burden is on the description. It clarifies moduleId ('须为本项目任务模块') and the absence of projectId, partially compensating, but leaves the category enum values and note length unaddressed.
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+resource: reporting an on-site incident and notifying project managers. It identifies the endpoint and the fact that incidents are project-scoped, which distinguishes it from the read (anon_get_onsite_incidents) and resolve (anon_post_onsite_incidents_iid_resolve) siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage context ('项目成员上报异常' - project members report incidents) and adds the moduleId constraint, but gives no explicit when-to-use/when-not guidance or contrast with the sibling resolve endpoint that also acts on incidents. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_onsite_incidents_iid_resolveBDestructive
标记异常已处理。需 work:manage 权限。记录处理人与时间;已处理时幂等不刷新。 POST /api/projects/{id}/onsite/incidents/{iid}/resolve 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description genuinely adds behavior beyond the annotations: it names the required permission (work:manage) and states that the handler and timestamp are recorded. But it also asserts '已处理时幂等不刷新' (idempotent when already handled, no refresh), which directly conflicts with the declared idempotentHint=false, so the added transparency is undercut by a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by permission, behavior, endpoint, and a scoping note. It is compact and well-ordered, with only mild redundancy from restating the raw endpoint path.
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 single-parameter destructive mutation with no output schema, the description covers purpose, permission requirement, recorded side effects, and the auto-resolved project scope. Error cases and response shape are omitted, but the absence of an output schema makes that less critical.
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 is one nested parameter (iid), so the description carries the burden. It usefully clarifies that the project is auto-derived from the API key and that no projectId should be passed, but it never explains the 'iid' parameter itself, so it only partially compensates.
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+resource+state ('标记异常已处理' = mark an incident as handled) and reinforces it with the endpoint path, so an agent can tell it apart from siblings like anon_get_onsite_incidents or anon_post_onsite_incidents. It stops short of naming those alternatives explicitly, so it does not reach the 5 bar for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb (resolve/handle an incident) and the description adds a real prerequisite ('需 work:manage 权限'), which is useful context. However there is no explicit when-to-use vs when-not guidance and no routing to the sibling that creates or lists incidents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_physical_categoriesADestructive
新建实物分类。需 materials:manage 权限(project:manage 等价放行,超管不受限)。 POST /api/projects/{id}/physical/categories 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds value beyond that by disclosing the authorization model (materials:manage, project:manage equivalence, super-admin bypass) and the API-key-based project scoping, neither of which appears in the structured fields. It does not explain the return shape or duplicate handling, but the auth disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines, front-loaded with purpose, then permission, then endpoint, then the projectId clarification. No filler, and the most decision-relevant facts come first. Slightly fragmented formatting but well within acceptable size.
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 non-idempotent mutation with no output schema and a nested body, the description covers purpose, auth, and scoping adequately but omits what success returns (e.g., the new category id) and any error/duplicate behavior. With no output schema to lean on, that is a noticeable gap rather than a critical one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter is a nested body object containing a required name, which the description never describes. It does add one genuinely useful semantic: that projectId must not (and need not) be passed because the project derives from the API key. That partially compensates, but the body.name field itself is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('新建实物分类' = create a physical category), which is instantly distinguishable from the sibling reads (get_physical_categories), patches (patch_physical_categories_cat_id), and deletes (delete_physical_categories_cat_id). It does not explicitly name those siblings, but the operation 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?
Provides real selection context: the required materials:manage permission (with project:manage as an equivalent bypass and super-admin exemption) and the note that project is auto-resolved from the API key. However, it never states when to reach for this tool over patch/delete/reorder siblings, so guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_physical_itemsADestructive
新建物资条目。需 materials:manage 权限。数量字段须为非负整数;responsibleId 须为项目成员。 POST /api/projects/{id}/physical/items 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=false, openWorldHint=true, and the description adds genuinely useful context beyond them: the required scope, the non-negative-integer constraint on quantity fields, the project-membership constraint on responsibleId, and that projectId is inferred from the API key. It still says nothing about what is created or returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines, front-loaded with the action, then prerequisites, then validations, then the endpoint and the projectId note. No filler; the only mild redundancy is restating the endpoint path.
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 destructive create with a large nested payload and no output schema, the description covers the operational essentials (permission, key constraints, auto-scoped project) but leaves most of the body fields and the response behavior unexplained.
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% against a nested body with ~14 fields, so the description must compensate. It partially does — quantity constraints, responsibleId membership rule, and the explicit note that projectId is unnecessary — but the required name/categoryId and the other fields (unit, status, location, tags...) remain undocumented in both places.
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+resource ('新建物资条目' = create a physical/materials item), which cleanly separates it from the get/patch/delete siblings on the same resource. It stops short of naming a sibling for contrast, but the create semantics are 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?
Gives a prerequisite ('需 materials:manage 权限') and field validity rules, which implies when the call can succeed, but never states when to choose this over e.g. anon_post_physical_categories or the patch/log siblings. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_physical_items_item_id_logADestructive
记录物资数量变动。需 materials:manage 权限。数量类变动(adjust_on_hand/adjust_used/adjust_lost)的 delta 须为整数且结果不能为负;status_change 须带合法 status。每次成功记录一条日志(status_change 日志的 status 字段记录目标状态)。 POST /api/projects/{id}/physical/items/{itemId}/log 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, so safety is covered. The description adds real behavioral context beyond that: it requires materials:manage, enforces validation rules (delta integer, result must not go negative), and states that each successful call appends exactly one log entry.
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?
Front-loads purpose, then permission, then per-type validation rules, then endpoint mechanics. Dense but each clause earns its place; the endpoint line is arguably redundant with the tool name but anchors the call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema the description still explains the return behavior (one log entry appended, status field records target status). Permission and project-scoping ('project auto-determined by API key, no projectId needed') are covered, leaving only minor detail on the note field.
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?
Top-level schema coverage is 0%, so the description carries the burden, and it does: it maps the type enum members to their delta/status requirements and clarifies that the status field stores the target state on status_change. Only minor gaps remain (e.g. what note does, delta semantics for status_change).
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 (记录/record) and resource (物资数量变动/material quantity change), and pins the exact endpoint POST /api/projects/{id}/physical/items/{itemId}/log. An agent can distinguish this write-log action from the sibling read tool anon_get_physical_items_item_id_logs.
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 names a prerequisite (materials:manage permission) and the conditions selecting each log type, which is genuinely useful context. However it never says when to use this log endpoint versus alternatives like anon_patch_physical_items_item_id, so routing between write tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_qq_bind_codeADestructive
生成项目 QQ 群绑定码。需 project:manage 权限。生成 6 位数字一次性绑定码(10 分钟有效,同项目单一有效码——重复生成旧码作废;绑定多个群时顺序生成绑定即可)。随后把机器人拉进 QQ 群并 @机器人 发送「绑定 XXXXXX」完成关联;一个群同一时刻只属于一个项目,绑到新项目自动从旧项目解除,同项目重复绑定同群将其类型配置重置为全选。绑定后群里收到订阅的精选类型通知(里程碑临近/待办节点与到期提醒/重要紧急公告/新风险/现场异常/周报,逐群可配)。 POST /api/projects/{id}/qq-bind-code 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true and non-idempotent, and the description justifies that: regenerating invalidates the prior code, binding to a new project auto-unbinds the old one, and rebinding the same group resets its type config to all-selected. The 10-minute one-time-code expiry and permission requirement are disclosed beyond what structured fields 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?
Purpose and constraints are front-loaded, but the actionable core is padded by the trailing enumeration of notification types (milestones, todos, announcements, risks, onsite, weekly) that a caller does not need in order to invoke the tool. Well-organized but longer than necessary for the decision at hand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, side-effecting workflow tool with no output schema, the description covers permissions, code lifetime, uniqueness semantics, the human-side binding step, rebinding side effects, and what the binding enables. 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?
Zero parameters, so baseline is 4. The description adds useful semantics by clarifying that the project is inferred from the current API key and no projectId needs to be passed despite the {id} path segment, but there is otherwise nothing parameter-level to document.
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 — generate a project QQ group bind code — and names the endpoint (POST /api/projects/{id}/qq-bind-code). It is clearly distinguishable from the sibling qq_binding tools (patch/delete group bindings, which manage existing bindings rather than minting a code).
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?
Gives an explicit operational flow: generate the code, then pull the bot into the group and @ it with '绑定 XXXXXX'. It also states the permission prerequisite (project:manage) and the sequencing rule for binding multiple groups, which is exactly the when/how guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_risks_evaluateADestructive
立即重算风险。需项目成员身份。立即重算全部风险规则后返回,响应同列表接口。 POST /api/projects/{id}/risks/evaluate 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is partly covered. The description adds useful context (auth requirement, that all rules are recomputed, and that the response mirrors the list endpoint), but it never explains what the destructive recalculation does to existing risk state such as ignore/restore flags set by sibling tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the core action stated first. Slightly redundant in repeating '立即重算' twice and appending a raw HTTP path, but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the note that the response matches the list interface is valuable, and auth derivation is explained. However, for a destructive mutation the description omits what state gets reset or invalidated, leaving a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description nonetheless clarifies that no projectId is needed because the project is resolved from the current API key, which correctly anticipates the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('立即重算风险' / immediately recalculate risks) and specifies scope ('全部风险规则' / all risk rules). It implicitly distinguishes itself from the sibling list tool by noting the response matches the list interface, but it never names a sibling outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite ('需项目成员身份' / requires project membership) but no explicit when-to-use vs alternatives (e.g. vs anon_get_risks or the risk ignore/restore endpoints). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_risks_risk_id_ignoreADestructive
忽略风险。需 project:manage 权限。仅可忽略 active 状态的风险。 POST /api/projects/{id}/risks/{riskId}/ignore 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, openWorld=true. The description adds genuinely new context beyond them: the project:manage permission requirement and the state precondition (only active risks). What the operation returns or what happens to the risk record afterwards is not stated, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and permission, then the precondition, then the endpoint. Four tight clauses with no redundancy. The raw endpoint string is slightly less user-friendly than prose but earns its place as routing context.
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 destructive mutation with no output schema, the description covers permission, state precondition, and the projectId ambiguity, which are the key things an agent needs before calling. It omits any note on the effect on the risk's status after ignoring, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the top-level path/body params. The description helpfully clarifies that projectId is auto-resolved from the API key, which maps to the path parameter, but it adds nothing about body.reason or body.ignoredUntil semantics beyond what the nested schema already documents. Partial compensation warrants a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('忽略风险' = ignore risk), making it immediately distinguishable from its sibling 'anon_post_risks_risk_id_restore'. It also pins the target scope (active risks only). It stops short of explicitly naming the sibling it is not, so 5 is not warranted.
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 states the required permission (project:manage) and the precondition that only 'active' risks can be ignored, giving clear when-to-use conditions. It does not name alternatives (e.g. restore) or exclusions explicitly, so it falls just under a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_risks_risk_id_restoreADestructive
恢复风险。需 project:manage 权限。恢复已忽略的风险为 active(清除忽略人/期限/原因)。 POST /api/projects/{id}/risks/{riskId}/restore 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: it states the required project:manage permission and specifies exactly what is destroyed (clears ignorer, deadline, reason). This detail on the mutation's side effects goes well beyond destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first phrase, then permission, effect, and path. The raw HTTP path line is somewhat redundant given the tool name, but overall it is tight and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers permission requirement, state transition, side effects, and how the project context is resolved. With no output schema it could describe the return, but for a simple restore endpoint the essentials are 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 schema documents nothing. The description reveals the path template with {riskId} and usefully clarifies that projectId must NOT be passed, but it does not explain riskId format or validity, so it only partially compensates.
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 (恢复/restore) and resource (风险/risk), and the effect on state (已忽略 → active). It is clearly distinguishable from the sibling anon_post_risks_risk_id_ignore, which does the opposite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the when: it operates on an ignored risk and returns it to active. It does not explicitly name the alternative tool or exclusion cases, but the condition that selects this tool is clear from the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_rolesBDestructive
创建角色。需 role:manage 权限。 POST /api/projects/{id}/roles 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds the auth requirement (role:manage) and the implicit project-scoping behavior, which are genuinely useful traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, followed by permission requirement and endpoint. Compact with no wasted sentences, though the raw POST path line is somewhat redundant alongside the endpoint-scoping 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?
For a mutation with no output schema, the description covers the auth and project-scoping essentials, and annotations carry the safety semantics. It still leaves the body's required fields and the create result entirely unexplained.
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, yet it never explains the required body fields 'name' and 'permissions' (the latter being an ambiguous array of strings). It does clarify that projectId should not be passed, but the actual parameters remain undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('创建角色' / create role) and adds the required permission scope (role:manage). The action contrasts naturally with the delete_roles and patch_roles siblings, but the description never names or routes to them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the role:manage prerequisite and clarifies that the project is resolved from the API key so no projectId is needed, which is useful invocation context. It offers no explicit when-to-use or when-not-to-use guidance relative to the sibling update/delete role tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundownsADestructive
创建 Rundown。需 tools:manage 权限(project:manage 等价放行,超管不受限)。name trim 后非空;startAt 须为可解析时间;创建后 items 为空数组。 POST /api/projects/{id}/stage-rundowns 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/destructive/non-idempotent profile, so the bar is lower; the description still adds the authorization model and the post-condition that a new rundown starts with an empty items array. It does not describe failure modes beyond input validation or any rate-limit/locking behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense lines, action front-loaded, then permissions, validation rules, and the endpoint. The verbatim HTTP method/path is arguably redundant metadata but is compact and informative rather than padding.
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 mutation tool with no output schema, the description covers what the operation does, who may call it, what validates, and what state results. Only the unchecked 'note' parameter and the nested body shape leave a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the body is nested, so the description must carry the load; it does explain that name must be non-empty after trimming and startAt must be a parseable time, which the schema only types as a date-time string. The optional 'note' field and the body-wrapping requirement are left unaddressed, keeping it short of a 5.
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 precise verb+resource ('创建 Rundown') and pins the exact endpoint (POST /api/projects/{id}/stage-rundowns). The note that items is empty after creation implicitly separates it from the sibling that appends rundown items, so an agent can pick it without opening the schema.
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?
Gives concrete preconditions: tools:manage is required, project:manage is accepted as an equivalent, super admins bypass it. It also warns that projectId must NOT be passed because the project comes from the API key. What's missing is an explicit routing statement against alternatives such as anon_patch_stage_rundowns_rid or anon_post_stage_rundowns_rid_items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundowns_rid_execution_advanceADestructive
推进到下一节目。需 tools:manage 权限。当前节目记 endedAt 并推进到下一节目;已是末节目则转为 finished(finishedAt 记录、currentItemId 置空)。 POST /api/projects/{id}/stage-rundowns/{rid}/execution/advance 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=false and readOnlyHint=false, but the description adds real side-effect detail beyond them: endedAt is written on the current item, finishedAt is recorded and currentItemId cleared at the end of the queue. That is exactly the mutation context an agent needs. It stops short of describing error behavior or reversibility of the advance.
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?
Front-loaded with the action, then the permission gate, then the state-transition semantics, then the raw endpoint. Every sentence carries actionable content; the URL line is slightly redundant given the name, but overall it is tight and well ordered.
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 single-parameter mutation with no output schema, the description covers permission requirements, scoping rules, and the exact state changes, so an agent can invoke it correctly. The only gap is a clearer definition of the rid parameter and any failure modes.
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?
Only one parameter (rid) exists and schema description coverage is 0%, so the schema itself explains nothing. The description supplies the endpoint template that situates rid as the rundown identifier in the path and clarifies that projectId is derived from the API key, which is mild added value, but rid's meaning and format are still never defined in words.
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+resource (advance the stage-rundown execution) and precisely describes the state transition: the current program records endedAt and the next one becomes current, or the run becomes finished on the last program. This distinguishes it from the sibling execution tools (jump, shift, reset, finish) without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The permission prerequisite (tools:manage) and the automatic project scoping are useful context, and the described semantics imply when advancing is appropriate versus jump/shift. However, it never explicitly names those sibling alternatives or states when NOT to use this tool, so routing remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundowns_rid_execution_finishADestructive
结束执行。需 tools:manage 权限。当前节目未结束的 actual 记 endedAt,状态转为 finished。 POST /api/projects/{id}/stage-rundowns/{rid}/execution/finish 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the safety profile is partly covered. The description still adds real value: it names the required permission (tools:manage) and the concrete mutation (unended actuals receive endedAt, rundown status flips to finished). It does not mention irreversibility or whether re-finishing is rejected despite idempotentHint=false.
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?
Front-loads the action ('结束执行') then layers permission, effect, and routing notes. The full POST path is somewhat redundant with the tool name, but overall the four short clauses each carry information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter action tool with no output schema, the description covers permission requirements, the state transition, and the project-resolution rule. Only the meaning of rid and error/idempotency behavior are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single rid path parameter, so the description carries the burden. It shows the URL template with {rid} and usefully clarifies that the project is inferred from the API key and projectId must not be sent, but it never explains what rid identifies (a stage rundown).
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?
Sentence one states a specific verb and resource ('结束执行' / finish execution) and the following sentence spells out the domain effect (unended actuals get endedAt, status becomes finished). It is clearly distinguishable from sibling execution controls such as advance, jump, reset, and start.
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 context by defining what finishing does, but never states when to pick this over the closely related execution_reset / execution_advance / execution_jump siblings. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundowns_rid_execution_jumpADestructive
跳转到指定节目。需 tools:manage 权限。当前节目记 endedAt,目标节目旧 actual 移除后重新起计;跳转目标为当前节目时幂等返回(不写库)。 POST /api/projects/{id}/stage-rundowns/{rid}/execution/jump 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag it as destructive, non-read-only and open-world, but the description goes well beyond them: it explains that the current item gets an endedAt, the target's prior 'actual' is removed and restarted, the self-jump case is a no-write no-op, and the manage scope is required. That is exactly the kind of side-effect disclosure an agent needs for a destructive mutation.
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?
Purpose and side effects are front-loaded, and the sentences are dense without filler. The raw POST path line is mildly redundant with the tool name but still usefully fixes the endpoint and the auto-derived project semantics.
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 destructive, no-output-schema mutation, the description covers prerequisites, state transitions and the idempotent corner case, which is most of what an agent needs. It does not describe the response payload, but with no output schema and the no-op case explained, this is a minor gap rather than a blocking one.
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?
Reported schema coverage is 0% at the top level, and the description only partially compensates: it clarifies that projectId is inferred from the API key (so its absence is intentional) and that rid comes from the path template, while the itemId semantics come from the schema's own description ('missing or nonexistent returns 400'). The 'why there is no projectId' note is the main added value.
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 (跳转/jump) and resource (指定节目 within a stage rundown's execution), and the endpoint template pins the exact operation. It is clearly distinct from advance/shift/finish/reset in intent, though it never explicitly names those siblings to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite (requires tools:manage scope) and an odd edge case (jumping to the current item is a no-op), which is genuinely useful context. However it never says when to choose jump over execution_advance, execution_shift or execution_start, so selection guidance is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundowns_rid_execution_resetADestructive
重置执行状态。需 tools:manage 权限。任何状态回到 idle 初始态(清空 actuals 与 shiftMin);idle 时幂等。 POST /api/projects/{id}/stage-rundowns/{rid}/execution/reset 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts the reset is idempotent when idle ("idle 时幂等"), while the annotations declare idempotentHint=false; a fixed-target reset that is a no-op from idle effectively is idempotent, so the two statements conflict. Apart from that conflict the description does add real value (permission requirement, what state is destroyed — actuals and shiftMin), but the contradiction with the structured hint forces the bottom score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines, front-loaded with purpose and permission before the endpoint and the projectId caveat. Nothing is redundant, though the endpoint line is partly restated by the surrounding prose and the idempotency clause is what creates the annotation conflict.
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 destructive, single-parameter mutation with no output schema, the description covers the important ground: authorization, the target end state, what data is cleared, and how the project scope is resolved. The two omissions are the response shape (nothing is said about what the call returns) and whether child items on the rundown are also affected — minor for a reset endpoint but not exhaustive.
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 single parameter rid is a bare string with no schema-level description, so the description has to compensate. It partially does by spelling out the URL template (so the agent sees rid sits in the path and that no projectId is required because the API key determines the project), but it never explains what rid denotes (which rundown) or its format.
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 gives a specific verb+object ("重置执行状态" / reset execution state) and goes further to define the resulting state ("任何状态回到 idle 初始态", clearing actuals and shiftMin). Read against the sibling execution tools (start/advance/finish/jump/shift), an agent can tell immediately that this is the one that wipes progress back to the initial state rather than moving it forward.
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 states the operative condition clearly — the operation works from ANY current state ("任何状态") and is a no-op when already idle, plus a permission gate (tools:manage). It gives no explicit comparison against adjacent alternatives such as execution_finish or delete_stage_rundowns_rid, so it is clear context but not full when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundowns_rid_execution_shiftADestructive
累加顺延分钟。需 tools:manage 权限。minutes 须为 ±240 内整数,累加后 |shiftMin| 超过 1440 返回 400;「清零顺延」由前端发送当前 shiftMin 的相反数。未开始节目预计时间 = 计划 + shiftMin。 POST /api/projects/{id}/stage-rundowns/{rid}/execution/shift 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/non-idempotent/open-world, but the description goes well beyond them: it states the required tools:manage scope, the ±240 per-call bound, the cumulative |shiftMin| > 1440 → 400 failure mode, and the additivity semantics of the value. That is exactly the operational context an agent needs before calling a stateful mutation.
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?
Front-loaded with the action, then permission, then constraint, then the practical reset trick — a sensible ordering with no filler. It is dense and reads a bit like reference notes, but every sentence adds information the agent can act on.
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 nested-body mutation with annotations covering the safety profile and no output schema, the description supplies permissions, bounds, error behavior, and semantics — enough to call it correctly. Only the rid path parameter and any response shape remain undocumented, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage at the top level, the description carries the load and does so for minutes: integer, ±240 range, negative = advance, and the crucial fact that the value is an increment rather than an absolute. It also clarifies the rid/context (project auto-determined from API key, no projectId) but leaves rid itself 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 verb and resource: it accumulates a shift offset (顺延分钟) on a stage rundown's execution state, and explains what shiftMin means (未开始节目预计时间 = 计划 + shiftMin). An agent can tell it is the offset-mutation tool rather than a state transition, but it never names siblings like execution_jump/reset/advance to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete procedural guideline — clearing the shift is done by sending the negation of the current shiftMin — which is genuinely useful. However, it gives no explicit when-to-use guidance relative to the other execution endpoints (start/finish/advance/jump/reset), so the agent must infer which endpoint applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundowns_rid_execution_startADestructive
开始执行。需 tools:manage 权限。缺省从首节目开始;空节目单返回 400。重置执行记录后从目标节目起计(status 为 running、shiftMin 归零、actuals 仅含目标节目);finished 状态调用等于重新执行(清旧记录)。 POST /api/projects/{id}/stage-rundowns/{rid}/execution/start 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/non-idempotent annotations, it discloses the concrete state effects: execution records are reset, status becomes running, shiftMin is zeroed, actuals contain only the target item, and old records are cleared on a finished-state call. It also names the required permission scope and the 400 error condition — exactly the mutation-side context annotations cannot carry.
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?
Dense but front-loaded: the action, permission requirement, default behavior, and state effects appear in order with no filler. The endpoint line and the projectId note are useful, though the trailing note is slightly tangential to invoking 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?
For a destructive, no-output-schema mutation, it covers the essentials an agent needs: permission, default start point, error behavior, and the resulting state record changes. Only the rid parameter's meaning is left implicit.
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 reported at 0%, so the description must carry the load. It documents itemId well (default = first item, nonexistent id = 400) and explains that projectId is inferred from the API key, but the required rid path parameter is never explained in prose.
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 (开始执行) on a specific resource (stage-rundown execution) and even names the endpoint, so an agent knows exactly what this does. It does not explicitly contrast itself with the closely related siblings (execution_reset, execution_advance, execution_jump), so it falls just 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?
It gives clear conditions: default starts from the first item, an empty rundown returns 400, tools:manage permission is required, and calling it while in finished state re-runs (clearing old records). It stops short of naming when to prefer execution_reset or execution_advance instead, so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_rundowns_rid_itemsADestructive
新增节目。需 tools:manage 权限。multipart 表单;上传文件按顺序落库为 File 文档并记为节目附件。执行中禁止编排变更(409)。 POST /api/projects/{id}/stage-rundowns/{rid}/items 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive write behavior (readOnlyHint false, destructiveHint true), but the description adds meaningful context beyond them: required permission, multipart form handling, that uploaded files become ordered File documents and program attachments, the 409 error during execution, and that the project is auto-determined from the API key. This is rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the primary action, permission, form type, side effect, and execution constraint stated efficiently. Every clause carries information, though the endpoint URL is slightly redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive multipart POST with nested body and no output schema, the description covers permissions, file handling, execution conflicts, and project auto-scoping. It does not explain response format, but no output schema exists so that is less critical; the main gap is the lack of explicit sibling guidance.
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 reported as 0% at the top level, though nested properties have some descriptions. The description adds useful semantic context—multipart form, files stored in order as attachments, and that projectId is not needed—but does not explain the path rid or body fields in enough depth to fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: '新增节目' (add new program/item) to a specific stage rundown endpoint. It distinguishes itself from siblings like patch/delete item tools by action and path, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a permission prerequisite ('需 tools:manage 权限') and an execution-time constraint (409 if execution is in progress), but gives no guidance on when to use this tool versus sibling alternatives like anon_patch_stage_rundowns_rid_items_item_id or anon_post_stage_rundowns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stagesADestructive
新增项目阶段。需 project:manage 权限。不传 order 追加到末尾。返回形态同 GET。 POST /api/projects/{id}/stages 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=true and openWorldHint=true, so the mutation profile is covered. Beyond that the description adds real value: the required project:manage permission, the append-to-end default when order is omitted, and the return shape. The only caption worth noting is that the description frames this as purely additive while destructiveHint=true suggests a stronger warning profile, but this is not a direct contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by permission, default behavior, return shape, and endpoint. The literal `POST /api/projects/{id}/stages` line is somewhat redundant given the tool name and schema, but overall the text is tight and every other sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by stating the return shape matches GET. Combined with the permission requirement, the absent projectId, and the order default, an agent has enough to invoke this correctly; only the exact response fields remain unspecified.
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% across the nested body, so the description must compensate. It explains the optional order parameter's default behavior (appended to end if omitted) and clarifies that projectId is NOT needed because the project is derived from the API key — meaningful semantics the schema does not convey. Only the name field is left self-evident rather than explained.
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 (新增项目阶段 / add a project stage) in the first clause, which cleanly separates it from sibling mutations like anon_patch_stages_stage_id, anon_patch_stages_reorder, and anon_delete_stages_stage_id. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite (需 project:manage 权限) and a default-behavior note, which is useful context for deciding whether the call will succeed. However, it never states when to use this tool versus the update/reorder siblings, nor any exclusion conditions; usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_signupsADestructive
创建报名批次。需 tools:manage 权限(project:manage 等价放行,超管不受限)。name trim 后非空;startAt/endAt 须为可解析时间;endAt 必须晚于 startAt。 POST /api/projects/{id}/stage-signups 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful context beyond the annotations (which already flag destructive=true, idempotent=false, readOnly=false): the required permission scope, the super-admin/equivalent-permission bypass, and the auto-resolved project id. It does not describe what side effects the created batch triggers, but the safety profile is well covered.
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?
Purpose is front-loaded, followed by permission, validation constraints, and the route in compact lines with no filler. Dense but every sentence carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the definition covers permissions, validation rules, and the project-resolution behavior an agent needs to call it correctly. Return shape is unspecified, but no output schema exists so that is not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description reinforces and sharpens the schema's own field descriptions by adding validation semantics: name must be non-empty after trim, startAt/endAt must be parseable times, and endAt must be later than startAt. Only the optional 'note' field carries no added meaning, so it compensates well for the reported low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (创建报名批次 / create signup batch) and the HTTP route, so an agent knows it creates a new batch rather than adding items to one. It is clear but does not explicitly contrast itself with siblings like anon_post_stage_signups_sid_items or the get/delete variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides prerequisites and context (requires tools:manage, project inferred from the API key so projectId is not needed), which is useful gating. However, it gives no when-to-use/when-not guidance or routing to alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_signups_sid_importADestructive
导入已通过节目到 Rundown。需 tools:manage 权限。目标 Rundown 必须属于本项目;把全部 approved 节目按追加语义(不去重)追加到该 Rundown 条目末尾。无 approved 节目返回 400「没有已通过的节目可导入」。 POST /api/projects/{id}/stage-signups/{sid}/import 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/non-idempotent, but the description goes further: it explains the append-with-no-dedup semantics that justify those hints, states the permission requirement, the project-membership constraint on the destination, and the exact 400 failure condition. This is substantive behavior beyond the structured fields.
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?
Front-loads the purpose, then constraints, semantics, and error behavior in compact sentences; the note about projectId being auto-derived earns its place by preventing a wrong call. Slightly dense but no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-parameter mutation with no output schema and no annotations gap, it covers permissions, destination constraints, append semantics, and the error case. It does not describe the success response (e.g., what gets imported/how many), the one remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden. It clarifies that projectId is derived from the API key and must not be passed, and identifies the target Rundown, but leaves `sid` explained only implicitly by the URL. Partial compensation, not full.
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 precise verb (导入/import) and resource (已通过节目 / approved signups) plus the destination (Rundown), which cleanly separates it from siblings like anon_post_stage_signups_sid_items (add items individually) and anon_post_stage_rundowns (create a rundown). An agent can identify the operation without opening the schema.
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?
Gives clear context: requires tools:manage permission, the target Rundown must belong to the current project, and approval status is a precondition (no approved entries yields 400). It does not explicitly route to an alternative tool, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_stage_signups_sid_itemsADestructive
新增报名节目。需 tools:manage 权限。name trim 后非空;durationMin 为 1–1440 整数;participants 每项取 cn/contact trim,过滤空 cn。新节目 status 默认 pending。 POST /api/projects/{id}/stage-signups/{sid}/items 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=false/readOnly=false/openWorld/idempotent=false, so the write-and-unsafe profile is covered. The description adds real value beyond them: the required tools:manage permission, the "新节目 status 默认 pending" default state, name/participant trim rules, and that projectId is derived from the API key rather than passed. Return behavior is not described, but that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by dense but useful validation rules, defaults and the route. The semicolon-chained validation clauses are information-rich with little waste, though the string is dense and could be segmented more clearly.
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 mutation endpoint with annotations covering the safety profile and no output schema, the description supplies permission requirements, input validation, default status and the auto-scoped project. Missing only edge-case behaviour (e.g. duplicate programs, error responses), which is peripheral to 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?
Schema description coverage is signalled at 0%, so the description must carry the load and it largely does: name must be non-empty after trim, durationMin is an integer 1–1440, and participant items take trimmed cn/contact with empty cn filtered out. It also clarifies that projectId must not be supplied. Only the sid path parameter's meaning is left implicit.
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 (报名节目), and the route line pins it to POST .../stage-signups/{sid}/items. It is distinguishable from anon_post_stage_signups (creates the session) and anon_post_stage_signups_sid_import (bulk import), though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the route and the "需 tools:manage 权限" precondition, which tells the agent it needs a specific permission. However, there is no explicit when-to-use guidance and no routing advice against the near-neighbour siblings (post_stage_signups, post_stage_signups_sid_import).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_todosBDestructive
创建待办。需 todo:create 权限(project:manage 等价放行)。 POST /api/projects/{id}/todos 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true). The description adds context annotations do not carry: the authorization requirement and the fact that the target project is scoped automatically from the API key. That scoping/authorization detail is genuinely valuable for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, front-loaded with the action, then permission requirement, then endpoint and scoping rule. Terse and well-ordered with 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?
No output schema exists, so return values need not be described, and annotations cover the safety profile. The definition supplies auth and project-scoping context but omits any explanation of the required nested body payload, which is the main gap for a create tool with a 7-field nested object.
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, yet it only states a negative fact (projectId must NOT be passed). The nested body fields (title, note, dueAt, nodeAt, category, remindAt, assigneeIds) are left entirely unexplained, so an agent gets little help on the fields it actually has to supply.
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 ('创建待办' / create a todo) and gives the underlying endpoint POST /api/projects/{id}/todos, so the operation is unambiguous. It does not differentiate itself from sibling create tools (e.g. anon_post_todos_template_import), but the core purpose is clear.
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 names the required permission (todo:create, with project:manage as an equivalent) and clarifies that projectId is auto-derived from the API key, which is useful invocation context. However, it gives no explicit when-to-use vs. alternatives or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_todos_template_importADestructive
导入待办模板。需 todo:manage 权限。以 date 为新锚点批量生成待办(无指派人)。 POST /api/projects/{id}/todos/template/import 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/openWorld/not-idempotent, but the description adds genuine operational context beyond them: the todo:manage permission gate, batch creation semantics, no-assignee outcome, and implicit project scoping. It stops short of describing what happens to pre-existing todos on re-import, which matters for a non-idempotent, destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the action and permission front-loaded, followed by the endpoint and the project-scoping clarification. No filler, every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent import with no output schema, the description covers permission, scope and generation behavior adequately. The remaining gap is the result/effect on existing todos, but the destructive annotation already signals mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains that date becomes the new anchor and that template drives generation, adding conceptual meaning; it also documents a non-parameter (projectId) that the caller might otherwise supply. With only a single body parameter the schema cannot carry this, so the description compensates well.
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 precise verb+resource (导入待办模板 / import todo template) and adds the distinguishing behavior: batch-generates todos anchored on date, with no assignee. This clearly separates it from the sibling anon_get_todos_template_export and from anon_post_todos.
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?
Gives the required permission (todo:manage) and clarifies that projectId is not needed because the project is derived from the API key, which preempts a likely misuse. It does not explicitly frame when to prefer the export sibling or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_todos_todo_id_completeADestructive
完成待办。需 todo:manage,或「当前用户是指派人且有 todo:complete」。置 status=done,记录完成人/时间/备注,文件入附件。 POST /api/projects/{id}/todos/{todoId}/complete 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false, but the description adds substantive behavior: status is set to done, completer/timestamp/note are recorded, files go to attachments. It also discloses the key routing behavior that the project is derived from the API key. It does not confirm whether the action is reversible.
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?
Compact and front-loaded: action first, then permissions, then effects, then endpoint, then a routing note. No filler sentences. The parenthetical definition of the permission alternative is the only slightly dense clause.
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 mutation tool with four annotations and no output schema, the description covers auth, side effects, status transition, and the non-obvious project-from-key routing. It leaves open whether completion is reversible or triggers notifications, a minor but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning. It covers completionNote and the files-as-attachments flow, and clarifies that no projectId is needed. It does not explain effective file size limits or the required base64 format, which the nested schema does 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?
States a specific verb (complete) and resource (todo), with the endpoint POST /api/projects/{id}/todos/{todoId}/complete. Distinguishes itself from sibling anon_patch_todos_todo_id and anon_post_todos_todo_id_updates by being the dedicated completion action.
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?
Explicitly states authorization preconditions: requires todo:manage, or the current user is the assignee with todo:complete. This gives clear when-you-may-use guidance, though it doesn't name alternative tools for updating todos without completing them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_todos_todo_id_updatesADestructive
追加待办进度。权限同完成端点。向待办追加一条进度(不可编辑/删除);备注与附件至少其一非空。 POST /api/projects/{id}/todos/{todoId}/updates 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag non-readOnly, non-idempotent, open-world and destructive behavior. The description adds meaningful behavioral context beyond them: the entry is immutable (cannot be edited or deleted), it requires the same permissions as the complete endpoint, and the project is inferred from the API key rather than supplied.
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 text is compact and front-loads the action and its key constraint, followed by the endpoint and project-id note. Every sentence carries information, though the trailing HTTP path and projectId note are somewhat redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested body objects and no output schema, the description covers the essential ground: what is appended, immutability, permission requirements, the note/files constraint, and endpoint scoping. Only per-parameter detail and any response expectations remain unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With top-level schema description coverage at 0%, the description carries the burden and partially compensates by stating the cross-field rule ('note and attachment at least one non-empty') and by confirming no projectId is needed (leaving only todoId in the path). However, it does not explain the body/path parameters individually beyond that.
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 gives a specific verb and resource — appending a progress entry to a todo — and clarifies it is append-only (cannot be edited/deleted), which separates it from anon_patch_todos_todo_id. It also references the complete endpoint for permission parity, though it does not name the sibling tools directly.
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 mostly implied: 'permissions same as complete endpoint' and 'project is auto-determined, no need to pass projectId' give operational context, and the note/files constraint is a real precondition. However, there is no explicit statement of when to choose this over patch_todos_todo_id or complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_work_modulesADestructive
创建任务模块。需 work:manage 权限(project:manage 等价放行,超管不受限)。assigneeIds 必须全部为项目成员;创建后通知被分配成员。 POST /api/projects/{id}/work-modules 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), destructive, openWorld, and non-idempotent, so the safety profile is covered. The description adds meaningful context beyond them: the auth/permission model and the side effect that assigned members are notified after creation.
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?
Front-loads the action, then permissions, constraints, endpoint, and the projectId note in a tight structure with zero filler. Every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, it covers permissions, assignee constraints, side effects, and project resolution well. It does not indicate what the creation returns (e.g., the new module id), which would help an agent chain follow-up calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across a nested 7-field body, so the description carries the burden and only partly compensates. It adds real meaning for assigneeIds (must all be project members) and clarifies that no projectId is needed, but leaves name/endAt/startAt/location/description/requiredCount to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"创建任务模块" states a specific verb (create) and resource (task/work module), cleanly separating it from CRUD siblings like anon_get_work_modules, anon_patch_work_modules_mid, and anon_delete_work_modules_mid. An agent can identify the operation without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete prerequisites and context: requires work:manage (project:manage grants equivalent, super-admin unrestricted), assigneeIds must be project members, and the project is auto-derived from the API key. It gives clear operational context but does not explicitly name alternative tools or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_work_modules_mid_checkinBDestructive
任务签到。记录 checkedInAt;重复签到幂等,不刷新时间戳。请求体与权限同 confirm(不传 userId 为本人签到,项目成员即可)。 POST /api/projects/{id}/work-modules/{mid}/checkin 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts '重复签到幂等' (repeat check-ins are idempotent and do not refresh the timestamp), which directly contradicts the annotation idempotentHint=false. It also says nothing about the destructiveHint=true annotation, leaving the agent with conflicting safety signals.
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?
Front-loads the action and its key behavioral note (idempotency, checkedInAt), then permissions, then the endpoint. Dense but every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param, nested-body POST with no output schema, the description covers permissions, defaulting, and the side effect. However it omits any description of the response and provides no explanation of the destructive behavior the annotations advertise, and its idempotency claim conflicts with them.
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?
Only 2 parameters with 0% schema description coverage, so the description must carry the load: it explains that body.userId defaults to self and that mid is the work-module id in the path, and that projectId is not needed. Semantics of both parameters are effectively covered.
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+resource (任务签到 / work-module check-in) and records the concrete side effect (checkedInAt), plus the endpoint. It also names the confirm sibling it parallels. The 'same body/permissions as confirm' phrasing blurs the boundary slightly, but an agent can still tell check-in apart from confirm/unconfirm.
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?
Gives concrete invocation context: omitting userId means self check-in, project members are sufficient, and projectId is derived from the API key. It does not explicitly say when to prefer this over confirm/unconfirm, but the permission and defaulting guidance removes most ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_work_modules_mid_confirmADestructive
确认任务分配。确认成员与模块的分配关系,记录确认时间与确认人;重复确认幂等,不刷新时间戳。不传 userId 为确认本人(项目成员即可);传 userId 为代他人确认,需 work:manage 或 project:manage。 POST /api/projects/{id}/work-modules/{mid}/confirm 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims '重复确认幂等,不刷新时间戳' (repeated confirmation is idempotent, does not refresh timestamp), but the annotation declares idempotentHint=false. This directly contradicts a structured behavioral hint. It does add useful context (records confirmer/time, permission requirements), but the contradiction dominates.
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?
Front-loaded with the action, then behavioral notes, then parameter conditions, then the endpoint. Dense but each sentence carries information; minimal 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 mutation tool with no output schema, it covers the endpoint, project scoping, permission model, and side effects (records time/confirmer) — but the idempotency claim is wrong, leaving the agent with an inaccurate behavioral model.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load. It explains userId semantics (default self, on-behalf requires elevated scopes) and clarifies that projectId is unnecessary because the project is derived from the API key, compensating well for the sparse schema descriptions and nested body/path structure.
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 (确认/confirm) and resource (成员与模块的分配关系/task assignment) plus the exact endpoint. It is clearly distinguishable from siblings like anon_post_work_modules_mid_unconfirm, _checkin, and _finish.
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?
Gives clear conditional usage: omit userId to confirm for yourself (project-member permission suffices), pass userId to confirm on behalf of another (requires work:manage or project:manage). It does not explicitly contrast with the unconfirm/checkin/finish siblings, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_work_modules_mid_finishBDestructive
标记任务完成。记录 completedAt;未签到的成员同时补签到;重复完成幂等,不刷新时间戳。请求体与权限同 confirm。 POST /api/projects/{id}/work-modules/{mid}/finish 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 『重复完成幂等,不刷新时间戳』 (repeated completion is idempotent, the timestamp is not refreshed), while annotations declare idempotentHint=false. This is a direct, material contradiction about the operation's repeat behavior, which is exactly the trait an agent relies on to decide whether re-calling is safe.
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 action and its side effects are front-loaded, followed by the endpoint and the auth note. Every sentence adds information (completion, check-in, idempotency, auth), though packing four traits into one run-on sentence hurts scannability slightly.
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 nested-body POST mutation with no output schema, the description covers the side effects, the source of project scoping, and the body/permission source. It is close to complete, but the body parameter is only defined by reference and the (erroneous) idempotency claim undercuts what an agent needs for safe retries.
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 the burden. It usefully clarifies that projectId is derived from the API key and that the body matches confirm, but it never explains the userId body field (target member / defaults to self) and defers the body definition to another tool, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource (『标记任务完成』 = mark the task finished) and names the concrete side effects it records (completedAt, supplementary check-in for un-checked-in members). It is clearly distinguishable from its siblings confirm/checkin/unconfirm, and it points to confirm as the reference for body/permissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives implied usage context (idempotent repeat calls, request body/permissions same as confirm) but never states when to prefer this tool over confirm, checkin, or unconfirm, nor when-not to call it. The cross-reference to confirm is helpful but the when-to-use decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_post_work_modules_mid_unconfirmADestructive
取消任务确认。清除 confirmedAt/confirmedBy。请求体与权限同 confirm。 POST /api/projects/{id}/work-modules/{mid}/unconfirm 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds real value beyond that by specifying exactly what state is destroyed (confirmedAt/confirmedBy) and that the project is inferred from the API key rather than passed in.
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 core action and the fields it clears are front-loaded in one line, followed by the reuse note and endpoint. It is tight and well-ordered, with only mild redundancy in restating the route.
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 mutation tool with no output schema, the description covers the essential context: what state changes, that permissions mirror confirm, and that the project comes from the key. The unaddressed mid path parameter is the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0% with two parameters, so the description carries weight. It usefully states no projectId is needed and that the body matches confirm, but the mid path parameter itself is never explained, leaving the parameter semantics only partially compensated.
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 (取消任务确认 / unconfirm) and names the exact fields it clears (confirmedAt/confirmedBy), so the operation is unambiguous. It is clearly the inverse of the sibling confirm tool, though it never names that sibling explicitly to sharpen the contrast.
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 tells the agent that the request body and permissions are identical to confirm, which helps route usage. However, it never says when to unconfirm versus when not to, nor points to confirm as the counter-operation by name, so usage remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anon_put_stage_signups_sid_items_item_id_reviewADestructive
投票(按当前用户 upsert)。需 tools:manage 权限。已有本人投票则覆盖 decision/comment/updatedAt,否则新增;只记录意见,不改变节目状态;其余 decision 值 400「无效的投票」。 PUT /api/projects/{id}/stage-signups/{sid}/items/{itemId}/review 项目由当前 API 密钥自动确定,无需传 projectId。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety flags, but the description adds important behavior: permission requirement, upsert overwrite semantics for decision/comment/updatedAt, creation when no prior vote exists, no program-state change, and a 400 error for invalid decision values. These are concrete traits beyond annotations and do not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action, then gives permissions, side effects, error behavior, endpoint, and project-scoping note. Every sentence adds useful information and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and existing annotations, it covers auth, side effects, error behavior, and project scoping well. It is slightly incomplete because it does not describe the response shape or the meanings of sid and itemId.
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 clarifies body fields decision/comment, invalid decision handling, and that projectId is not needed, but it does not explain the path parameters sid and itemId beyond the URL shape. This is partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('投票' / upsert by current user) on a specific resource (stage-signup item review), and clarifies scope by saying it only records an opinion and does not change program status. This distinguishes it from status-changing sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies the required 'tools:manage' permission and indicates the tool is for recording an opinion rather than changing state. It does not explicitly name alternatives or when-not-to-use cases, so it gives clear context but not full routing guidance.
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.
142 tool updates
v0.1.0- First observed
anon_delete_accounts_account_id - First observed
anon_delete_announcements_announcement_id - First observed
anon_delete_custom_tools_tool_id - First observed
anon_delete_finance_tx_id - First observed
anon_delete_lostfound_item_id - First observed
anon_delete_materials_resource_id - First observed
anon_delete_materials_types_type_id - First observed
anon_delete_members_user_id - First observed
anon_delete_milestones_milestone_id - First observed
anon_delete_physical_categories_cat_id - First observed
anon_delete_physical_items_item_id - First observed
anon_delete_qq_binding_group_open_id - First observed
anon_delete_roles_role_name - First observed
anon_delete_stage_rundowns_rid - First observed
anon_delete_stage_rundowns_rid_items_item_id - First observed
anon_delete_stage_signups_sid - First observed
anon_delete_stage_signups_sid_items_item_id - First observed
anon_delete_stage_signups_sid_items_item_id_review - First observed
anon_delete_stages_stage_id - First observed
anon_delete_todos_todo_id - First observed
anon_delete_work_modules_mid - First observed
anon_get_accounts - First observed
anon_get_activities - First observed
anon_get_announcements - First observed
anon_get_announcements_announcement_id_confirmations - First observed
anon_get_custom_tools - First observed
anon_get_dashboard - First observed
anon_get_dashboard_my_actions - First observed
anon_get_dashboard_preferences - First observed
anon_get_dashboard_schedule - First observed
anon_get_dashboard_summary - First observed
anon_get_finance - First observed
anon_get_finance_export - First observed
anon_get_health - First observed
anon_get_lostfound - First observed
anon_get_lostfound_item_id - First observed
anon_get_lostfound_item_id_photo - First observed
anon_get_lostfound_share - First observed
anon_get_materials - First observed
anon_get_materials_resource_id - First observed
anon_get_materials_resource_id_preview - First observed
anon_get_materials_resource_id_versions - First observed
anon_get_materials_resource_id_versions_version_download - First observed
anon_get_materials_resource_id_versions_version_preview - First observed
anon_get_materials_types - First observed
anon_get_milestones - First observed
anon_get_onsite - First observed
anon_get_onsite_incidents - First observed
anon_get_open_me - First observed
anon_get_physical_categories - First observed
anon_get_physical_items - First observed
anon_get_physical_items_item_id - First observed
anon_get_physical_items_item_id_logs - First observed
anon_get_physical_summary - First observed
anon_get_project - First observed
anon_get_risks - First observed
anon_get_stage_rundowns - First observed
anon_get_stage_rundowns_rid - First observed
anon_get_stage_rundowns_rid_screen_share - First observed
anon_get_stage_signups - First observed
anon_get_stage_signups_sid - First observed
anon_get_stages - First observed
anon_get_todos - First observed
anon_get_todos_template_export - First observed
anon_get_work_modules - First observed
anon_get_work_sheet - First observed
anon_get_work_sheet_user_id - First observed
anon_patch_accounts_account_id - First observed
anon_patch_announcements_announcement_id - First observed
anon_patch_custom_tools_tool_id - First observed
anon_patch_dashboard_preferences - First observed
anon_patch_finance_ticket - First observed
anon_patch_finance_tx_id - First observed
anon_patch_lostfound_item_id - First observed
anon_patch_lostfound_item_id_status - First observed
anon_patch_materials_resource_id - First observed
anon_patch_materials_types_type_id - First observed
anon_patch_members_user_id - First observed
anon_patch_milestones_milestone_id - First observed
anon_patch_physical_categories_cat_id - First observed
anon_patch_physical_categories_reorder - First observed
anon_patch_physical_items_item_id - First observed
anon_patch_project - First observed
anon_patch_qq_binding_group_open_id - First observed
anon_patch_roles_role_name - First observed
anon_patch_stage_rundowns_rid - First observed
anon_patch_stage_rundowns_rid_items_item_id - First observed
anon_patch_stage_rundowns_rid_items_reorder - First observed
anon_patch_stage_signups_sid - First observed
anon_patch_stage_signups_sid_items_item_id - First observed
anon_patch_stage_signups_sid_items_item_id_status - First observed
anon_patch_stages_reorder - First observed
anon_patch_stages_stage_id - First observed
anon_patch_todos_todo_id - First observed
anon_patch_work_modules_mid - First observed
anon_post_accounts - First observed
anon_post_announcements - First observed
anon_post_announcements_announcement_id_confirm - First observed
anon_post_custom_tools - First observed
anon_post_files - First observed
anon_post_finance - First observed
anon_post_invites - First observed
anon_post_lostfound - First observed
anon_post_materials - First observed
anon_post_materials_resource_id_versions - First observed
anon_post_materials_types - First observed
anon_post_milestones - First observed
anon_post_milestones_milestone_id_complete - First observed
anon_post_onsite_incidents - First observed
anon_post_onsite_incidents_iid_resolve - First observed
anon_post_physical_categories - First observed
anon_post_physical_items - First observed
anon_post_physical_items_item_id_log - First observed
anon_post_qq_bind_code - First observed
anon_post_risks_evaluate - First observed
anon_post_risks_risk_id_ignore - First observed
anon_post_risks_risk_id_restore - First observed
anon_post_roles - First observed
anon_post_stage_rundowns - First observed
anon_post_stage_rundowns_rid_execution_advance - First observed
anon_post_stage_rundowns_rid_execution_finish - First observed
anon_post_stage_rundowns_rid_execution_jump - First observed
anon_post_stage_rundowns_rid_execution_reset - First observed
anon_post_stage_rundowns_rid_execution_shift - First observed
anon_post_stage_rundowns_rid_execution_start - First observed
anon_post_stage_rundowns_rid_items - First observed
anon_post_stage_signups - First observed
anon_post_stage_signups_sid_import - First observed
anon_post_stage_signups_sid_items - First observed
anon_post_stages - First observed
anon_post_todos - First observed
anon_post_todos_template_import - First observed
anon_post_todos_todo_id_complete - First observed
anon_post_todos_todo_id_updates - First observed
anon_post_work_modules - First observed
anon_post_work_modules_mid_checkin - First observed
anon_post_work_modules_mid_confirm - First observed
anon_post_work_modules_mid_finish - First observed
anon_post_work_modules_mid_unconfirm - First observed
anon_put_lostfound_share - First observed
anon_put_stage_rundowns_rid_screen_share - First observed
anon_put_stage_signups_sid_items_item_id_review
TDQS
Scored across 142 tools
Most tools are clearly distinguished by resource and HTTP method encoded in the name (e.g., get/delete/create on distinct domain objects), and descriptions add permission and behavior detail. However, the sheer number of similar endpoints—especially dashboard aggregates, material previews/downloads, and rundown execution controls—creates real selection friction for an agent.
Every tool follows the same anon_<method>_<resource_path>_<identifier> snake_case pattern, derived predictably from the underlying REST route. The convention is uniform across all 142 tools with no mixing of camelCase or vague verbs.
142 tools is an extreme surface that vastly exceeds practical agent navigation, far beyond the 25+ threshold. While the underlying API is broad, exposing essentially every REST endpoint as a separate MCP tool creates overwhelming choice and high misselection risk.
The surface provides deep multi-module lifecycle coverage: CRUD for stages, milestones, todos, materials, physical inventory, finance, lostfound, announcements, roles, members, risks, work modules, rundowns, signups, accounts, and custom tools, plus execution and sharing flows. Only very peripheral operations like project creation/deletion are absent, which is appropriate for a project-scoped API-key context.
Maintenance
Related MCP Connectors
- TypeshipOAuthdev.typeship
Generate a typed SDK, CLI, and MCP server from any OpenAPI or GraphQL spec, and keep them current.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
327 dev tools via REST API and MCP. Generate Dockerfiles, schemas, K8s, APIs, and more.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceGenerates safe-by-default MCP servers from OpenAPI specs, exposing only low-risk GET tools and blocking write operations.5MIT
- AlicenseNot gradedqualityCmaintenanceA local-first FastAPI and MCP safety kit for turning internal HTTP APIs into controlled MCP tools, with per-tool scopes, quotas, audit events, and default-deny web-access boundaries.MIT
- FlicenseNot gradedqualityDmaintenanceTurns OpenAPI specs into MCP tools with secure defaults, risk inspection, confirmation gates, response limits, audit logging, and secret redaction.-
- AlicenseNot gradedqualityCmaintenanceConvert any OpenAPI spec into a secure MCP server with scoped auth, per-tool allow/deny policies, rate limiting, and a redacted audit trail.10 npmMIT