gzh-mcp
Provides tools for managing and publishing WeChat Official Account content, including uploading content and cover images, creating/updating/listing drafts, submitting drafts for publication, and checking publish status.
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., "@gzh-mcpcreate a draft from this HTML and verify it"
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.
gzh-mcp
微信公众号管理 MCP server。把草稿发布、素材、统计、用户标签、菜单、评论、 群发、定向推送与常用基础接口封装成标准 MCP 工具,供本机 MCP 客户端(Claude Code、Codex CLI 等)调用。
不做排版:
create_draft接受 HTML,Markdown → 微信 HTML 由调用方完成。完整启用后共 57 个工具;自动发布和群发分别受独立环境变量控制。
不持久化业务状态;只有下载工具会按调用方指定的路径写文件,且拒绝覆盖。
凭据只从环境变量注入,错误信息中的 secret 和 access token 会脱敏。
工具清单
域 | 工具 | 注册规则 |
v1 草稿发布(10) |
| 除 |
发布补充(3) |
| 默认注册;删除需 |
素材(8) |
| 默认注册;删除需确认,下载拒绝覆盖已有文件 |
数据统计(1) |
| 默认注册;支持的 report 与时间跨度会前置校验 |
用户与标签(14) |
| 默认注册;删除标签需确认 |
菜单(6) |
| 默认注册;删除需确认 |
评论(3) |
| 默认注册 |
群发(5) |
| 前 3 个需开启群发闸门;发送还需 |
定向推送(3) |
| 默认注册;每次发送需 |
杂项(4) |
| 默认注册 |
明确不实现:sns/*、shorturl、getarticletotal、群发速度配置、模板行业配置、
genShortKey、Markdown 排版与内容合规检查。
Related MCP server: mcp-server-wechat-mp
安全模型
发布、群发、定向推送和删除会改变外部状态,本 server 采用以下控制:
注册闸门(安装时):环境变量
GZH_MCP_ALLOW_PUBLISH为1或小写true(严格匹配,0/false/TRUE/空串均不生效)时,publish_draft才会出现在工具列表。MCP 客户端缓存工具列表,修改后需重启客户端。确认闸门(每次调用):
publish_draft必须显式传confirm=true, 否则直接拒绝,不发出任何 HTTP 请求。群发双闸门:
GZH_MCP_ALLOW_MASS_SEND必须严格为1或小写true,mass_send_by_tag、mass_send_by_openids、preview_mass_message才注册;前两者 还必须传非空clientmsgid和confirm=true。逐次确认:删除类工具以及客服、模板、订阅通知发送工具必须显式传
confirm=true;校验失败不会发 HTTP 请求。
其他安全相关行为:
WECHAT_SECRET与 access_token 全链路脱敏,不出现在错误信息、日志或 stdout;stdout 只承载 MCP JSON-RPC 协议,诊断信息一律写 stderr。非幂等接口(创建草稿、发布、群发与定向推送)遇网络传输错误返回 「状态不确定」错误并禁止自动重试,防止重复建稿、重复提交。
只读接口遇传输错误、HTTP 5xx 或微信
errcode=-1时最多退避重试一次。create_draft前置拦截:非微信域正文图 URL(微信会过滤外链图)、<script>、超长标题/摘要/正文;图片按文件魔数校验真实格式。创建草稿后自动回读验证(标题、图片数、正文长度),微信清洗了内容时 返回
verified=false+ 差异详情,不静默成功。发布结果带脱敏 appid 前缀、草稿标题、media_id,便于调用方核对目标账号。
前置要求
Python 3.12+ 与 uv
公众号的 AppID / AppSecret(公众平台官网 → 设置与开发 → 基本配置)
IP 白名单:获取 access_token 的出口 IP 必须加入公众号 IP 白名单, 否则报
40164发布权限:
freepublish/*仅对已认证账号开放,个人主体/未认证账号 通常返回48001。草稿与素材接口不受此限制
安装
git clone https://github.com/onlyoasis/gzh-mcp.git
cd gzh-mcp
uv sync
uv run pytest # 验证安装客户端配置
MCP 客户端的 stdio server 配置(JSON):
{
"mcpServers": {
"gzh": {
"command": "uv",
"args": ["run", "--directory", "/path/to/gzh-mcp", "gzh-mcp"],
"env": {
"WECHAT_APPID": "<你的 AppID>",
"WECHAT_SECRET": "<你的 AppSecret>",
"GZH_MCP_ALLOW_PUBLISH": "0",
"GZH_MCP_ALLOW_MASS_SEND": "0"
}
}
}
}Claude Code 也可用命令行注册:
claude mcp add gzh -s user \
-e WECHAT_APPID=<你的 AppID> \
-e WECHAT_SECRET=<你的 AppSecret> \
-- uv run --directory /path/to/gzh-mcp gzh-mcp环境变量
变量 | 必填 | 说明 |
| 是 | 公众号 AppID |
| 是 | AppSecret,仅经环境变量注入,不落任何文件 |
| 否 |
|
| 否 |
|
典型工作流
发布一篇已排版的文章(HTML):
1. check_credentials → 确认凭据与 IP 白名单正常
2. upload_cover_image(cover.png) → 得到 thumb_media_id
3. upload_content_image(a.png) ... → 得到微信图片 URL,替换正文中的 src
4. create_draft([{title, content, → 创建草稿,返回 media_id + verified
thumb_media_id, digest}])
5. 人工在公众号后台复核草稿,发布开启自动发布后(GZH_MCP_ALLOW_PUBLISH=1):
6. publish_draft(media_id, confirm=true) → 提交发布,返回 publish_id
7. get_publish_status(publish_id) → 轮询:0 成功 / 1 发布中 /
2 原创失败 / 3 常规失败 /
4 审核不通过 / 5、6 成功后被删/封禁已知约定与限制
server 无本地状态:
media_id → publish_id映射由调用方记录,事后对账用list_published。file_path参数指 MCP server 所在主机的本地文件;server 与客户端须同机, 不支持远程部署(若需远程部署,必须先重新评审文件路径信任边界)。get_material、download_temp_media的save_path也位于 MCP server 主机; 自动创建父目录,但目标文件存在时拒绝覆盖。发布为异步语义:提交成功(拿到 publish_id)不等于文章发布成功,以
get_publish_status终态为准。正文图限制:jpg/png 且严格小于 1MB;封面支持 jpg/png/gif/bmp,≤10MB。
标题 ≤ 32 字符;摘要官方上限 128 字符(本工具按 120 保守限制);正文 < 2 万字符。
开发
uv sync # 安装依赖
uv run pytest # 全量测试
uv run pytest --cov=gzh_mcp --cov-report=term-missing # 覆盖率
uv run gzh-mcp # 本地启动(stdio)测试全部使用 mock,不会真实调用微信 API。本项目要求回归测试通过 「红灯验证」:修改行为前先确认对应测试在退化实现下真的失败。
文档
docs/proposal.md —— 设计方案 v1.0(工具清单、安全模型、 错误分层、验收标准)
docs/codex-review.md —— 独立 AI 评审记录
docs/api-verification.md —— 官方接口字段与 依赖版本的查证证据
docs/task-implement-v1.md —— v1 实现任务书 (含 10 条行为契约与测试要求)
docs/proposal-v2.md —— v2 设计契约(47 个新增工具)
docs/task-implement-v2.md —— v2 实现任务书 (含 B13~B24 行为契约)
License
Available Tools
53 toolsbatch_get_user_infoARead-onlyIdempotent
批量获取用户基本信息。
| Name | Required | Description | Default |
|---|---|---|---|
| openid_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral context beyond that, such as maximum batch size, rate limits, handling of invalid openids, or ordering of results. It simply restates the 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?
A single, concise sentence with no filler or redundancy. The core action and resource are front-loaded, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only batch operation with an output schema and safety annotations, the description is serviceable. However, it omits operational details like batch size caps, behavior for unknown openids, and explicit relationship to get_user_info, leaving an agent without guarantees needed for robust invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that openid_list contains user identifiers by referring to 用户基本信息, but it does not explain what an openid is, list length limits, or behavior for empty or invalid entries. Adds minimal meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '批量获取用户基本信息' states a specific verb (batch get) and resource (user basic information). The batch modifier clearly distinguishes it from sibling get_user_info, so an agent can identify this as the multi-user variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided about when to use this tool versus get_user_info. The batch prefix implies use for multiple openids, but the description does not explicitly name the single-user alternative or state when-not-to-use. Guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blacklist_usersC
批量拉黑用户。
| Name | Required | Description | Default |
|---|---|---|---|
| openid_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnly=false, openWorldHint=true, idempotent=false, and destructive=false, and the description adds no behavioral context beyond the action itself. It does not explain consequences of blacklisting, reversibility, required permissions, rate limits, or failure behavior. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded phrase with no filler or redundant wording. It is very concise, though so terse that it leaves some behavioral and contextual details unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter mutating tool with annotations and an output schema, the description is minimally adequate: it names the operation and target. However, it lacks any mention of batch limits, side effects, how it relates to list_blacklist/unblacklist_users, or error handling, so an agent has to infer important operational 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?
The input schema only shows openid_list as an array of strings with 0% description coverage. The description adds meaning by implying that the openid_list contains users to be blacklisted, which is useful. However, it does not specify batch size limits, whether invalid openids are ignored, or other constraints on the 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 '批量拉黑用户' (batch blacklist users) states a specific verb and resource, and the 'batch' qualifier clarifies that multiple users are targeted at once. It is essentially a slight restatement of the tool name, but it is clear enough that an agent can tell it performs blacklisting rather than listing or unblacklisting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus sibling tools such as list_blacklist or unblacklist_users. No conditions, prerequisites, or alternative tool references are provided, so the agent must infer usage entirely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_credentialsARead-onlyIdempotent
验证公众号凭据和 IP 白名单;成功不代表拥有发布权限。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond annotations by warning that a successful result does not guarantee publishing permission, which is critical for agent decidsion-making. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the action and target front-loaded, and the important caveat delivered compactly after a semicolon. Every clause adds value, and there is no redundant or filler wording.
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 zero parameters, clear annotations, and an output schema present, the description fully covers the essentials: what is verified and a key behavioral limitation. An agent has enough context to select and invoke this 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?
The tool accepts zero parameters, so the semantic baseline is 4 and no parameter explanations are necessary. The description appropriately focuses on behavior rather than fields that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('验证' / verify) targeting a specific resource ('公众号凭据和 IP 白名单'), which clearly distinguishes it from data-retrieval or mutation siblings such as get_server_ips and create_draft. The caveat about publishing permission further sharpens its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a pre-flight check before publication and notes a limitation, but it does not explicitly state when to use it instead of alternatives or what conditions would make it unnecessary. Since no sibling tool duplicates this exact function, the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_materialsARead-onlyIdempotent
获取各类型永久素材数量。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds minimal behavioral detail beyond stating that it retrieves counts, which is appropriate for a simple read operation but does not add extra context such as scoping or counting semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that states the core function without any redundant information. It is appropriately sized given the tool's zero parameters and simple read-only behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: no parameters, read-only annotations, and an output schema exists. The description sufficiently indicates what the tool returns (counts of permanent materials by type) without needing to enumerate return fields, since the output schema handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is effectively 100% and description cannot add parameter-level meaning. The baseline of 4 applies because there are no parameter semantics to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('获取'/get) and resource ('各类型永久素材数量'/counts of permanent materials by type). It also distinguishes itself from sibling tools like list_materials by focusing on aggregate counts rather than material details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied through the purpose: use this tool when you need counts of permanent materials by type, not the material list themselves. However, it does not explicitly mention when to prefer this over list_materials or provide alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_draftA
前置校验后创建一个或多个图文草稿,并自动回读验证。
| Name | Required | Description | Default |
|---|---|---|---|
| articles | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it mentions '前置校验' (pre-validation) and '自动回读验证' (automatic read-back verification). This gives the agent a clearer picture of the tool's execution flow than the raw annotations alone, which only indicate readOnlyHint=false and 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?
The description is a single efficient sentence with no filler. It front-loads the core action and object, then adds the two key behavioral traits. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the sparse input schema and rich domain complexity (WeChat-style image-text drafts), the description is insufficient. It does not explain what 'pre-validation' checks, what fields each article object requires, or what the read-back verification returns or reports. The presence of an output schema helps for return values, but input construction remains largely unguided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only an array of opaque objects with 0% description coverage. The description clarifies that these objects represent one or more image-text drafts and that the array can hold multiple items, but it does not compensate for the lack of item-level field definitions, required properties, or structure. An agent still does not know how to construct a valid 'articles' object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create'), the resource ('image-text drafts'), and the batch nature ('one or more'). It distinguishes this tool from siblings like update_draft and delete_draft by specifying creation of new drafts rather than modification or deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for creating new drafts, but it provides no explicit when-to-use guidance, no exclusions, and no mention of alternative tools. An agent must infer sibling relationships from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_qrcodeC
创建临时或永久参数二维码。
| Name | Required | Description | Default |
|---|---|---|---|
| scene_id | No | ||
| scene_str | No | ||
| action_name | Yes | ||
| expire_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-idempotent operation. The description adds only the temporary vs. permanent functional distinction, but does not disclose side effects, return behavior, auth needs, or rate limits. It does not contradict the annotations, but it provides little behavioral transparency beyond 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 a single front-loaded sentence with no filler, which is concise. However, given four undocumented parameters and the need to explain the temporary vs. permanent distinction, this length is under-sized and leaves out necessary 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?
The description is insufficient for an agent to call the tool correctly: it does not explain how to fill the parameters, how to choose between scene_id and scene_str, what expire_seconds means, or what the output will be. The existing annotations and output schema soften the gap slightly, but the core decision logic is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the full burden of explaining parameters. It does not mention action_name, scene_id, scene_str, or expire_seconds, nor how they interact. The phrase '临时或永久' only vaguely hints that expire_seconds might be related to the temporary/permanent mode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('创建') and a specific resource ('参数二维码'), and clearly distinguishes two modes: temporary and permanent. It is unambiguous against sibling tools like create_menu, create_draft, or create_tag, which create entirely different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it explain the conditions for choosing a temporary QR code over a permanent one. No prerequisites, exclusions, or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_tagB
创建用户标签。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate a non-readonly, non-idempotent, non-destructive open-world operation, and the description does not contradict them. However, it adds no extra behavioral context such as duplicate-name behavior, permission requirements, or side effects, so it contributes little 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 is a single short Chinese sentence with no redundancy or filler. It is appropriately concise for a simple create operation and easy to parse quickly.
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 create operation with an output schema and annotations available, the core invocation information is present. However, the definition lacks guidance on when to choose it over related tag tools and does not describe important edge behavior, leaving it minimally adequate rather than thorough.
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 would need to explain the 'name' parameter, but it does not. The tool description implies that 'name' is the tag's name, yet no constraints, uniqueness expectations, or format details are provided.
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 user tag). This clearly separates it from tag-management siblings like list_tags, update_tag, and delete_tag, and even from tag_users, which applies tags rather than creating them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as tag_users or update_tag. The description simply states the action, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_draftADestructive
删除草稿;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| media_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description meaningfully adds that explicit confirmation is required. This warns the agent that calling with only a media_id is insufficient and that the confirm flag must be set. It goes beyond annotations by explaining a non-obvious prerequisite for the destructive 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 description is extremely concise: two short phrases, with the action front-loaded and the crucial confirmation requirement stated immediately. Every word adds value, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with simple parameters and an output schema, the description plus annotations cover the core destructive nature and the confirmation gate. However, it does not mention irreversibility or explicitly tie the confirmation instruction to the 'confirm' parameter. This leaves a moderate gap in an otherwise straightforward delete operation.
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 only hints at the confirm parameter via '必须显式确认' and leaves media_id entirely unexplained. The parameter names are somewhat self-evident, but the description does not explicitly map media_id to the draft identifier, nor clarify the confirm flag's role beyond general confirmation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '删除草稿' clearly states a specific verb (delete) and resource (draft), leaving no ambiguity about the operation. It naturally distinguishes itself from sibling tools like delete_published_article or delete_material by targeting a different resource. The confirmation requirement adds a distinctive behavioral marker.
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 does not explicitly name alternatives or state conditions for using delete_draft versus other delete tools. However, the action is implied by the name and resource, and the instruction '必须显式确认' provides a critical usage rule. This is basic implied guidance rather than active routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_mass_messageADestructive
删除群发消息;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| msg_id | Yes | ||
| confirm | No | ||
| article_idx | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, so the description is not responsible for that fact. It adds the key behavioral requirement that explicit confirmation is mandatory, which goes beyond the annotations and is critical for correct invocation. It does not mention irreversibility or side effects, but the most important extra behavior is disclosed.
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 extremely compact: a single sentence with the action first and the critical prerequisite second. There is no filler, repetition, or vague wording, and the most important operational constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, and annotations cover the destructive nature of the operation. The description adds the necessary confirmation requirement, but it omits guidance on when to prefer this tool over sibling deletion tools and does not explain the optional article_idx parameter. For a destructive tool with three parameters, this leaves some gap in completeness.
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 lack of parameter documentation. It only clarifies confirm ('必须显式确认'), while msg_id and article_idx remain unexplained. In particular, article_idx is ambiguous and could easily be misinterpreted, so the description does not fully carry the parameter-semantics burden.
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 the action clearly: '删除群发消息' (delete mass message), using a specific verb and resource. It is easily distinguished from sibling tools like delete_draft or delete_published_article because it uniquely targets mass messages. The added confirmation requirement does not obscure the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explain when to use this tool versus alternatives such as delete_draft or delete_published_article. The only usage-related detail is the confirmation prerequisite, which is about how to invoke the tool, not about selecting it over siblings. There are no exclusions or conditional recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_materialADestructive
删除永久素材;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| media_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as destructive, and the description adds the important behavioral requirement that explicit confirmation is necessary. This goes beyond the structured annotations by warning that the delete action is gated on a confirm signal. 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?
The description is a single, front-loaded sentence with no filler. Both the core purpose and the key usage requirement are stated efficiently. Every word contributes meaningful 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 simple delete operation, the combination of the description, input schema, and annotations covers the essential invocation details: target resource, required media_id, confirmation requirement, and destructive nature. An output schema exists, so return-value documentation is not needed. A minor gap is that the description does not explicitly state that confirm must be set to true, though '必须显式确认' strongly implies 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?
With schema description coverage at 0%, the description must compensate. It explains the confirm parameter's purpose ('必须显式确认'), but media_id semantics are left to the parameter name and title. The description partially compensates but does not fully document parameter behavior or the exact confirm=true requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: '删除永久素材' (delete permanent material). This clearly distinguishes it from sibling delete tools like delete_draft, delete_published_article, or delete_tag, which target different resource types. The added confirmation requirement also helps identify the tool's unique behavior.
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 for deleting permanent materials, which is enough to infer the primary context. However, it does not explicitly mention when not to use this tool or name alternatives for similar resources. The confirmation requirement is the only explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_published_articleADestructive
删除已发表文章或其中一篇;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | ||
| confirm | No | ||
| article_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description adds value by explicitly requiring confirmation ('必须显式确认'), indicating the operation will not proceed without explicit user consent. It also adds the nuance that either the whole publication or a single contained article can be deleted. 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?
The description is a single front-loaded sentence that conveys the core action and the key behavioral constraint with no wasted words. It is concise and immediately 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?
Annotations and output schema cover the destructive nature and result shape, and the description adds the essential confirmation requirement. However, the meaning of '或其中一篇' and the interaction between index and confirm parameters remain vague, so the context is not fully complete for a 3-parameter tool with 0% schema description coverage.
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 schema description coverage at 0%, the description must compensate for missing parameter documentation. It hints at the index parameter with '其中一篇' and at confirm with '必须显式确认', but it does not explicitly map parameters or explain valid values and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation as deleting a published article and specifies the target resource ('已发表文章'), which distinguishes it from delete_draft. The '或其中一篇' clause adds scope nuance but could be interpreted ambiguously. Overall, the verb+resource combination is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—for published articles rather than drafts—and explicitly states that explicit confirmation is required, which guides the agent to set the confirm parameter. However, it does not explicitly name alternatives or state when not to use this tool, leaving sibling differentiation mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_tagADestructive
删除用户标签;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as destructive and non-read-only. The description adds a meaningful behavioral requirement not present in the annotations: explicit confirmation is mandatory before deletion. This is valuable safety-relevant context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler. Every element—action, object, and safety prerequisite—earns its place, and the core information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter destructive operation with annotations and an output schema, the description covers the key safety constraint but omits usage context and parameter meaning beyond the schema. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It only hints that confirmation is required, which loosely maps to the confirm parameter, but it leaves tag_id completely unexplained and does not clarify the expected value of confirm.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'delete user tag'. This is unambiguous and distinguishes delete_tag from sibling delete tools like delete_mass_message and delete_conditional_menu by naming the specific target. The added confirmation requirement further clarifies 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?
No guidance is given about when to use this tool versus alternatives, nor any exclusion criteria. The only operational note is the confirmation requirement, which is a constraint rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_temp_mediaARead-onlyIdempotent
获取临时素材;二进制响应写入本机 save_path 且不覆盖。
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | ||
| save_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive safety, so the description only needs to add behavior beyond that. It does add meaningful context: the binary response is written locally to save_path and existing files are not overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence states the operation and the key side effect. Every part earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with output schema and rich annotations, it is close to complete, but it omits the provenance/format of media_id and any failure behavior when save_path already exists (aside from not overwriting). An agent might still need to inspect siblings or prior call outputs to call this 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 coverage is 0%, so the description must compensate. It clarifies save_path as the local destination and the no-overwrite rule, but it does not explain media_id or how it is obtained/formatted, leaving a required 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?
The description names a specific operation— retrieving temporary media—and adds the exact local side effect (writing a binary response to save_path without overwriting). This is concrete enough to separate the tool from the many upload/list/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?
No guidance is given about when to choose this tool over upload_temp_media, list materials, or other media endpoints. The context of 'temporary material' is implicit, but there is no explicit when/when-not or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_autoreply_configARead-onlyIdempotent
获取公众号当前自动回复配置。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to repeat safety traits. It adds only the 'current' aspect, indicating a live snapshot rather than a historical or default configuration. No annotation contradiction exists, but the description provides little extra behavioral context 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 is a single compact sentence with no filler or redundant information. It immediately states the tool's purpose and contains no tangential details.
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 tool with an output schema and strong annotations, the description is sufficiently complete. There are no input prerequisites to document, and the output schema covers return-value details, so nothing essential 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 tool has zero parameters, so there is no parameter-level ambiguity for the description to resolve. The input schema is fully defined as empty, and no parameter enrichment is necessary, yielding the baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (获取/get) and a clear resource (公众号当前自动回复配置), making the operation unambiguous. No sibling tool targets auto-reply configuration, so it is easily distinguished from all listed alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as a read-only lookup of the current auto-reply configuration, but it does not explicitly state when to prefer this tool over alternatives or mention any preconditions. The absence of closely related sibling tools softens this gap, but explicit guidance is still lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_draftBRead-onlyIdempotent
读取草稿的完整 news_item 数组。
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful scope context by saying it reads the 'complete' news_item array, but does not disclose additional behaviors such as error cases, auth requirements, or potential return limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. Every word contributes to identifying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single required parameter, a clear read-only annotation profile, and an existing output schema, the description is mostly complete for a simple retrieval tool. The main gap is the lack of explicit identifier semantics or alternative routing, but these are minor for this simple 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% and the description provides no explicit explanation of media_id beyond what the schema title 'Media Id' already conveys. The draft context is implicit, but the description does not compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '读取草稿的完整 news_item 数组' (read the complete news_item array of a draft), making the operation distinctly about retrieving a draft's full content. It does not explicitly contrast with sibling tools like list_drafts, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case: when you need the complete news_item array for a specific draft. However, it gives no explicit guidance on when not to use it, nor does it mention alternatives such as list_drafts for draft summaries or get_published_article for published content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jsapi_ticketBRead-onlyIdempotent
获取 JS-SDK 的 jsapi_ticket。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds no behavior beyond this, such as ticket expiration, caching implications, or that the returned value is time-limited. For a tool where the ticket's freshness is important, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler or repetition. It is front-loaded with the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, annotations cover safety, and an output schema exists, the description is largely sufficient. The only missing piece is contextual guidance about when the jsapi_ticket is needed or that it expires, but that is not critical for invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add. Per calibration, 0 params earns a baseline of 4.
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 ('获取' / get) and a specific resource ('JS-SDK 的 jsapi_ticket'), making the tool's purpose immediately clear. It does not explicitly differentiate from siblings, but the resource is unique enough that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no context about the ticket's role in JS-SDK signing. There is no mention of alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mass_statusBRead-onlyIdempotent
查询群发消息发送状态。
| Name | Required | Description | Default |
|---|---|---|---|
| msg_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description aligns with this by saying '查询' (query), but it does not add meaningful behavioral context beyond that, such as what status values may be returned or any operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler or redundant content. It is appropriately concise and front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with rich annotations and an output schema, the description is mostly adequate. The main missing piece is explicit clarification of msg_id semantics and some distinction from get_publish_status, but these are not severe 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 description coverage is 0%, and the description does not explain what msg_id refers to or where it comes from. An agent must infer that msg_id is the mass message ID from the tool name and purpose, which is not made explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: it queries the sending status of a mass message. However, it does not explicitly differentiate itself from the similarly named sibling get_publish_status, 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?
There is no guidance about when to use this tool versus alternatives, when not to use it, or what preceding step provides the msg_id. The description simply states the action with no contextual decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_materialARead-onlyIdempotent
获取永久素材;二进制响应写入本机 save_path 且不覆盖。
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | ||
| save_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds valuable behavior beyond those annotations: the binary response is written to the local save_path and existing files are not overwritten. This is useful behavioral context for an agent deciding how to invoke the 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?
The entire description is one compact sentence that states the resource, the response format, the side effect, and a critical constraint. Every clause provides useful information and nothing 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?
With annotations covering safety, an output schema present, and only two self-explanatory parameters, the description provides enough to call the tool correctly. The main missing detail is what happens when save_path already exists, since 'does not overwrite' implies some behavior but does not specify the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add meaning for save_path by specifying local binary write and no-overwrite behavior, but media_id is not elaborated beyond its self-explanatory name. Overall, partial compensation keeps this at an acceptable level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'get permanent material' and conveys that the result is binary data written to a local path. It distinguishes permanent materials from temporary ones, but does not explicitly differentiate it from list_materials or other retrieval 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?
The description implies this tool is for retrieving permanent material binaries and saving them locally, which gives some usage context. However, it never explicitly states when to use this tool over alternatives such as list_materials or download_temp_media, nor does it state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_published_articleARead-onlyIdempotent
按 article_id 获取单篇已发表文章。
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral context such as not-found behavior or ID source; it is not contradictory, but it also does not go beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence states the action, the parameter, and the scope with no filler or repetition. The important qualifier '已发表' (published) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool, the description, one required string parameter, and the annotations provide enough to invoke it correctly; an output schema covers return values. A small gap is the absence of not-found/error behavior, but this is not critical for call selection.
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 schema description coverage at 0%, the description must compensate, and it does name article_id and assign it meaning ('the ID of a single published article'). However, it does not explain the accepted format, where the ID comes from, or behavior for an unknown ID, 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 states a specific action and resource: '按 article_id 获取单篇已发表文章' ('get a single published article by article_id'). It clearly distinguishes from sibling tools such as list_published, get_draft, and get_publish_status by specifying 'published' and 'single'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use for fetching one published article by ID is implied, but the description gives no explicit when-to-use/when-not-to-use guidance and names no alternative like list_published for retrieving multiple articles. It is understandable but leaves selection reasoning to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publish_statusARead-onlyIdempotent
按 publish_id 查询异步发布状态。
| Name | Required | Description | Default |
|---|---|---|---|
| publish_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds the '异步' (async) context, signaling that the status may not be immediately available and polling may be expected—a useful behavioral trait beyond the annotations. It is consistent with the annotation 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?
The description is a single, front-loaded sentence with no redundant words. Every element contributes meaning, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple scope (one required parameter), rich annotations covering safety, and an existing output schema, the description is complete enough for an agent to understand and invoke the tool correctly. No additional context such as return format or error handling is necessary here.
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 one parameter, publish_id, with no description, so schema description coverage is 0%. The description explicitly states '按 publish_id' (by publish_id), which clarifies that the parameter is the lookup key for the status query. This adequately compensates for the schema gap for a single self-explanatory 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 uses a specific verb '查询' (query) and resource '异步发布状态' (async publish status), clearly stating the tool's function. It is concise and unambiguous, though it does not explicitly distinguish itself from siblings like get_mass_status or get_published_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It states only the action, leaving the agent to infer that it should be used for checking publish status after an async publish operation, with no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_ipsARead-onlyIdempotent
获取微信服务器回调 IP 列表。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description carries little additional burden. It adds no behavioral detail such as whether IPs can change over time or how the result is structured, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that states the core function without filler. The information is front-loaded and each word adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only getter with output schema and safety annotations present, the description is complete enough. There are no inputs to document and no missing context that would prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, so there is no parameter information the description needs to add. A baseline of 4 is appropriate here.
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 a specific resource ('微信服务器回调 IP 列表'), making the tool's function immediately clear. This is distinct from all sibling tools, which address drafts, materials, menus, users, and messaging rather than server IPs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, and no explicit conditions or exclusions. Usage must be inferred entirely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statistics_reportARead-onlyIdempotent
按 report 获取公众号统计数据,并前置校验日期跨度。
| Name | Required | Description | Default |
|---|---|---|---|
| report | Yes | ||
| end_date | Yes | ||
| begin_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds meaningful extra behavior: it performs upfront validation of the date span before fetching. This goes beyond the annotations and helps set expectations about input validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the core action and resource, then adds the key validation behavior. Every word contributes meaning, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and rich annotations present, the description does not need to explain return values. However, the report parameter remains underspecified, and date formats are not mentioned. The tool is simple, but the lack of parameter semantics leaves the description only partially complete 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%, so the description must compensate for missing parameter details. It mentions 'report' and the date span concept, but it does not define valid report values, expected date formats, or any constraints on begin_date/end_date. An agent would still struggle to construct a correctly typed call.
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 (获取/get), a clear resource (公众号统计数据/Official Account statistics data), and the key qualifier 'by report'. It is easily distinguished from all sibling tools, none of which explicitly target statistics retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope is clear: use this tool to retrieve statistics data for a given report type and date range. It does not explicitly mention when not to use it or list alternatives, but no sibling tool appears to serve the same statistics purpose, so the guidance is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_ids_by_tagARead-onlyIdempotent
分页获取指定标签下的关注者 OpenID。
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ||
| next_openid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful behavioral context beyond annotations by clarifying that results are paginated and that the resource is follower OpenIDs scoped to a tag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. The key action and scope are front-loaded and every part adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only paginated endpoint with annotations covering safety and an output schema covering return values, the description is largely sufficient. The main gap is the absence of routing guidance relative to sibling tools, but this is a minor issue 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 partially compensates: '指定标签' clarifies tag_id, and '分页获取' hints at next_openid's pagination role. However, the exact cursor semantics of next_openid are not explicitly described, leaving some inference required.
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 ('分页获取' - paginated get), a specific resource ('关注者 OpenID'), and a scope ('指定标签下'). This clearly distinguishes it from sibling tools like list_users or get_user_info.
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 tool's purpose implies when to use it: when you need OpenIDs of followers under a particular tag, with pagination. However, it does not explicitly mention alternatives or exclusions, such as using list_users for all users or get_user_info for a single user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_infoARead-onlyIdempotent
获取单个用户基本信息。
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | zh_CN | |
| openid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description's '获取' aligns with those hints. The description adds little behavioral context beyond 'basic info', but given the strong annotation coverage, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler, clearly front-loading the core action and resource. It is appropriately concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-user read operation with an output schema, safe annotations, and only two self-explanatory parameters. The description is largely sufficient, though it could benefit from mentioning that batch_get_user_info is the alternative for multiple users.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain what openid represents or what lang values are valid. The parameter names are intuitive and lang has a default, but the description adds no meaning beyond the schema 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 states a specific verb (获取/get), a specific resource (单个用户基本信息/single user basic info), and explicitly narrows scope to a single user, which distinguishes it from sibling tools like list_users and batch_get_user_info.
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 phrase '单个用户' implies this tool is for fetching one user's basic info as opposed to batch operations, but it does not explicitly name alternatives or state when not to use it. Usage context is only implied, not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blacklistARead-onlyIdempotent
分页获取公众号黑名单。
| Name | Required | Description | Default |
|---|---|---|---|
| next_openid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注解已提供 readOnlyHint=true、idempotentHint=true、destructiveHint=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?
描述只有一句话,直接点出核心功能和分页特性,没有任何冗余内容。信息位置靠前,简洁且易于解析。
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?
工具本身较为简单,注解和输出 schema 已覆盖大部分安全性和返回结构。但描述缺少对 next_openid 分页语义的明确说明,也没有提供与兄弟工具的选择依据,整体上可用但仍有明显信息缺口。
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 对参数 next_openid 的描述覆盖率为 0%,描述仅通过“分页”间接暗示该参数与分页有关,但没有说明 next_openid 是下一页游标、首次请求应留空或如何使用返回值中的下一页标记。对于低覆盖率的 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?
描述使用了明确的动词“获取”和资源“公众号黑名单”,并限定为“分页”方式,清晰表达了工具功能。与兄弟工具如 blacklist_users、unblacklist_users(操作用户黑名单状态)和 list_users(获取用户列表)能明显区分。
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?
描述隐含了“查看黑名单列表时使用”的用法,但没有明确说明何时应使用此工具而非 list_users 或 blacklist_users,也没有提到分页游标的使用条件或替代方案。属于可推断但未明示的用法指导。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commentsBRead-onlyIdempotent
分页读取已发表文章评论。
| Name | Required | Description | Default |
|---|---|---|---|
| begin | No | ||
| count | No | ||
| index | Yes | ||
| msg_data_id | Yes | ||
| comment_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the safety profile is covered. The description adds the pagination behavior, which is useful, but it does not disclose ordering, page-size limits, or handling of missing comments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It is concise, though arguably too terse given the number of parameters, but it earns points for being 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 tool with five parameters and zero schema descriptions, a one-line description is insufficient. While an output schema exists and annotations cover safety, the lack of parameter explanations and pagination details leaves a significant documentation 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 description does not explain the meaning of msg_data_id, index, begin, count, or comment_type. The word paginated hints at begin/count/index but provides no concrete semantics, leaving the agent without enough information to correctly populate parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: paginated reading of comments on published articles. It distinguishes itself from sibling tools like mark_comment_elect (comment mutation) and list_published (article listing), leaving no ambiguity about what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, no exclusions, and no prerequisites. It only states the function, so the agent must infer usage from the name and surrounding context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_draftsBRead-onlyIdempotent
分页列出草稿,并通过 draft/count 附带草稿总数。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注释已经声明 readOnlyHint=true、idempotentHint=true、destructiveHint=false,安全性质已由结构化字段覆盖。描述额外说明了分页行为和通过 draft/count 返回草稿总数,这补充了部分响应行为;但未涉及排序、是否包含已删除草稿等更深层行为。没有与注释冲突。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述只有一句话,前半句直接给出核心操作'分页列出草稿',后半句补充返回值中的总数信息,没有冗余内容。整体结构紧凑,信息密度高,适合代理快速读取。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
工具本身较简单,有输出 schema 承担返回结构说明,注释也覆盖了只读和幂等性。描述已经覆盖了分页和总数这两个关键行为,基本能让代理正确调用。唯一不足是没有明确说明 count/offset 的具体规则以及是否存在过滤、排序等行为,但整体已完成主要闭环。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema 描述覆盖率为 0%,因此描述本应承担解释 count 和 offset 的责任。description 只说'分页列出',暗示 count/offset 是分页参数,但没有说明 count 是页码还是每页数量、offset 的含义、是否有最大值或默认行为。对这些参数的实际语义补充不足。
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?
描述明确说明了工具行为:分页列出草稿并附带草稿总数,动词和资源都很清楚。虽然没有直接与 list_published、get_draft 等兄弟工具做区分,但'草稿'这一资源已足以让代理理解它的用途。
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?
描述没有说明何时使用该工具,也没有提供与 get_draft、list_published、delete_draft 等替代工具的对比或排除条件。代理只能根据工具名称和'列出草稿'这层含义推断场景,缺少明确的 when-to-use 指导。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsARead-onlyIdempotent
分页列出指定类型的永久素材。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| offset | No | ||
| material_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is well covered. The description adds pagination behavior and permanent-material scope, but does not disclose ordering, default page-size semantics, or any access/auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler, and the core action and resource are front-loaded. It is appropriately sized for a straightforward list 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?
With an output schema present, return value documentation is not necessary. However, input semantics remain thin: an agent cannot determine valid material_type values, pagination bounds, or any special behaviors from the description. The definition is minimally viable but leaves notable gaps 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 carries the burden of explaining parameters. It implies that material_type selects the resource type and that count/offset drive pagination, but it provides no valid type values, constraints, or additional meaning beyond the schema's field names and defaults.
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 ('paginated list') and a specific resource ('permanent materials of a specified type'), which clearly differentiates it from sibling tools such as get_material, count_materials, list_drafts, and list_published. Even without a title, the purpose is immediately apparent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this tool when you need a paginated listing of permanent materials filtered by type. However, it does not explicitly mention alternatives, exclusions, or conditions such as 'use get_material for a single item' or 'use count_materials for totals.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_publishedARead-onlyIdempotent
分页列出成功发布的文章,用于无状态对账。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. The description adds the important filter '成功发布的' (successfully published) and specifies paginated listing, which goes beyond annotations. It doesn't mention ordering or rate limits, but for a simple list tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core action, no fluff. The phrase '成功发布的' and '分页' convey the essential scping and pagination immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: two optional integer parameters, output schema exists, annotations cover safety. The description gives the purpose, resource filter, and pagination method; nothing critical is missing for a read-only list operation.
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%. The description says '分页' (paginated), which implies count and offset are paging controls, but it doesn't explain their exact semantics, bounds, or default behavior. The parameter names and defaults in the schema carry most of the meaning, so the description adds only minimal 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?
Clear verb 'list' + resource 'successfully published articles' + pagination; it distinguishes from sibling tools like list_drafts (drafts) and get_published_article (single article).
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 '用于无状态对账' (used for stateless reconciliation), providing a concrete use case for paginated enumeration. It does not explicitly name alternatives or exclusions, but the resource and purpose give clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsARead-onlyIdempotent
列出公众号全部用户标签。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds only the '全部' (all tags) scope and no additional behavioral detail such as pagination, ordering, or empty-result behavior, though the output schema may cover 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?
The description is a single compact sentence that front-loads the exact verb and resource. There is no redundant filler, and it is appropriately sized for a parameterless list 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?
For a simple parameterless read-only operation with an output schema and strong annotations, the description is nearly sufficient. It could be slightly more complete by noting that this is the entry point for tag-dependent operations or by describing the returned tag fields, but the output schema likely covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema has 100% coverage by being empty, so there is nothing for the description to explain. The baseline for a no-parameter tool is 4, and the description correctly stays focused on behavior rather than inventing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb '列出' (list) and a clear resource '公众号全部用户标签' (all user tags of the official account). It is immediately distinguishable from mutation siblings like create_tag/update_tag/delete_tag and from get_user_ids_by_tag, which returns users rather than tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for retrieving the full tag list, so an agent can infer when to call it. However, it gives no explicit guidance about alternatives or when not to use it, such as distinguishing it from get_user_ids_by_tag or noting that tag management flows typically start with this list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersARead-onlyIdempotent
分页获取关注者 OpenID。
| Name | Required | Description | Default |
|---|---|---|---|
| next_openid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注解已经覆盖了只读、幂等、非破坏等安全特征,描述额外补充了分页行为,这是有价值的信息。但它没有说明游标的语义、分页大小、排序方式或响应结构;不过输出 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?
描述只有一句话,动作和资源对象前置,没有多余内容,结构高效。虽然信息量偏少,但作为简洁性评估,它没有浪费任何字符。
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?
对于首次无参数调用,描述加上注解和输出 schema 基本够用;但对于完整的分页迭代调用,缺少 next_openid 游标语义和与兄弟工具的选用规则。整体处于最低可用的水平,但还有明确缺口。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema 对参数的描述覆盖率为 0%,描述必须补偿这一缺口,但描述完全没有解释 next_openid 的含义。虽然“分页”暗示该参数与分页有关,但 agent 无法确定它到底是游标、起始位置还是上一页最后一个 OpenID,这对后续翻页调用存在实际风险。
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?
描述明确说明操作为分页获取关注者 OpenID,动词和资源对象清晰。它与其他兄弟工具如 get_user_info(单个用户信息)、batch_get_user_info(批量用户信息)、get_user_ids_by_tag(按标签获取用户 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?
从描述中可以推断该工具用于分页列出所有关注者的 OpenID,属于隐含用法。但没有明确说明何时使用它而非 get_user_ids_by_tag 或 batch_get_user_info,也没有给出任何排除条件或备选工具指引。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_comment_electC
将评论标记为精选。
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| msg_data_id | Yes | ||
| user_comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, and the description merely restates the mutation without adding side-effect, permission, or idempotency context. It does not contradict the annotations, but it also adds little behavioral information beyond 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 a single short sentence and is front-loaded, but it is terse to the point of omitting essential guidance. It is concise, yet not appropriately sized for a tool with three required parameters.
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?
An output schema exists and annotations are present, but the description still fails to cover parameter roles, usage context, or expected behavior beyond 'mark as featured'. For a mutation with three required, undocumented parameters, this 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%, and the description provides no explanation of msg_data_id, index, or user_comment_id. The parameter names are only weakly self-explanatory, and the meaning of index in particular is ambiguous, so the agent lacks enough information to populate them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'mark comment' as 'featured/selected'. This distinguishes it from many unrelated siblings, though it does not explicitly contrast with the closely related unmark_comment_elect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. The sibling tool unmark_comment_elect exists, but the description offers no conditions, prerequisites, or exclusions to help the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_custom_messageBDestructive
发送客服消息;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| openid | Yes | ||
| confirm | No | ||
| message | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as non-read-only and destructive; the description adds a meaningful behavioral guardrail: the tool requires explicit confirmation before sending. It does not detail other side effects, but the confirmation requirement is valuable context 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 is a single compact sentence with no filler, and the primary action is front-loaded. However, the terseness leaves little room for parameter or context detail, so it is concise but minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive nature, three parameters, a nested message object, and zero schema parameter descriptions, this one-line description is insufficient. It omits message structure, confirmation mechanics, and any success/failure behavior, even though an 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?
Schema description coverage is 0%, so the description must compensate, but it only touches the confirm parameter ('must explicitly confirm'). It provides no semantics for openid or the message object, leaving the agent to infer their meaning from 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?
The description identifies a specific action and resource: sending a customer-service message. This distinguishes it from sibling send tools like send_template_message or send_subscribe_message by message type, though it does not name 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?
The description offers no guidance on when to use this tool versus the many sibling messaging/send tools. The only usage-related cue is the requirement for explicit confirmation, which is a precondition rather than a selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_subscribe_messageCDestructive
发送订阅通知;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| page | No | ||
| openid | Yes | ||
| confirm | No | ||
| miniprogram | No | ||
| template_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only and destructive, so the bar is lower. The description adds the behavioral requirement of explicit confirmation, which is beyond the annotations and important for safe invocation. It does not contradict 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 is short and front-loaded, with no wasted words. However, for a tool with six parameters and nested data, it is under-specified rather than appropriately sized.
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 six parameters, no schema descriptions, and a nested data object, the description does not cover prerequisites, parameter semantics, or behavioral context. Even with an output schema present, an agent lacks enough information to invoke this tool confidently.
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 only hints at the confirm parameter via 'must explicitly confirm'. It gives no meaning for openid, template_id, data, page, or miniprogram, so an agent cannot correctly construct arguments from the description 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?
The description '发送订阅通知' states a clear verb and resource: sending a subscription notification. It is distinguishable from sibling send_template_message/send_custom_message by the subscription-notification domain, though it does not 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?
The only usage guidance is '必须显式确认' (must explicitly confirm), which is a useful precondition but does not explain when to choose this tool over send_template_message, send_custom_message, or the mass-message tools. No alternatives, exclusions, or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_template_messageCDestructive
发送模板消息;必须显式确认。
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| data | Yes | ||
| openid | Yes | ||
| confirm | No | ||
| miniprogram | No | ||
| template_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=false, so the agent knows this is a mutating operation. The description adds the behavioral requirement of explicit confirmation, which is not present in annotations and is useful 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?
The description is extremely concise, with no filler words, and the critical confirmation requirement is front-loaded. However, it is perhaps too terse given the complexity of six parameters and nested objects.
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 six parameters, three required fields, nested objects, and many sibling tools, this description is far from complete. It does not explain expected data structure, required fields, or how this tool differs from similar send/subscribe/message tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the six parameters, but it only indirectly hints at the 'confirm' parameter via '必须显式确认'. It provides no meaning for openid, template_id, data, url, or miniprogram.
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 verb '发送' and the resource '模板消息', making it evident that this tool sends template messages. It does not explicitly contrast with sibling tools like send_custom_message or send_subscribe_message, but the resource type is enough to distinguish it in most cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides one important usage condition—'必须显式确认' (must explicitly confirm)—but offers no guidance on when to use this tool versus the many messaging-related siblings. It does not mention scenarios, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_usersB
批量为用户添加标签。
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ||
| openid_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent, non-destructive operation. The description adds the specific behavioral scope that it is a bulk addition of tags to users, but provides no further details such as whether existing tags are preserved, error behavior, or side effects, which is acceptable given the lightweight operation and existing 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 is a single, front-loaded, concise sentence with no wasted words. It communicates the core operation effectively for such a simple 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?
The tool has low complexity, an output schema, and useful annotations, so the description does not need to explain return values. However, it omits practical invocation details like valid tag_id requirements, openid_list length constraints, and whether the operation is partially applied on failure, leaving notable gaps for an agent that needs robust usage 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?
With 0% schema description coverage, the description needed to compensate by explaining tag_id and openid_list semantics. It only vaguely maps '标签' to the tag and '用户' to the users, but does not clarify the meaning of tag_id, the format or limits of openid_list, or the relationship between them.
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 operation: batch-add tags to users. It uses a specific verb and resource, and is easily distinguished from the sibling untag_users, which covers the opposite 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?
The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention untag_users, list_tags, or constraints such as requiring an existing tag_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.
unblacklist_usersC
批量取消拉黑用户。
| Name | Required | Description | Default |
|---|---|---|---|
| openid_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what the annotations already contain. It does not mention side effects, idempotency, invalid openid handling, rate limits, or confirmation implications despite annotations showing readOnlyHint=false and openWorldHint=true. There is no contradiction, but no value 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?
The description is a single concise sentence with no filler, and the core action is front-loaded. It is appropriately brief for a simple tool, though brevity comes at the expense of parameter and alternative guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and an output schema, the minimal description may allow a basic call, but it lacks critical context: openid_list semantics, array constraints, relationship to blacklist_users/list_blacklist, and behavior on partial failures. The annotations are sparse, so the description should carry more of the 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?
With schema description coverage at 0%, the description should compensate, but it never mentions openid_list or its semantics. The only implicit link is that 'users' likely corresponds to the openid_list array; no details about OpenID format, array limits, or behavior for invalid entries are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '批量取消拉黑用户' clearly states a specific action (unblacklisting users in batches) on a specific resource. It conveys the core purpose clearly, though it does not explicitly differentiate itself from sibling tools like blacklist_users or list_blacklist.
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 usage context is implied by the verb '取消拉黑' (unblacklist) and by the sibling tool blacklist_users, but there is no explicit when-to-use guidance, exclusions, or mention of alternatives. An agent must infer that this is the inverse operation of blacklisting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unmark_comment_electC
取消评论精选。
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| msg_data_id | Yes | ||
| user_comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description only restates the core operation ('取消') and adds no behavioral details such as side effects, failure modes, permission requirements, 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?
The description is extremely short and contains no filler words. However, it is so minimal that it sacrifices useful explanatory structure, so it earns a solid but not perfect score for conciseness.
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?
Even with an output schema present, the description is incomplete for a mutation tool with three required parameters and zero parameter documentation. It does not state what the operation affects, how the parameters identify the target comment, or what happens on success or failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the three required parameters. While parameter names hint at meaning, the relationship between msg_data_id, index, and user_comment_id is unexplained, leaving the agent without enough information to populate them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '取消评论精选' clearly states the action: unmark/cancel a comment's featured status. Combined with the tool name and sibling mark_comment_elect, the purpose is specific and distinguishable, though it does not elaborate on the resource scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus mark_comment_elect or any other comment-related tool. The sibling list implies an inverse relationship, but the description itself provides no explicit usage context or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
untag_usersC
批量取消用户标签。
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ||
| openid_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description merely restates the operation without adding behavioral context beyond the annotations. Annotations already indicate readOnly=false, idempotent=false, and destructive=false, but the description fails to explain rate limits, reversibility, or side effects. No contradiction with annotations exists, but the added transparency value is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler or repetition. The verb is placed at the start, making the core action immediately visible.
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?
Even though an output schema exists and the parameters are simple, the description is too sparse. It does not mention error conditions, what happens when a tag doesn't exist, or how this relates to the broader tagging workflow. An agent would need to infer too much from the tool name alone.
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% with no descriptions, so the description must compensate. It does not explain how tag_id and openid_list interact or what openid format is expected, relying entirely on parameter names. This is insufficient for an agent to correctly construct arguments beyond guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('批量取消' = batch remove) and resource ('用户标签' = user tags), which conveys a batch untagging operation. It clearly differentiates from the sibling tag_users tool by being the inverse action, though it doesn't explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like tag_users or list_tags. No context is provided about ordering, prerequisites, or cases where untagging is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_draftB
按从 0 开始的文章位置更新草稿。
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| article | Yes | ||
| media_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注释已表明这是写操作(readOnlyHint=false)、非幂等且有副作用(openWorldHint=true),描述未与注释矛盾。描述补充了“按位置更新”这一行为语义,但未披露越界 index 时的行为、article 是整体替换还是局部合并、是否存在校验等关键行为特征。在有注释兜底的情况下达到最低可用水平。
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?
单句描述,信息密度高,关键细节(从 0 开始)前置,没有任何冗余词语。虽简短但结构有效,未给 5 分是因为其简洁已接近规格不足的边缘,缺失信息由其他维度扣分体现。
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?
对于带 3 个必填参数且无输出 schema、无参数描述的变更类工具,描述只覆盖了 index 的语义。article 对象的内部结构完全未知,media_id 的作用未说明,越界行为未提及,agent 无法仅凭此描述可靠地构造正确调用。完整性缺口明显。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema 描述覆盖率为 0%,描述必须承担参数说明的重任,但它只阐明了 index 的 0 起始语义,对最复杂的 article 对象(additionalProperties=true,完全透明)和 media_id 的含义均未提供任何说明。三个必填参数中两个在 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?
描述包含明确的动词(更新)和资源(草稿),并用“按从 0 开始的文章位置”这一关键限定说明了操作方式,能将其与 create_draft、get_draft、delete_draft、list_drafts 等兄弟姐妹工具区分开。虽未显式点名替代工具,但动词+资源的组合已足够清晰,故未给 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?
描述的语义暗示了使用场景(在已有草稿的指定文章位置上进行更新),但没有显式说明何时应该选择本工具而不是 create_draft(新建/整体替换)或 get_draft(读取),也没有排除性条件或前置要求。属于隐含用法,缺乏明确路由。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_tagC
更新用户标签名。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| tag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive, non-idempotent operation. The description adds no further behavioral context, such as whether the rename overwrites the existing name, affects tag-user associations, or requires special permissions. It merely restates that the name is updated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that conveys the core operation immediately. It is efficient and front-loaded, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two required parameters, zero schema descriptions, and no usage guidance, the description is too sparse for an agent to call the tool confidently. An output schema exists, so return values need not be explained, but parameter semantics and operation context are still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explicitly define tag_id or name. The phrase 'update user tag name' hints that 'name' is the new tag name, but tag_id's meaning is left entirely to inference, and no value format or constraints are provided.
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 ('update') and a specific resource ('user tag name'), making the tool's primary purpose unambiguous and implicitly different from siblings like create_tag, delete_tag, or tag_users. However, it does not explicitly contrast with any sibling tool, so it falls short of the highest distinction bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to choose update_tag over other tag-related tools, nor any exclusions or prerequisites. The usage context is only implied by the tool name and the word 'update'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_user_remarkC
更新用户备注名。
| Name | Required | Description | Default |
|---|---|---|---|
| openid | Yes | ||
| remark | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and non-destructive behavior, but the description adds no behavioral context beyond the literal update action. It does not disclose overwrite semantics, validation, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler, making it efficient. However, it is somewhat underspecified, which prevents a perfect score.
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 two-parameter write tool with annotations and an output schema, the description conveys the core intent but omits context like whether the user must already exist or whether the remark is overwritten. This is adequate but has 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 compensate for missing parameter meanings. It only hints that 'remark' corresponds to the '备注名', while 'openid' is left unexplained in terms of format or role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb '更新' and a specific resource '用户备注名', making the tool's purpose immediately understandable. It does not explicitly differentiate from sibling tools, but no other sibling has the same update-remark purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as get_user_info or batch_get_user_info. It does not mention prerequisites, exclusions, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_content_imageA
上传本机 JPG/PNG 正文图片并返回微信图片 URL。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, and has an open-world effect, so the description does not need to restate the mutation aspect. It adds that the upload is local and returns a WeChat URL, but it does not disclose potential limitations, persistence, or side effects beyond the annotation 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?
The description is a single front-loaded sentence: action, resource type, format, and result are all conveyed without wasted words. Every clause contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required string parameter and an output schema present, the description covers the essential call intent and return type. It is slightly incomplete in not addressing usage boundaries relative to sibling upload tools or any file constraints beyond JPG/PNG, but these gaps are minor for this simple interface.
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?
Input schema coverage is 0%, so the description must carry the semantic weight for file_path. It does so by specifying that the file is a local JPG/PNG image, which clarifies that file_path should point to a local image file. It does not mention size limits or path format, but with only one parameter this is reasonably sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('upload'), the exact resource ('local JPG/PNG body image'), and the expected result ('return WeChat image URL'). This clearly differentiates it from sibling tools like upload_cover_image or upload_video_material.
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 type of image ('正文图片') implies when this tool is appropriate, but the description never explicitly says when to use this tool instead of upload_cover_image, upload_temp_media, or other upload variants. Usage context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_cover_imageA
上传本机图片为永久封面素材并返回 media_id。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate a non-read-only, non-destructive, non-idempotent operation, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: the uploaded material is 'permanent' (versus temporary media) and the operation returns a media_id. This clarifies lifecycle and outcome without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single concise sentence that front-loads the action and resource, then states the return value. There is no redundant wording or irrelevant detail; every word 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 simple one-parameter upload tool with an output schema present, the description covers the essential purpose and result. It is missing contextual details like image format/size constraints and does not explicitly differentiate from upload_content_image, which could be ambiguous. Overall, it is sufficient for correct invocation in most cases, 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%, so the description must compensate. It clarifies that file_path refers to a local image on the machine ('本机图片'), which adds meaning beyond the bare 'File Path' title. However, it does not specify path format, supported image formats, size limits, or whether relative/absolute paths are accepted, leaving some semantic 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?
The description states a specific verb ('上传' - upload), a resource ('本机图片' - local image), and the purpose ('永久封面素材' - permanent cover material), and ends with the expected return value (media_id). It distinguishes this tool from siblings like upload_temp_media (temporary) and upload_video_material/upload_voice_material (different material types) through the 'permanent cover' qualifier.
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 use case: when you need to upload a local image as a permanent cover material. However, it does not explicitly state when to choose this over alternatives such as upload_content_image or upload_temp_media, nor does it mention any exclusions or conditions. The guidance is inferred from the tool name and wording rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_temp_mediaB
上传图片、语音、视频或缩略图临时素材。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| media_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond what the name and annotations imply. It does not mention expiration, size limits, path requirements, or side effects; annotations only provide readOnlyHint=false and destructiveHint=false, so the agent gains no additional lifecycle or safety 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?
One short sentence, no repetition, front-loaded with the action and resource. Every word adds meaning and the description is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool, the core purpose is clear, but the missing parameter semantics and usage context mean an agent may not know how to fill file_path or choose between temp and permanent media tools. The output schema exists, so return-value handling is not a 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 compensate. It partially defines media_type by listing four allowed values (images, voice, video, thumbnail), but file_path is left entirely unspecified. This is only partial compensation for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('上传' = upload) and a clear resource ('临时素材' = temporary media), and enumerates accepted media types (image, voice, video, thumbnail). It is clear, though it does not explicitly contrast with sibling upload tools like upload_video_material or upload_voice_material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as permanent material uploads or download_temp_media. It neither names alternatives nor provides selection conditions, leaving the agent to infer from the '临时' (temporary) wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_video_materialA
上传本机 MP4 为永久视频素材。
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| file_path | Yes | ||
| introduction | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only (readOnlyHint=false) and not idempotent, so the description is not the sole source of behavioral information. It adds that the upload is permanent and sourced from a local MP4 file, but it does not disclose constraints like file size limits, duration limits, or duplicate handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the essential information: what is uploaded, in what format, and the permanence of the result. There is no wasted wording or redundant 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?
The tool is relatively simple with three required scalar parameters and an output schema, so the description is minimally adequate. Still, it lacks explicit usage guidance and important constraints such as file size or format limits, and it leaves parameter semantics partly to inference.
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 clarifies that file_path refers to a local MP4 file, which is useful. However, it gives no explicit meaning or constraints for the required title and introduction parameters, even though their names are fairly self-explanatory.
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 ('upload'), resource ('local MP4'), and outcome ('permanent video material'). It clearly differentiates this tool from siblings like upload_temp_media and upload_voice_material by specifying 'permanent' and 'video'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the words 'permanent' and 'video material', suggesting this is for permanent video uploads rather than temporary or voice materials. However, there is no explicit statement about when to use this tool versus alternatives such as upload_temp_media or upload_voice_material.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_voice_materialA
上传本机音频为永久语音素材。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, open-world, non-idempotent, non-destructive operation. The description adds the 'permanent' persistence detail and confirms the upload behavior, but it does not disclose file format constraints, size limits, authentication needs, or what exactly is returned beyond the existing output 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?
The entire description is one short, front-loaded sentence. It states the action, source, and result without filler, and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter upload tool with an output schema available, the description covers the core behavior: local audio becomes permanent voice material. Details like supported audio formats, size limits, or callback behavior are absent, but the tool is simple enough that the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides the parameter name 'file_path' with no description. The description adds that the path refers to a local audio file, which gives some semantic grounding. However, it does not specify expected formats, path conventions, or constraints, so the compensation for the 0% schema description 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?
The description clearly states a specific verb ('upload'), resource ('local audio'), and result ('permanent voice material'). It distinguishes this from sibling tools like upload_video_material or upload_content_image by naming the exact asset type and persistence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when the agent needs to upload a local audio file as a permanent voice asset, but it does not explicitly state when to use it over alternatives such as upload_video_material or upload_content_image. No exclusions or alternative guidance are provided.
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.
53 tool updates
v0.1.0- First observed
batch_get_user_info - First observed
blacklist_users - First observed
check_credentials - First observed
count_materials - First observed
create_conditional_menu - First observed
create_draft - First observed
create_menu - First observed
create_qrcode - First observed
create_tag - First observed
delete_conditional_menu - First observed
delete_draft - First observed
delete_mass_message - First observed
delete_material - First observed
delete_menu - First observed
delete_published_article - First observed
delete_tag - First observed
download_temp_media - First observed
get_autoreply_config - First observed
get_current_menu - First observed
get_draft - First observed
get_jsapi_ticket - First observed
get_mass_status - First observed
get_material - First observed
get_publish_status - First observed
get_published_article - First observed
get_server_ips - First observed
get_statistics_report - First observed
get_user_ids_by_tag - First observed
get_user_info - First observed
list_blacklist - First observed
list_comments - First observed
list_drafts - First observed
list_materials - First observed
list_published - First observed
list_tags - First observed
list_users - First observed
mark_comment_elect - First observed
send_custom_message - First observed
send_subscribe_message - First observed
send_template_message - First observed
tag_users - First observed
try_match_conditional_menu - First observed
unblacklist_users - First observed
unmark_comment_elect - First observed
untag_users - First observed
update_draft - First observed
update_tag - First observed
update_user_remark - First observed
upload_content_image - First observed
upload_cover_image - First observed
upload_temp_media - First observed
upload_video_material - First observed
upload_voice_material
TDQS
Scored across 53 tools
Most tools are clearly separated by resource type (drafts, published articles, materials, users, tags, menus, comments, messages), so an agent can usually distinguish them by the object noun. A few boundary overlaps exist—upload_temp_media versus upload_video_material/upload_voice_material, and get_publish_status versus get_mass_status—but the descriptions provide enough clarification.
The set consistently uses snake_case verb_noun naming, such as create_draft, delete_material, list_tags, and get_user_info. Minor deviations include batch_get_user_info, try_match_conditional_menu, and inconsistent use of material versus media for similar upload concepts, but these do not seriously undermine the overall pattern.
53 tools is far beyond a well-scoped MCP surface and falls into the extreme count category. While the WeChat Official Account domain is broad, exposing this many individual operations makes tool selection heavy and risks overwhelming agents.
The set covers many API areas but has critical lifecycle gaps: there is no tool to submit or publish a draft, no send-mass-message tool, and no reply/delete-comment operation. These omissions create dead ends, such as creating a draft without the ability to publish it or querying mass-message status without the ability to send a mass message.
Maintenance
Related MCP Connectors
Create, schedule, and publish social posts, manage accounts, and read analytics as MCP tools.
Remote MCP server for China brand visibility, destination demand, and KOL discovery workflows.
Social media MCP: publish, schedule & analyze posts on TikTok, Instagram, YouTube, LinkedIn & X
Schedule, publish, and analyze social media posts across 11 platforms from any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables management of WeChat Official Accounts by supporting draft creation, image uploads, and content publishing via the MCP protocol. It provides tools for interacting with the WeChat API, including secure token caching and draft list management.-
- FlicenseAqualityFmaintenanceEnables AI agents to publish articles to WeChat Official Account (微信公众号). Supports image upload, draft creation, and publishing via standardized MCP protocol.51-
- FlicenseAqualityCmaintenanceEnables management of WeChat Official Account content, including creating, publishing, and deleting drafts and materials, through MCP tools.527-
- FlicenseAqualityBmaintenanceA local MCP server that enables managing WeChat Official Account content through the logged-in web session, including reading published articles and analytics, uploading images, and creating drafts after explicit confirmation.91-