onebot11-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@onebot11-mcp把群 987654321 里的成员 123456 禁言 10 分钟"
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.
irmia-onebot11-mcp
适配 I.R.M.I.A 框架的 OneBot 协议功能补充 MCP —— 目前仅适配 SnowLuma。
把 SnowLuma(OneBot v11 协议端) 里除了收发消息之外的那批 action 包成 MCP 工具: 查登录号 / 群 / 成员 / 消息 / 凭据,以及踢人、禁言、改群名片、改群名、退群、处理加好友与加群申请等管理操作。
协议:MCP over stdio(JSON-RPC 2.0,
protocolVersion=2024-11-05)依赖:零运行时依赖 —— 只用 Node 22 内置的
fetch与WebSocket,不需要npm install纪律:stdout 只输出协议消息,一切日志走 stderr(改代码时别破这条)
配置:只走环境变量;
access_token不落盘、不打印(日志里打码)
它刻意不碰"收发消息"。
send_msg/send_group_msg/send_private_msg/send_forward_msg一类一个都没有 —— 发消息是框架主链自己那件事,本服务只做收发之外的查询与管理。目前只适配 SnowLuma。 它按 SnowLuma 的 action 表与返回话术核过,不保证与其他 OneBot v11 实现(NapCat / Lagrange / go-cqhttp 等)逐字段同形。
一、它是什么 / 为什么会有它
I.R.M.I.A 框架自己负责收发消息那半条链路(会话、唤醒、已读、平台消息 id…)。 可 OneBot 协议里还有另一半:那些"收发之外"的 action —— 查这个登录号是谁、群里有谁、 某条消息原文是什么,以及踢人 / 禁言 / 改名片 / 退群 / 批申请这类会真的动到别人或群的管理动作。
这一半不适合塞进框架主链(它们是按需调用的运维面,且风险等级完全不同), 所以做成一个独立的 MCP server:框架按需拉起它、按需调用其中的一件工具, 权限与风险都收在"模型决定要不要调这一件"这一层。
与框架的关系:I.R.M.I.A 通过 config.json 的 mcp.servers 声明它,
模型侧通过框架的 mcp 工具访问(不带 server 看全部、带 server 看它的工具清单、
server + tool 就是调用)。
Related MCP server: Telegram Bot MCP
二、前置条件
项 | 要求 |
Node | ≥ 22.4.0(低于这个版本没有内置 |
SnowLuma | 已在跑,且至少开了一条:HTTP 适配器(默认 |
鉴权 | 知道对应适配器的 |
三、环境变量
变量 | 必填 | 默认值 | 说明 |
| 是 | 无 | 两条通道令牌相同时就用它 |
| 否 |
| HTTP 适配器地址;设 |
| 否 |
| 正向 WS 地址;设 |
| 否 | 同上 | HTTP 与 WS 令牌不一致时覆盖 HTTP 那条 |
| 否 | 同上 | 同上,覆盖 WS 那条 |
| 否 |
| 单次调用超时(毫秒,正整数) |
| 否 | 空 |
|
| 否 |
|
|
降级规则:只有"连不上 / 超时 / 路径不对"才换另一条通道; 协议端明确回了失败(鉴权失败、参数错、目标不存在…)不换路重试 —— 那是对结果的判决,换条路只是把同一个错再犯一遍。
WS 那条只能走
?access_token=查询参数形态:Node 内置WebSocket不支持自定义握手头。 URL 里不要加/api一类路径前缀,根路径(Universal角色)就能既收事件又调 API。
四、跑起来
# 任意平台(Windows PowerShell / Git Bash / Linux / macOS 同理)
export ONEBOT_ACCESS_TOKEN="<你的适配器令牌>"
node "<本仓库绝对路径>/index.js"Windows PowerShell 等价写法:
$env:ONEBOT_ACCESS_TOKEN = "<你的适配器令牌>"
node "<本仓库绝对路径>\index.js"刻意不用 npx、不依赖 *.cmd:node <绝对路径>/index.js 就够了(Windows 上尤其如此)。
起来以后它什么都不打印,只在等 stdin。看到下面两行 stderr 说明活着:
[onebot11-mcp] 启动 v1.0.0|http=http://127.0.0.1:3000 ws=ws://127.0.0.1:3001 token=AbC***yz(共 32 字符) timeout=10000ms readonly=false transport=auto
[onebot11-mcp] stdio 通道就绪,等待 JSON-RPC 请求想单独验一下协议层通不通,手敲一行也行(回包是 JSON):
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node "<本仓库绝对路径>/index.js"只想看、不想改?
export ONEBOT_READONLY=1
node "<本仓库绝对路径>/index.js" # 此时 tools/list 只会列出 14 个 get_* 工具只读模式下调用写操作不会被"假装执行",而是直接告诉调用方它没注册:
set_group_kick 是会改状态的写操作,而当前 ONEBOT_READONLY=1,所以这个工具没有注册。
怎么办:把 ONEBOT_READONLY 去掉(或设成 0)重启本 MCP server,再调用。五、接进 I.R.M.I.A(以及别的 MCP 客户端)
5.1 接进 I.R.M.I.A
在 I.R.M.I.A 的 config.json 里加一条 mcp.servers(本项目实际被使用的接法就是这样):
{
"mcp": {
"servers": [
{
"name": "onebot11-mcp",
"command": "<node.exe 绝对路径>",
"args": ["<本仓库绝对路径>\\index.js"],
"env": {
"ONEBOT_HTTP_URL": "http://127.0.0.1:3000",
"ONEBOT_WS_URL": "ws://127.0.0.1:3001",
"ONEBOT_HTTP_ACCESS_TOKEN": "<HTTP 适配器令牌>",
"ONEBOT_WS_ACCESS_TOKEN": "<WS 适配器令牌>",
"ONEBOT_TIMEOUT_MS": "10000"
},
"desc": "OneBot v11 里「收发消息之外」的那批 action:查登录号/群/成员/消息,以及踢人、禁言、改群名片、退群等管理操作。"
}
]
}
}要点:
command用 node.exe 的绝对路径(where node/which node拿),args是本仓库index.js的绝对路径;env里放令牌。令牌只写在这里,别写进任何会被 git 跟踪的文件;加完 server 之后,模型侧用框架的
mcp工具就能看到它的工具清单(框架会把"已见 N 件工具"记进上下文索引);只想给它只读权限:在
env里加"ONEBOT_READONLY": "1"。
5.2 接进别的 MCP 客户端
外层键名常见的是 mcpServers(WorkBuddy / Claude Code / Cursor 等):
{
"mcpServers": {
"onebot11": {
"command": "<node.exe 绝对路径>",
"args": ["<本仓库绝对路径>\\index.js"],
"env": {
"ONEBOT_HTTP_URL": "http://127.0.0.1:3000",
"ONEBOT_WS_URL": "ws://127.0.0.1:3001",
"ONEBOT_ACCESS_TOKEN": "<粘贴你的令牌>",
"ONEBOT_TIMEOUT_MS": "10000"
}
}
}
}改完重启客户端才生效。Claude Desktop 的配置在 %APPDATA%\Claude\claude_desktop_config.json。
六、工具一览与风险
一共 27 件。
查询类(14 件,只读)
工具 | 干什么 | 注意 |
| 查当前登录账号的昵称与号 | 排查链路的第一步 |
| 查协议端运行状态与收发统计 | 判断"还是活的吗" |
| 查协议端版本与应用名 | |
| 拉好友列表 | 好友多时结果很长 |
| 拉已加入的群列表 |
|
| 查群资料(群名 / 人数等) | |
| 拉群成员列表 | 大群一次几百上千条 |
| 查某成员在群里的资料 | |
| 按 |
|
| 取合并转发里的内容 |
|
| 取图片信息与下载地址 |
|
| 取语音信息,可 | 带 base64 时响应可能很大 |
| 取指定域名的 Cookie | ⚠ 会吐出登录凭据,别贴到别处 |
| 取 CSRF Token(bkn) | ⚠ 会吐出登录凭据,别贴到别处 |
管理类(13 件,会改状态 —— 全部高危)
工具 | 干什么 | 副作用 / 风险 |
| 撤回一条已发消息 | 改会话状态;一般只有两分钟内有效 |
| 把成员踢出群 | 改对方状态,不可撤销 |
| 禁言群成员(秒), | 改对方状态;不传默认 1800 秒 |
| 开 / 关全员禁言 | 改整个群的状态; |
| 设 / 撤管理员 | 改对方权限;需要群主身份 |
| 改群名片(空串清除) | 改对方在该群的展示 |
| 改群名 | 改整个群的状态,所有人可见 |
| 退出群 | 改群状态,退了要重新加 |
| 设专属头衔(空串清除) | 改对方称谓 |
| 同意 / 拒绝好友申请 | 改双方好友关系; |
| 同意 / 拒绝加群申请 | 改群成员构成; |
| 给好友点赞(默认 1 次) | 改对方点赞数;有每日上限 |
| 群签到打卡 | 留下你的签到记录 |
一句话:名字不是 get_ 开头的,都会真的动到别人或群里去。
每件工具的 description 里都写明了"会改变对方或群的状态",让模型在调用前有机会刹车。
七、失败怎么报
失败一定说失败。 只要 retcode !== 0 或 status === 'failed',tools/call 的结果就是
isError: true,并带上 retcode、kind、协议端原话与"怎么办",绝不含糊地当成成功。
| 什么时候 | 典型提示 |
| 参数没过 JSON Schema | 缺必填 / 类型不对 / 多写了协议端不认的字段(会猜你是不是想写别的键) |
| 环境变量配错 | URL 非法、 |
| 连不上 |
|
| 令牌不对 | HTTP 401 / WS 被 1008 踢 —— 提醒 HTTP 与 WS 是两份令牌 |
| URL 路径不对 | HTTP 404:协议端有它期望的路径,跟 URL 前缀对不上 |
| 协议端回了失败 | 见下表 |
| 超时没回包 | 建议调大 |
retcode 对照
retcode | 含义 | 怎么办 |
| 成功 | —— |
| 动作没做成(ACTION_FAILED) | 协议端吞一切业务失败的总出口;看 wording:多半是权限不足或目标不对 |
| 协议端内部错误 | 不是参数问题;看协议端日志,重试大概率还是这条 |
| 请求格式不对 | 缺必填 / 类型不对 / HTTP 方法错了 |
| 令牌不对或没给(unauthorized) | 检查环境变量有没有真的设上、值有没有首尾空格、HTTP 与 WS 是不是两份令牌 |
| 被拒绝(denied) | 通常权限不足:这个操作要管理员 / 群主 |
| 目标不存在,或这个 action 不认 | 先用 |
除了 retcode,还会从协议端的人工话术(wording)里再做一层关键词判读,把四类情况直接点出来:
权限不足 / 目标不存在 / 频率限制 / 未登录 —— 因为协议端的原话常常比 retcode 更具体
(同样是 100,可能是"权限不足",也可能是"被风控")。
八、自测
export ONEBOT_ACCESS_TOKEN="<你的令牌>"
node "<本仓库绝对路径>/selfcheck.js"它会真的把 index.js 当子进程拉起来,用 stdio 走一遍完整协议,然后对着协议端跑两个真查询:
── 1. 握手(initialize) ───────
通过 protocolVersion 是 2024-11-05:2024-11-05
通过 serverInfo 回来了:onebot11-mcp@1.0.0
── 2. 工具清单(tools/list) ───
通过 工具数量等于 27:实际 27
通过 不支持的 set_restart 确实没注册:已剔除
── 3. 参数围栏 ─────────────────
通过 缺/写错参数时 isError=true 且没打到协议端
── 4. 真跑 gets ────────────────
我:<昵称>(<号>)| via http
共 N 个群| via http退出码 0 = 全过,非 0 = 有失败项(缺 token、服务没起、工具数不对都会是非 0,并把原因打清楚)。 ⚠ 它打印的是真实数据,别把那段输出贴到公开的地方。
九、几个刻意的取舍(也算自查记录)
set_restart不做。 它在适配目标里是显式写死的空壳(调用只会返回"不支持")。 按"协议端不支持就不做"的原则剔除 —— 宁可少给一件工具,也不给一件百分百失败的工具。参数签名按目标协议端的 action 表核,而不是照 OneBot 官方文档抄。 已知差异举例:
set_group_leave没有is_dismiss;set_friend_add_request没有remark;get_forward_msg的两个 id 是字符串;set_group_card的键是card、set_group_name是group_name。可选的默认值不替协议端猜。 调用方没传的参数就不发,由协议端套它自己的默认值。
数字允许字符串传进来。 手写 JSON 时
12345与"12345"太容易混,做一次宽松转换; 但缺参 / 多传 / 类型完全不对一律照错处理。不做频率限制、不做偷偷重试。 限速是协议端 / 平台侧的事,本服务只把"被限速了"这句人话原样带回 —— 偷偷重试会把一次失败放大成一场雪崩。
失败不包装成成功(见第七节):
kind === 'onebot'的失败绝不许被上层当成成功。
十、它不做的事
不读不写任何配置文件(只从进程环境变量读配置);
不打印、不落盘、不提交
access_token(日志里一律打码成AbC***yz(共 32 字符));不收发消息 —— 不做
send_*一类;也不做登录 / 扫码 / 事件订阅;不实现协议端自己都没实现的 action;
目前只适配 SnowLuma,不对其他 OneBot v11 实现做兼容承诺。
十一、许可与致谢
许可证:AGPL-3.0(GNU Affero General Public License v3.0)—— 全文见 LICENSE。 本项目是 I.R.M.I.A 项目的一部分,与主仓库同许可。
本项目代码为原创:零运行时依赖,没有引入或改写任何第三方库的代码 (只用 Node 内置的
fetch与WebSocket)。致谢 SnowLuma:它是本项目的适配目标, 其 OneBot v11 协议端实现与 action 表是参数签名与返回话术的依据。 本项目不包含它的任何代码,与它之间只是"客户端 ↔ 协议端"的关系。
致谢 OneBot v11 标准:工具命名与语义以此为共同语言。
Available Tools
27 toolsdelete_msgB
撤回一条已发出去的消息。会改变会话状态:消息会被抹掉。
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | 要撤回的消息 id;两分钟内的消息才有机会撤回成功 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the key trait that this mutates state and erases the message ('会改变会话状态:消息会被抹掉'), which is genuine destructive-operation context. However it omits permission/auth requirements, irreversibility or failure behavior, and rate limits, so it is only partially complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero padding; the action is stated first and the state-changing consequence second. Every clause 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 one-parameter destructive tool with no output schema and no annotations, the description covers the action and the destructive effect but says nothing about failure conditions, required permissions, or what the caller gets back. It is adequate but leaves meaningful gaps for a state-mutating 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?
There is a single parameter and schema coverage is 100%, with the schema itself documenting the message_id and the two-minute eligibility window. The description adds no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('撤回一条已发出去的消息' / recall an already-sent message), which clearly separates it from the read-oriented get_msg sibling. It does not name any sibling or state how it differs from other 'set_' mutation tools, 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 when-to-use or when-not-to-use guidance, no mention of the two-minute recall window (that constraint lives only in the schema), and no routing to alternatives such as get_msg for reading or other message operations. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cookiesA
取指定域名的 Cookie。等于交出登录凭据,别往群里或日志里贴。
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | 域名,默认 qun.qq.com | qun.qq.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses the single most important behavioral trait: the return value is equivalent to login credentials and must not be shared or logged. It omits finer details (read-only nature is only implied by 取, no mention of permissions, storage location, or rate limits), but for a one-parameter read tool this is substantial added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero padding: the action and scope come first, and the safety warning follows. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-annotation, no-output-schema tool, the definition covers what it returns (a Cookie), for which domain, and the critical sensitivity caveat. Only minor gaps remain, such as return format or how a missing/expired cookie is surfaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the domain parameter is already documented with its default. The description only restates '指定域名' without adding format, validation, or defaulting behavior beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource and scope: retrieve the Cookie for a specified domain. The resource is unambiguous and clearly distinct from siblings like get_csrf_token or get_login_info. However, it never explicitly routes the agent against those adjacent tools, so it stops short of the top band.
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 the other credential-adjacent siblings (get_csrf_token, get_login_info) or on preconditions. The only guidance given is a handling warning about not pasting the result into chats or logs, which is a caution rather than a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_csrf_tokenB
取 CSRF Token(bkn)。属于登录凭据,别外传。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the returned token is a login credential that must not be leaked, which is genuine behavioral context. However, it says nothing about authentication requirements, expiry/reuse behavior, or when the token becomes invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and followed by the one behavioral caveat that matters. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema getter the definition is minimally workable, but the agent is left guessing what the token is for, how long it lives, and where it is consumed. The sensitive-credential note is the only completeness-relevant content provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to document; the baseline for a no-argument tool applies. The description correctly adds no parameter noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('取 CSRF Token(bkn)'), which is unambiguous. It is distinguishable from siblings like get_login_info and get_cookies because the resource is named precisely, though it does not explicitly contrast itself against those closely related credential tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool, what it is needed for, or which alternatives (get_cookies, get_login_info) exist. The only instruction is a security warning, not a usage condition, so an agent must infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forward_msgA
取合并转发中的内容;id 或 message_id 传一个即可。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 转发消息的 id(字符串形态) | |
| message_id | No | 转发消息的 message_id(字符串形态) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the behavioral trait ''只读'' (read-only), which is meaningful context, but says nothing about permissions, rate limits, error behavior when neither id is given, or the shape of returned content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses with the purpose front-loaded, the parameter rule second, and the read-only note last. Every clause 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?
With no output schema and no annotations, the description should say more about what is returned (the merged forward content structure) and what happens when neither identifier is provided. It covers purpose, parameter alternation, and read-only status, but leaves the return behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning by clarifying that either id or message_id may be supplied (an either/or acceptance rule the schema does not state). It stops short of explaining what each identifier represents when they differ.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (取合并转发中的内容 – retrieve content from a merged forward message), which clearly separates it from get_msg for ordinary messages. It does not name the sibling explicitly, so an agent must infer the distinction between forward-message content and regular message content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful in-tool guidance (''id 或 message_id 传一个即可'' – pass either one), but offers no explicit when-to-use vs the closest sibling get_msg, nor any preconditions. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_friend_listA
拉取全部好友列表。只读;好友多时结果会很长。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose that the operation is read-only and that the result can be very long when there are many friends. However, it omits other behavioral facts an agent would want: no return format, no pagination or truncation behavior, and no mention of auth or permission 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?
Two short sentences, zero filler, with the core action front-loaded and the safety/length caveat secondary.
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 list tool with no output schema, the description covers the essentials: what it fetches, that it is read-only, and that the payload can be large. Only the lack of any return-shape or pagination hint keeps it short of perfect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a parameterless tool is 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 and resource ('拉取全部好友列表' – fetch the complete friend list) and makes the scope explicit with '全部' (all). It is clear what the tool returns, though it does not name the sibling get_group_list or otherwise distinguish itself from the other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_group_list, nor any note on prerequisites. 'Pull the full list' implies there is no filtering option, but that is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_group_infoB
按群号查群资料(群名、人数等)。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 | |
| no_cache | No | true=跳过协议端缓存、向 QQ 重新拉一次(更慢但更准),默认 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully declares the operation is read-only ('只读'), but does not explain authentication needs, rate limits, cache behavior, or response completeness beyond the brief field 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 two short clauses and is front-loaded with the core action. Every element earns its place by naming the lookup key, the resource, and the read-only nature.
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 tool with a fully described schema and no output schema, the description gives enough context to invoke it correctly. It could be stronger by naming sibling alternatives or cache behavior, but it is largely complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents group_id and no_cache. The description adds no parameter-level details beyond implying that group_id is the lookup key, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: query group profile by group ID, with examples of returned fields (group name, member count, etc.). It distinguishes broadly from list-style siblings, but does not explicitly contrast with tools like get_group_member_info or get_group_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance beyond the implied action of looking up a group by ID. It does not mention alternatives such as get_group_list for discovering IDs or get_group_member_info for member data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_group_listA
拉取已加入的群列表。只读;no_cache=true 强制刷新。
| Name | Required | Description | Default |
|---|---|---|---|
| no_cache | No | true=跳过协议端缓存、向 QQ 重新拉一次(更慢但更准),默认 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key trait that this is a read-only (只读) operation, and notes the cache-refresh behavior. However it says nothing about return format, pagination, or ordering, and read-only alone is a thin behavioral profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded clauses with no filler: the operation is stated first, then the safety trait and the cache toggle. 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 zero-required-parameter read tool with no output schema and full schema coverage, the description is nearly sufficient. It leaves only minor gaps around result ordering/pagination that an agent might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter's meaning is fully documented in the schema. The description's 'no_cache=true 强制刷新' largely restates that definition, adding little beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: fetch the list of groups the account has joined (拉取已加入的群列表). This is clearly distinguishable from single-group siblings like get_group_info and get_group_member_list, though it never names an alternative 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?
'只读' plus the no_cache hint implies usage context, but there is no explicit when-to-use vs alternatives guidance (e.g., when to prefer this over get_group_info, or when a cache refresh is warranted beyond the parameter's own definition).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_group_member_infoB
查指定 QQ 在某个群里的资料(名片、角色等)。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | 目标成员的 QQ 号 | |
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 | |
| no_cache | No | true=跳过协议端缓存、向 QQ 重新拉一次(更慢但更准),默认 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the key trait that the operation is read-only (只读), which is valuable, but says nothing about permissions, rate limits, or the shape of the returned profile data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and scoping, with the read-only flag placed last. Nothing is wasted, though it is terse enough to leave gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place return content could be described, and it only gestures at it with 名片、角色等. Combined with the missing usage guidance against siblings, it is adequate but leaves real gaps for a lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, including the useful cache hint on no_cache. The description adds no parameter-level detail beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (query a given QQ's profile within a group) and lists example fields (名片/角色). It is clear about what it returns, though it never distinguishes itself from the sibling get_group_member_list, which an agent could easily confuse it with.
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 when-to-use guidance, no prerequisites, and no mention of the obvious alternative get_group_member_list. The agent must infer that this is the single-member lookup versus the list tool on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_group_member_listB
拉某个群的成员列表。只读;大群一次几百上千条。
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 | |
| no_cache | No | true=跳过协议端缓存、向 QQ 重新拉一次(更慢但更准),默认 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It usefully adds that the tool is read-only ('只读') and that large groups return hundreds to thousands of records at once, which informs output volume. However, it omits behavioral aspects such as pagination, permissions, or how caching interacts with the no_cache parameter (left to the schema), so it only partially discharges the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses separated by a semicolon, front-loading the resource and then adding two critical behavioral flags. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description covers purpose, read-only nature, and output volume, but it does not mention whether the list is paginated, if there is a maximum return size, or any permission requirements. The no_cache parameter (which controls cache behavior) is not explained in the description, leaving a gap that the schema partially fills.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters (group_id and no_cache) including usage notes and defaults. The description adds no additional parameter semantics beyond implying a group target, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('拉' = fetch) and resource ('某个群的成员列表' = a group's member list), which distinguishes it from get_group_list and get_group_member_info by resource scope. However, it does not explicitly name or contrast with sibling tools, so it remains a clear but non-differentiating restatement of the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like get_group_member_info (for a single member). The clause '大群一次几百上千条' hints at a size caveat but does not state when to prefer or avoid this tool, leaving the agent without routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_imageA
取图片信息与下载地址;file 或 file_id 传一个。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | 图片文件名/缓存名 | |
| file_id | No | 图片的 file_id(优先用这个) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does declare the operation is read-only ("只读"), which is a meaningful trait, but says nothing about rate limits, auth, caching behavior, or what the returned download address looks like or how long it is valid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence plus two short clauses: purpose, parameter constraint, and safety profile, with zero filler. 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?
For a simple two-parameter read tool with 100% param coverage and no output schema, the description covers what it returns (image info and download URL), how to call it, and that it is read-only. The main residual gap is that the format/lifetime of the returned download address is not addressed.
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 100%, so the baseline is 3, but the description adds real value beyond the schema: it clarifies the either/or relationship ("传一个") that the schema alone does not convey, since both properties are optional with no required fields. It does not restate the schema's own hint that file_id is preferred.
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: retrieve image info and a download address ("取图片信息与下载地址"). It is the only image-oriented tool among the siblings, so it is naturally distinguishable, though it does not explicitly contrast itself with any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives invocation guidance ("file 或 file_id 传一个" — supply one of the two), which is useful since no parameter is marked required. However, it offers no when-to-use context, no prerequisites, and no mention of any alternative tool or condition under which to prefer one identifier over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_login_infoA
查询当前登录 QQ 的昵称与 QQ 号。只读,不改任何状态。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the safety profile ('只读,不改任何状态'), which is the most important trait for an agent deciding whether to call it, but omits auth prerequisites, behavior when no session exists, and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, tightly front-loaded: what it returns first, safety profile second. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial, parameterless read tool with no output schema, the description compensates by naming the returned fields (nickname and QQ number) and the read-only nature. Only the not-logged-in / error case is left unstated, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify beyond the schema. Baseline 4 applies; the description adds no parameter detail because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (查询) and the exact resource and return fields (当前登录 QQ 的昵称与 QQ 号). An agent can immediately distinguish this from get_version_info, get_status, or get_friend_list without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '当前登录 QQ' implies the context in which it applies (an authenticated session), but there is no explicit when-to-use guidance, no exclusions, and no mention of an alternative sibling for identity data. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_msgB
按 message_id 取一条消息的原文与发送者。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | 消息 id(不能是 0),来自事件里的 message_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden, and it usefully declares the safety profile itself (只读 / read-only), which is the key trait an agent needs. It does not disclose error behavior for a missing/invalid message_id or any rate/scope constraints, so it is adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very short clauses, front-loaded with the action and key, and nothing redundant. It is efficient; it could be marginally richer without losing its compactness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with 100% schema coverage and no output schema, the description goes slightly beyond the minimum by naming the return payload (original message text and sender). The remaining gap — what happens when the message is absent — is minor at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single message_id parameter is fully documented in the schema (integer, non-zero, sourced from an event). The description only restates that the lookup is by message_id, adding no format or constraint information beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (取/fetch) and resource (一条消息/a single message), plus the retrieval key (按 message_id) and the returned fields (原文与发送者). This clearly separates it from write siblings like delete_msg and from list-style siblings, though it never names the closest alternative (get_forward_msg) 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?
There is no guidance on when to use this tool versus alternatives such as get_forward_msg or the get_*_list tools, and no prerequisites or prerequisites noted beyond the key name. Usage is only weakly implied by the parameter mention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recordA
取语音信息;out_format 可转码。file/file_id 传一个。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | 语音文件名/缓存名 | |
| file_id | No | 语音的 file_id(优先用这个) | |
| out_format | No | 要转成的格式;不传就只给信息不转码 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it usefully declares '只读' (read-only) and that omitting out_format skips transcoding. However it says nothing about permissions, error behavior, or the nature of the returned data, so meaningful behavioral gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four telegraphic clauses, front-loaded with the core action, with zero filler. Everything stated earns its place for 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?
For a 3-optional-param tool with no output schema and no annotations, the description covers purpose, parameter exclusivity, transcoding, and read-only status. But with no output schema, what '语音信息' actually returns (path, URL, base64, metadata) is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds semantics the schema does not encode: file and file_id are mutually exclusive alternatives ('传一个') and out_format is purely optional/transcoding. That mutual-exclusivity hint is genuine added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — retrieving voice/audio records — plus an optional transcode capability via out_format. It is clearly distinguishable by resource from siblings like get_image and get_msg, though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real parameter guidance ('pass one of file/file_id') but no when-to-use versus when-not, no conditions for preferring this over get_msg or get_image, and no prerequisites. Usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusA
查询 OneBot 运行状态与收发统计。只读。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden and does state '只读' (read-only), which is a useful key trait beyond the empty schema. However, it does not cover other behavioral aspects such as permissions, rate limits, or output characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short phrases, front-loaded with the core purpose and ending with the read-only note. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument, read-only status query with no output schema or annotations, the description says what it does and that it is read-only, which is largely sufficient. It could specify what statistics are returned, but the complexity is low enough that this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is no parameter information to add, and none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (查询/query) and resource (OneBot 运行状态与收发统计 / running status and send/receive statistics). This is clear, but it does not explicitly distinguish itself from siblings such as get_version_info or get_login_info, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. '只读' signals the operation is read-only but does not explain context, prerequisites, or include/exclude conditions relative to the many sibling get_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_version_infoA
查询协议端版本与应用名。只读。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden; it does add the useful safety signal 只读 (read-only), which rules out mutation. However it says nothing about the response shape, timing, or whether the protocol-side version can differ from the client version, so behavioral disclosure remains thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the queried resource front-loaded and the read-only property stated last. Nothing could be removed without losing 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 trivial zero-parameter read tool with no output schema, the description identifies both the act and the content of the result (version and application name). It is nearly complete, missing only detail on how the returned values are shaped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is fully closed (additionalProperties: false). Baseline 4 applies for a param-free tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (查询) and a specific resource pair (协议端版本与应用名), which an agent can separate from siblings like get_status (runtime status) and get_login_info (account identity). It is clear but does not explicitly differentiate itself from those siblings in prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the nearby read tools (get_status, get_login_info), nor any prerequisites or exclusions. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_likeB
给好友点赞,默认 1 次。会改变对方的点赞数。
| Name | Required | Description | Default |
|---|---|---|---|
| times | No | 点赞次数,默认 1;QQ 有每日上限 | |
| user_id | Yes | 要点赞的 QQ 号(通常得是好友) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key side effect (it changes the recipient's like count) and the schema adds a QQ daily cap, but it omits permission/friend requirements, failure modes, and mutability caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with purpose and default, and no wasted wording. Every sentence contributes either the action or the side effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the action and side effect adequately. However, it says nothing about authorization prerequisites or what happens on failure/daily-limit exhaustion, leaving meaningful gaps for a write 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 100%, so both parameters are already documented, including the default and the daily limit. The description restates the default (1 time) without adding syntax or constraint detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (点赞/like) and resource (好友/friend), plus the default behavior (default 1 time). It distinguishes itself from the sibling get_/set_ tools, which are all reads or settings mutations, so an agent can identify this as the 'like a friend' action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternatives (there are none among the siblings). The only contextual hint is the default count and an implied 'usually a friend' requirement, which is not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_friend_add_requestA
同意或拒绝好友申请。会改变双方的好友关系。
| Name | Required | Description | Default |
|---|---|---|---|
| flag | Yes | 申请事件的 flag:来自好友申请事件,是一次性句柄,别自己编 | |
| approve | No | true=同意,false=拒绝,默认 true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavioral effect—that approving or rejecting changes the friend relationship for both parties—but it does not cover permissions, reversibility, notifications, or other side effects expected for a mutation 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 description is two short, front-loaded sentences with no wasted text. It states the action first and then the primary consequence.
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 low-complexity mutation tool with a fully covered schema and no output schema, the description is nearly complete: it identifies the action and its relationship-changing effect. It stops short of describing permissions or return behavior, but those gaps are minor given the schema's parameter documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both the one-time flag handle and the approve boolean. The description adds no parameter-level detail beyond what the schema provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb pair (同意或拒绝) and resource (好友申请), making the tool's purpose immediately clear. It also distinguishes itself from the sibling set_group_add_request by explicitly scoping to friend requests rather than group requests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose: handle an incoming friend request by approving or rejecting it. However, it does not explicitly state when to use this tool versus the sibling set_group_add_request, nor does it mention any prerequisites beyond what the schema already provides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_add_requestC
同意或拒绝加群申请。会改变群的成员构成。
| Name | Required | Description | Default |
|---|---|---|---|
| flag | Yes | 申请事件的 flag:来自加群申请事件,是一次性句柄 | |
| type | No | 同 sub_type 的老写法,两者都没有时按 add | |
| reason | No | 拒绝时给对方的理由,同意时忽略 | |
| approve | No | true=同意,false=拒绝,默认 true | |
| sub_type | No | 申请类型:add=申请入群,invite=被邀请人;不传按 add 处理 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the full behavioral burden. It discloses that the tool 'will change group member composition' (会改变群的成员构成), but this is partially inaccurate for rejection and omits permission requirements, rate limits, and other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and a side-effect note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and five parameters, the description is thin. While parameters are covered by the schema, the description lacks usage context, prerequisites, and detailed behavioral disclosure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are documented in the schema. The description adds no parameter-level details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action 'approve or reject group join requests' (同意或拒绝加群申请), clearly identifying verb and resource. It does not explicitly reference siblings like set_friend_add_request, but the resource 'group join request' implicitly distinguishes it from other request tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor on prerequisites or event context. The description only states the action, leaving the agent to infer usage from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_adminB
设置或取消管理员。会改变对方在该群的权限。
| Name | Required | Description | Default |
|---|---|---|---|
| enable | No | true=设为管理员,false=取消,默认 true | |
| user_id | Yes | 目标成员的 QQ 号 | |
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. '会改变对方在该群的权限' does disclose that this is a mutation of another user's privileges, but nothing is said about required permissions, reversibility, or failure modes for a privileged 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?
Two short sentences, front-loaded with the action, with no filler. It is efficient, though extremely terse for a privileged mutation.
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?
A mutation tool with no annotations and no output schema should at minimum state the authorization prerequisite and any side effects on the target; the description only notes that permissions change, leaving an agent unable to predict errors or requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself documents all three parameters, including the enable default and the get_group_list hint for group_id. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair: setting or unsetting group administrator, plus the effect (the target's permissions in that group change). It is clearly distinguishable from siblings like set_group_card or set_group_kick, though it never names or contrasts an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the purpose; there is no statement of when to prefer this over set_group_special_title or other role tools, and no prerequisites (e.g. the caller must be group owner) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_banB
禁言群成员(秒),0=解除禁言。会改变对方的状态。
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | 目标成员的 QQ 号 | |
| duration | No | 禁言时长(秒);0 表示解除,不传默认 1800(30 分钟) | |
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation changes the target's state ('会改变对方的状态'), which is useful mutation context, but says nothing about permissions required, reversibility, rate limits, or whether the actor needs admin rights.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short and front-loaded: it names the action, the unit, and the 0 special case in one compact sentence. Nothing is wasted, though it is terse to the point of under-specification.
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 3-parameter mutation tool with no annotations and no output schema, the description covers the core semantics but omits permission requirements, consequences, and return behavior. It is minimally viable 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 coverage is 100%, with each parameter documented including the duration default and the 0=unmute semantics. The description reinforces the 0=unmute rule and the seconds unit, but adds little beyond what the schema already states, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: mute a group member, with duration in seconds and 0 meaning unmute. Sibling tools like set_group_whole_ban and set_group_kick exist, but the description does not explicitly distinguish this per-member mute from those, so it is clear without being sibling-differentiating.
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 through the 0=unmute convention, which signals both muting and unmuting. However, it gives no explicit when-to-use guidance or named alternatives (e.g., set_group_whole_ban for all members), leaving the agent to infer from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_cardB
改成员的群名片,传空串可清除。会改变对方在该群的展示。
| Name | Required | Description | Default |
|---|---|---|---|
| card | No | 新名片;传空字符串等于清掉自定义名片 | |
| user_id | Yes | 目标成员的 QQ 号 | |
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the empty-string clear behavior and that the member's display changes, but says nothing about required permissions/rank, whether a bot may modify other members' cards, or reversibility of the change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core action is front-loaded and the clear-behavior detail follows 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?
There is no output schema and no annotations, so the description must stand alone. It covers the mutation and its clearing behavior but omits permission/authorization context that matters for a tool modifying another member's visible identity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, including the empty-string semantics for card and the guidance to source group_id from get_group_list. The description's 'empty string clears' line merely duplicates the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (change a member's group card) plus the effect (changes their display in that group), which separates it from set_group_name and set_group_special_title. It does not explicitly name a sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this tool versus alternatives such as set_group_admin or set_group_special_title, nor whether it applies only to the caller's own card or any member. Usage is only implied by the tool name and purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_kickB
把成员踢出群。会改变对方的状态,且不可撤销。
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | 目标成员的 QQ 号 | |
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 | |
| reject_add_request | No | true=同时拒绝他以后再加群,默认 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the two most important traits: it mutates the target's state and cannot be undone. It omits prerequisites that matter a lot here — e.g. that the bot must be an admin/owner and cannot kick the owner — so the destructive profile is only partly covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action stated first and the destructive consequence second. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the action and its irreversibility but leaves out permission prerequisites and side effects (e.g. whether the user can re-join, which partly overlaps with reject_add_request). 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 100%, so all three parameters are already documented in the schema (including the useful hint to source group_id from get_group_list). The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — '把成员踢出群' (kick a member out of the group) — which is unambiguous on its own. It does not, however, distinguish itself from the nearby sibling set_group_ban, which is also a member-level punitive action; the agent gets no cue about which one to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use / when-not-to-use guidance and names no alternative. For a tool sitting next to set_group_ban, set_group_leave, and set_group_admin, the absence of routing guidance is a real gap, though the 'irreversible' note implicitly warns that this is the permanent option.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_leaveA
退出指定群。会改变群的状态,退了得重新加。
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two useful traits: the call mutates group state, and the exit is not trivially free because the bot must rejoin afterwards. It omits permission requirements, what happens if the bot is the sole owner, and whether the call succeeds silently — real gaps for an unannotated mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and the consequence immediately after. '会改变群的状态' is mildly redundant for a set_* mutation tool, keeping it from a full 5, but nothing is padded or repetitive.
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 flat single-parameter tool with no output schema, the description supplies the essentials: what it does, that it mutates state, and that the change is costly to reverse. Missing permission/edge-case behavior (e.g. owner leaving) is a minor gap given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% — the schema already says group_id is the target and instructs the agent to source it from get_group_list rather than memory. The description adds nothing about the parameter, so the baseline 3 for high schema coverage is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: '退出指定群' (leave the specified group), which is immediately distinguishable from the mutating siblings like set_group_kick (removing someone else) or set_group_ban. It is clear but does not explicitly name an alternative for contrast, so it stops just short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb itself — an agent infers this is the tool to call when the bot should leave a group. There is no statement of when NOT to use it, no prerequisites (e.g. membership/owner status), and no routing to a sibling such as set_group_kick. The '退了得重新加' clause hints at consequence but is not actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_nameA
改群名。会改变整个群的状态,所有人可见。
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 | |
| group_name | Yes | 新群名 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
无 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?
两句话,共十余字,前置核心动作,没有冗余内容,非常紧凑。
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、无 output schema 的变更型工具,描述只点明了全局可见的副作用,但未覆盖权限要求、可逆性、失败情形等调用者需要的信息,完整性仅达最低可用水平。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema 描述覆盖率为 100%,group_id 和 group_name 的语义已在 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?
明确使用了具体动词「改」和资源「群名」,与同级工具如 set_group_card、set_group_admin 等能清晰区分。作用对象和操作类型一目了然。
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?
描述没有说明何时应使用本工具、何时应改用其他工具,也没有提及前置条件(如权限要求)。只有一句效果说明,缺少使用场景指引。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_signA
在指定群打卡签到。会留下你的签到记录。
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one behavioral trait beyond the schema: '会留下你的签到记录' tells the agent a persistent sign-in record is created. However, it omits idempotency/repeat-sign behavior, error conditions (e.g., already signed), and auth requirements, which matters for a mutation 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?
Two short sentences with zero filler, and the core action is front-loaded in the first sentence. The second sentence adds a side-effect note that 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 one-parameter, no-output-schema mutation, the description covers purpose and the notable side effect (a sign-in record is left behind). It is nearly complete; only repeat-sign behavior and failure modes are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents group_id thoroughly (including 'use get_group_list, don't fill from memory'). The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: check in / sign in (打卡签到) to a specified group. Among the sibling set, it is the only signing tool, so an agent can identify it without ambiguity. It stops short of explicitly contrasting with related set_group_* siblings, but the action itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context (signing in to a group chat) but gives no explicit when-to-use/when-not guidance, prerequisites, or alternatives. For a single-purpose tool this is minimally adequate, but the agent must infer that this is a daily check-in style action rather than an arbitrary write.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_special_titleB
设置成员专属头衔,空串清除。会改变对方在群里的称谓。
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | 目标成员的 QQ 号 | |
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 | |
| special_title | No | 新头衔;传空字符串等于清除 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two useful behaviors: an empty string clears the title, and the change affects how the member is addressed in the group. However, it omits permission requirements, whether the change is visible/notified to the member, and error conditions for a mutation 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?
Two short sentences with no filler, leading with the action and the clearing rule. Nothing is buried or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with no annotations and no output schema, the description covers the core action and the clear-case but says nothing about permissions, side effects on other members, or failure modes. Adequate, but there are visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, including the empty-string-clears rule and the 18-char limit. The description's '空串清除' merely repeats the schema, adding no new parameter semantics; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (设置) plus resource (成员专属头衔) and the clear semantic (空串清除). It is identifiable, but it does not name or contrast with the nearby sibling set_group_card, which also changes how a member appears in a group, so sibling differentiation is incomplete.
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 when-to-use guidance, no mention of the alternative set_group_card, and no stated prerequisites (e.g. whether the caller must be owner/admin or whether the target must already be in the group). The agent must infer all of this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_group_whole_banA
开或关全员禁言。会改变整个群的状态。
| Name | Required | Description | Default |
|---|---|---|---|
| enable | No | true=开启全员禁言,false=关闭,默认 true | |
| group_id | Yes | 目标群号。用 get_group_list 取真实值,别凭记忆填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does warn that the whole group's state changes, which is useful scope context, but it omits permission requirements, whether the change is reversible, and who is affected by existing muted members.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences describing action and impact with zero filler. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with no output schema, the description is adequate but thin: it lacks auth/permission notes and any indication of the result of the operation, which unannotated mutation tools should supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are already documented in Chinese (enable defaults to true; group_id warns against guessing). The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: toggle the whole-group mute (开或关全员禁言). '全员' (all members) implicitly distinguishes it from the per-member sibling set_group_ban, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the tool's effect rather than stated. There is no guidance on when to prefer this over set_group_ban or set_group_admin, and no prerequisites (e.g. requiring bot admin rights) are mentioned.
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.
27 tool updates
v1.0.0- First observed
delete_msg - First observed
get_cookies - First observed
get_csrf_token - First observed
get_forward_msg - First observed
get_friend_list - First observed
get_group_info - First observed
get_group_list - First observed
get_group_member_info - First observed
get_group_member_list - First observed
get_image - First observed
get_login_info - First observed
get_msg - First observed
get_record - First observed
get_status - First observed
get_version_info - First observed
send_like - First observed
set_friend_add_request - First observed
set_group_add_request - First observed
set_group_admin - First observed
set_group_ban - First observed
set_group_card - First observed
set_group_kick - First observed
set_group_leave - First observed
set_group_name - First observed
set_group_sign - First observed
set_group_special_title - First observed
set_group_whole_ban
TDQS
Scored across 27 tools
Every tool targets a distinct resource plus action: get_* queries are cleanly separated by target (version, login, status, friend_list, group_list, group_info, member_list, member_info, msg, forward_msg, image, record, cookies, csrf_token), and set_* management actions each modify a clearly different attribute. There is no meaningful overlap between any two tools.
The get_/set_ verb_noun pattern dominates and is applied consistently across the large majority of tools, and what reads as 'set' vs 'kick/admin/ban' maps to the underlying OneBot action names. Minor deviations like send_like and delete_msg break the prefix scheme but remain readable and memorable.
27 tools is on the heavy side, but they map one-to-one onto distinct OneBot11 API actions (queries, media, credentials, group administration, requests), so each largely earns its place. It is slightly over the ideal range but not bloated with redundancy.
The set covers querying, media retrieval, credentials, and extensive group administration, but the most essential chat operation — sending a message (send_msg / send_group_msg / send_private_msg) — is entirely absent, along with message history and friend-request listing. For a messaging bot this is a notable and surprising gap.
Maintenance
Related MCP Connectors
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
Discover MCP servers and A2A agents; verify, message, post, follow, react, and receive webhooks.
MCP server for AI dialogue using various LLM models via AceDataCloud
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseCqualityCmaintenanceEnables interaction with NapCat QQ bot APIs for group management, messaging, and system operations. Supports HTTP and WebSocket modes with security features like group restrictions and readonly mode.574-
- FlicenseNot gradedqualityAmaintenanceExposes Telegram Bot API operations as MCP tools, enabling managing messages, chats, and forum topics via a FastMCP server.-
- FlicenseAqualityBmaintenanceEnables MCP hosts to bridge with QQ via NapCat/OneBot 11, allowing whitelisted private messages to reach an agent with full tool access while group mentions are answered by a sandboxed pure LLM without system access.8-
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to control a logged-in Discord account through 70+ tools: browsing guilds and channels, sending and reacting to messages, moderating members, managing channels, roles, emojis, and webhooks, plus searching and analyzing captured message history stored in SQLite. Authenticates using tokens already cached by the local Discord client, requiring no bot account or manual token setup.128 npmMIT