Skip to main content
Glama
haoan33

OmniQQ-MCP

by haoan33

OmniQQ-MCP: Full-Featured QQ Bot Control & OneBot 11 Model Context Protocol (MCP) Server

MCP Compatible NapCatQQ Python 3.10+ License: MIT

OmniQQ-MCP (omniqq-mcp) 是一个基于 NapNeko/NapCatQQ 与 OneBot 11 协议打造的全功能、自运维、零业务耦合的通用 QQ 控制与感知 MCP (Model Context Protocol) Server。

通过本工具,你可以让 Claude Desktop、Google Antigravity、Cursor、Windsurf、Cline、OpenAI Agents 等任意支持 MCP 的 AI 智能体直接获得操控 QQ 的双手与实时感知的眼睛——涵盖私聊/群聊收发、合并转发、群管禁言踢人、群文件上传下载、图片 OCR、好友与资料管理、二维码扫码登录、多 QQ 账号热切换,以及 一键环境自检与自动部署更新。


🔍 核心检索关键词 (Keywords / Topics)

omniqq omniqq-mcp mcp model-context-protocol mcp-server qq-bot napcat napcatqq onebot onebot11 ntqq ai-agent qq-mcp claude-desktop cursor-mcp antigravity chatbot python-mcp


Related MCP server: NapCat MCP Server

✨ 功能特色与核心亮点 (Key Features)

1. 🦾 全量 144+ 项 NapCat 接口 100% 覆盖(74 个一级具名工具 + 万能透传)

  • 74 个开箱即用的第一公民具名工具 (First-Class Tools):提供完备的 JSON Schema 类型校验与清晰参数说明,覆盖 99% 的高频操作;

  • 万能底层接口透传 (call_napcat_api):支持直接调用 NapCat 官方引擎全部 144+ 个标准与扩展 Action(如群相册、群打卡、语音转文字 fetch_ptt_text、AI 声聊 send_group_ai_record 等),并内置 list_supported_napcat_actions 供 AI 自主查阅全部接口目录。

2. 📱 原生支持二维码扫码登录与多 QQ 账号秒级热切换

  • 新账号扫码登录 (login_new_qq_by_qrcode):无需手动折腾配置文件,AI 一键拉起扫码沙箱、在屏幕自动弹出高清二维码图片 (qrcode.png),用户手机扫码后自动生成 OneBot 11 (3000/3001) 端口配置并转为后台常驻服务;

  • 多账号免扫码热切换 (list_qq_accounts / switch_qq_account):自动识别本地已缓存的所有历史登录 QQ 号,支持在多个 QQ 账号之间秒级热重启切换上线;

  • 精准进程控制 (start_napcat_service / stop_napcat_service / restart_napcat_service):精准管理 napcat_runtime 下的沙箱进程,绝不误杀系统其他 Node.js 服务。

3. 🛠️ 环境智能自检、版本对比与一键安全自动部署 (Self-Deploying & Auto-Healing)

  • 环境诊断 (check_napcat_environment):自动检测本地 NapCat 运行时完整性、3000/3001 端口状态,并实时连接 GitHub Release API 对比官方最新版本;

  • 带安全确认锁的一键部署与升级 (deploy_or_update_napcat):内建 confirmed=False 强制确认门禁,在向用户展示部署路径与版本信息并获得明确授权后,自动下载/解压官方 Release 包并完成初始化;

  • 混合自愈启动 (Auto-Heal):调用任意 QQ 工具时,若检测到后台 NapCat 未启动,自动以最小化无焦点窗口静默拉起服务并完成握手。

4. ⚡ 实时 WebSocket 消息环形缓存 + 机制与策略彻底分离

  • 实时收信感知 (get_recent_messages / get_recent_notices_and_requests):后台自动维护 WebSocket 长连接与环形消息队列(默认缓存最近 200 条消息与群通知/好友申请),自动净化 CQ 码与富媒体段,支持按群号、QQ 号、关键词秒级检索;

  • 机制与策略分离 (Event Hook 扩展总线):MCP Server 保持 100% 纯净通用,不写死任何特定业务白名单;同时在 MessageBuffer.register_event_hook(callback) 预留事件回调钩子,并支持多路 WebSocket 并行监听,方便开发者后期按需挂载自定义筛选与 Agent 唤醒脚本。


🧰 74 项工具全景矩阵 (Tools Overview)

模块分类

工具数量

代表性工具列表

1. 环境运维、登录与多账号

9

check_napcat_environment, deploy_or_update_napcat, list_qq_accounts, switch_qq_account, login_new_qq_by_qrcode, get_login_qrcode_image, start_napcat_service, stop_napcat_service, restart_napcat_service

2. 消息收发与社交互动

15

send_private_msg, send_group_msg, send_msg, delete_msg, get_msg, get_forward_msg, send_private_forward_msg, send_group_forward_msg, send_like, send_poke, set_msg_emoji_like, mark_msg_as_read, set_essence_msg, delete_essence_msg, get_essence_msg_list

3. 群组管理与治理控制

14

set_group_kick, set_group_ban, set_group_whole_ban, set_group_admin, set_group_card, set_group_name, set_group_special_title, set_group_leave, set_group_add_request, set_group_todo, set_group_portrait, get_group_at_all_remain, get_group_shut_list, get_group_system_msg

4. 文件与富媒体操作

11

upload_private_file, upload_group_file, delete_group_file, delete_group_folder, get_group_root_files, get_group_files_by_folder, get_group_file_url, get_private_file_url, get_group_file_system_info, ocr_image, download_file

5. 好友关系与账号设置

10

get_friend_list, get_friends_with_category, get_stranger_info, delete_friend, set_friend_remark, set_friend_add_request, set_qq_profile, set_qq_avatar, set_self_longnick, set_online_status

6. 信息与历史记录查询

10

get_login_info, get_group_list, get_group_info, get_group_member_info, get_group_member_list, get_group_honor_info, get_friend_msg_history, get_group_msg_history, get_recent_contact, get_napcat_status

7. 实时消息与通知感知

3

get_recent_messages, get_recent_notices_and_requests, clear_recent_messages_buffer

8. 144+ 接口万能透传

2

call_napcat_api, list_supported_napcat_actions


🚀 快速开始 (Quick Start)

1. 安装依赖

本服务采用原生异步 JSON-RPC 2.0 实现,依赖极度精简:

pip install aiohttp websockets psutil

2. 在 MCP 客户端中挂载 (mcp_config.json)

在 Antigravity (~/.gemini/config/mcp_config.json)、Claude Desktop 或 Cursor 中添加:

{
  "mcpServers": {
    "omniqq-mcp": {
      "command": "python",
      "args": [
        "-u",
        "/path/to/napcat_mcp/run_mcp.py"
      ],
      "env": {
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUTF8": "1"
      }
    }
  }
}

3. 首次使用自然语言交互示例

挂载完成后,直接对你的 AI 助手说:

  • “检查一下我的 NapCat 环境状态,如果没部署帮我自动部署一下”

  • “帮我启动二维码扫码登录一个新 QQ 账号”

  • “查看我已缓存的 QQ 账号,并切换到小号上线”

  • “看看我最近收到了哪些 QQ 消息,给群 12345678 发一条通知”


🗺️ 后续迭代路线图 (Roadmap)

NapCat-MCP 秉持 “机制与策略彻底解耦” 的架构设计理念:底层 MCP Server 保持纯净稳定的控制工具库,上层通过独立的事件流机制实现智能化消息应答。下一步迭代规划如下:

1. 阶段一:实时消息智能监听与多维筛选引擎 (v1.1)

  • 多维规则过滤器 (Filter Pipeline):

    • 支持指定私聊/群聊白名单与黑名单,避免无差别响应;

    • 精准识别 @当前机器人、@全体成员 以及自定义关键词/正则规则触发;

    • 自动捕获群文件上传、好友申请、入群请求等通知事件。

  • 连发防抖与多模态消息聚合器 (Debounce Window):

    • 设定 10~30 秒防抖保护窗口,自动将同一用户的连续多条短文本、表情包、图片与文件附件聚合为一个完整的结构化上下文,彻底杜绝碎片化 Token 浪费。

2. 阶段二:Agent 自动调度与闭环应答 (v1.2)

  • 双向 Agent 驱动调度器 (Agent Dispatcher):

    • 支持通过 Antigravity CLI、标准 Webhook 或 OpenAI/Anthropic 兼容接口自动唤醒 AI 智能体;

    • AI 接收结构化上下文进行推理决策,随后直接调用本 MCP Server 的 send_private_msg / send_group_msg 原生工具完成闭环自动回复。

  • 人机协同安全门禁 (Human-in-the-Loop):

    • 针对大群等敏感场景,支持“AI 拟定回复草案 -> 推送管理员手机审批 -> 确认后代发”,兼具全自动与高安全。

详见完整技术方案:docs/ROADMAP.md


📄 开源协议 (License)

本项目基于 MIT License 开源。

Available Tools

74 tools
call_napcat_apiA

万能底层接口透传工具:直接调用 NapCatQQ 支持的任意 OneBot 11 标准或扩展 Action (覆盖全部 144+ 项功能)。 当高层具名工具未涵盖某个特定冷门接口 (如群相册、群签到、语音转文字 fetch_ptt_text、AI声聊 send_group_ai_record、清理缓存 clean_cache 等) 时,使用此工具直接调用。 :param action: NapCat 接口名称 (例如 'send_group_sign', 'fetch_ptt_text', 'get_cookies' 等) :param params: 传递给该接口的 JSON 参数字典 (例如 {"group_id": 123456}) :param timeout: 请求超时秒数,默认 30.0

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesNapCat 接口名称 (例如 'send_group_sign', 'fetch_ptt_text', 'get_cookies' 等)
paramsNo传递给该接口的 JSON 参数字典 (例如 {"group_id": 123456})
timeoutNo请求超时秒数,默认 30.0

TDQS

A4.2/5.0
Behavior3/5

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 conveys that this is a raw escape hatch bypassing the safe named wrappers and documents the timeout default, but it never warns that the same call can trigger destructive actions (kick, ban, send), nor describes error behavior or how failures surface for unknown actions.

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

Conciseness5/5

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

Front-loads the purpose in the first sentence, then the routing rule, then parameter notes. Every sentence earns its place and the ordering matches how an agent reads a definition.

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

Completeness4/5

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

For a generic passthrough with no output schema and no annotations, the definition covers purpose, when-to-use, and parameters well. The one gap is that it does not note that return shapes vary by action, which an agent would need to know when composing follow-up calls.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents action, params, and timeout. The description's parameter notes largely restate the schema fields, adding example action names but no new semantics about the params dictionary's per-action shape. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource: a universal low-level passthrough that directly calls any OneBot 11 standard or extended Action supported by NapCatQQ, covering 144+ functions. It explicitly carves out its niche relative to the named siblings, so an agent can tell it apart 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.

Usage Guidelines5/5

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

Explicitly names the condition that selects this tool — when high-level named tools do not cover a specific rare interface — and gives concrete examples (group album, group sign-in, fetch_ptt_text, send_group_ai_record, clean_cache). This implies the inverse rule (prefer named tools otherwise), which is strong routing guidance.

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

check_napcat_environmentA

检查本地 NapCatQQ 运行环境、服务端口状态、已保存账号列表,并与 GitHub 官方最新 Release 版本进行对比。 当不确定 NapCat 是否已部署、是否正在运行或是否有新版本可更新时,优先调用此工具。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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 inspection scope (environment, ports, accounts, version diff), which implies a read-only diagnostic, but never states whether it requires permissions, how long it takes, or what it returns. Adequate but with clear gaps for an annotation-free tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the concrete checks and followed by the selection condition. No filler; every clause earns its place.

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

Completeness4/5

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

For a zero-parameter diagnostic with no output schema, the description enumerates what is inspected (environment, ports, accounts, version comparison), which is enough for an agent to know what the call covers. It does not describe the shape of the result, a minor gap given there is no output schema.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter syntax to clarify, and the description correctly implies a no-argument invocation.

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

Purpose4/5

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

States a specific verb (检查/check) plus concrete resources: local NapCatQQ runtime environment, service port status, saved account list, and comparison against the latest GitHub Release. This is a clear, non-tautological purpose. It does not explicitly name the sibling tools it differs from (e.g., get_napcat_status), 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.

Usage Guidelines4/5

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

Provides clear when-to-use guidance: call it when uncertain whether NapCat is deployed, running, or has an update available. This gives real context for selection. It stops short of naming alternatives or when-not-to-use conditions, so it is not a 5.

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

clear_recent_messages_bufferB

清空本地内存中的近期实时消息缓存池。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully scopes the effect to '本地内存' (local memory) and identifies the target as a cache pool, which tells the agent that persistent message history is likely unaffected. However, it omits whether the action is reversible, whether in-flight/queued messages are lost, and whether confirmation or elevated permissions are required.

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

Conciseness4/5

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

A single front-loaded clause with no filler or redundancy. It is tight, though for an operation that discards data it may be terse to the point of under-informing.

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

Completeness2/5

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

No annotations, no output schema, and no statement of when the tool is appropriate or what the caller observes afterward. For a state-clearing operation, an agent needs at least a hint about timing/appropriateness, and nothing here supplies it.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool applies.

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

Purpose4/5

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

States a specific verb (清空/clear) and a specific resource (近期实时消息缓存池 – the recent realtime message buffer). An agent can distinguish it from the read-oriented sibling get_recent_messages, but the description never names or contrasts with any sibling explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to invoke this tool versus alternatives such as get_recent_messages or get_recent_notices_and_requests, nor any stated preconditions or consequences. The agent must infer the use case entirely from the verb.

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

delete_essence_msgC

移出指定的群精华消息 (NapCat 扩展接口: delete_essence_msg)。 :param message_id: 要移出精华的消息 ID

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes要移出精华的消息 ID

TDQS

C2.9/5.0
Behavior2/5

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 does not disclose permission requirements, whether the removal is reversible, or any error conditions, despite being a mutation of group state.

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

Conciseness3/5

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

The core sentence is front-loaded and concise, but the appended ':param message_id: 要移出精华的消息 ID' is a docstring artifact that repeats the schema and adds no value.

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

Completeness3/5

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

For a simple one-parameter tool with no output schema, the purpose is conveyed adequately. However, with no annotations and a mutating action, missing permission and reversibility details leave it only minimally complete.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is fully described in the schema. The description's ':param message_id' line merely duplicates the schema text verbatim, adding no new meaning, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: 移出 (remove) the specified 群精华消息 (group essence message). It is clear what the tool does, but it never names its natural counterpart set_essence_msg, so sibling differentiation is left to the agent.

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

Usage Guidelines2/5

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 versus alternatives. It does not mention set_essence_msg (the opposite operation) or get_essence_msg_list, nor any prerequisite such as needing the message to already be an essence message.

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

delete_friendC

删除指定 QQ 好友 (OneBot 11: delete_friend)。 :param user_id: 要删除的好友 QQ 号

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes要删除的好友 QQ 号

TDQS

C2.9/5.0
Behavior2/5

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 does not disclose that deletion is irreversible, whether the friend is notified, what permissions are required, or what happens to message history — significant omissions for a destructive mutation.

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

Conciseness4/5

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

The definition is short and front-loads the action, which is appropriate. The trailing ':param' docstring line is redundant with the schema but does not bloat the description significantly.

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

Completeness2/5

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

For a destructive one-parameter mutation with no annotations and no output schema, the description is too thin: it omits irreversibility, side effects on history/notifications, and any failure modes. The schema alone cannot carry that behavioral context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents user_id fully. The description's ':param user_id' line is a verbatim duplicate of the schema property description and adds no syntax, format, or constraint information beyond it, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource (删除/delete a QQ friend) and even cites the underlying OneBot 11 action, so the operation is unambiguous. No sibling tool performs friend deletion, so it is implicitly distinguished from the sibling list, though the description does not explicitly contrast with any of them.

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

Usage Guidelines2/5

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, no prerequisites (e.g. confirming the friend relationship exists), and no warning about the destructive nature of the operation. The single sentence only restates the purpose.

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

delete_group_fileC

删除指定的 QQ 群文件 (NapCat OneBot 11: delete_group_file)。 :param group_id: 群号 :param file_id: 群文件 ID :param busid: 文件类型 busid,默认 102

ParametersJSON Schema
NameRequiredDescriptionDefault
busidNo文件类型 busid,默认 102
file_idYes群文件 ID
group_idYes群号

TDQS

C2.9/5.0
Behavior2/5

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 states the tool deletes a file but does not disclose irreversibility, required permissions, or any side effects. For a destructive operation, this is a significant gap.

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

Conciseness4/5

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

The description is short and front-loads the purpose sentence. The parameter list duplicates schema content but does not pad the description with extraneous prose. Minor formatting oddity with the ':param' style, but overall efficient.

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

Completeness2/5

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

For a destructive deletion tool with zero annotations and no output schema, the description should at least mention irreversibility, permissions, or what happens on success/failure. It provides only purpose and parameter names already covered by the schema, leaving key behavioral context missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description duplicates those same descriptions ('群号', '群文件 ID', '文件类型 busid,默认 102') without adding any new meaning or format details. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb and resource in Chinese: '删除指定的 QQ 群文件' (delete the specified QQ group file). This clearly distinguishes it from sibling tools like delete_group_folder (folders) and delete_msg (messages). However, it does not explicitly name an alternative or clarify the boundary with delete_group_folder beyond the inherent noun difference.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It only lists parameter descriptions, leaving the agent to infer usage context entirely 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.

delete_group_folderC

删除指定的 QQ 群文件夹 (NapCat OneBot 11: delete_group_folder)。 :param group_id: 群号 :param folder_id: 群文件夹 ID

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号
folder_idYes群文件夹 ID

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Delete' implies a destructive mutation, but nothing states what gets destroyed (the folder's contents/files?), whether the operation is irreversible, what permissions are required, or what happens on a nonexistent folder. The only extra signal is the NapCat OneBot 11 API reference, which is metadata rather than behavioral context.

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

Conciseness3/5

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

The purpose is front-loaded in a single clean sentence, but the trailing Sphinx-style ':param' lines duplicate what the input schema already provides and add noise without value.

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

Completeness2/5

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

For a destructive delete operation with no annotations and no output schema, the description should carry the safety and consequence burden. It fails to say what is removed, whether it is recoverable, or any error conditions, leaving the agent under-informed before an irreversible action.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description merely repeats the same text ('群号', '群文件夹 ID') with no added format, range, or sourcing detail, so baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb+resource ('删除指定的 QQ 群文件夹' = delete the specified QQ group folder), which clearly distinguishes it from the sibling delete_group_file (a file vs a folder). However it does not name any sibling explicitly or explain the folder/file distinction, 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.

Usage Guidelines2/5

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 alternatives such as delete_group_file or the folder-listing tools. The agent gets the action but nothing about the conditions that should select this tool.

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

delete_msgA

撤回指定消息 (OneBot 11: delete_msg)。可撤回自己发出的消息,或作为群管理员撤回群成员消息。 :param message_id: 目标消息 ID

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes目标消息 ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries behavioral burden. It discloses the permission constraint (own message vs admin privilege), which is valuable context. However, it doesn't state what happens on failure (e.g., timeout, already retracted), whether retraction is reversible, or rate limits. For a mutation tool with no annotations, this 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.

Conciseness4/5

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

Front-loads the action and its OneBot equivalent, then permission rules, then param. No wasted sentences. The ':param' line is redundant with the schema but harmless.

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

Completeness3/5

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

For a single-param mutation tool with no annotations and no output schema, the description covers the core action and permission model but omits error behavior, rate limits, and confirmation of deletion. It is minimally sufficient but leaves gaps an agent might need.

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

Parameters3/5

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

Schema coverage is 100%, so the parameter is fully documented in the schema. The description repeats ':param message_id: 目标消息 ID', adding no new information beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource ('撤回指定消息' / retract a specified message) and maps it to the OneBot 11 action delete_msg. Clear and distinct from siblings like get_msg or send_msg.

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

Usage Guidelines4/5

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

Explicitly states usage context: can retract one's own messages, or as a group admin, retract group members' messages. This clarifies the permission model. Doesn't name alternatives (e.g., no comparison to other message tools) but none are needed given the unique purpose.

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

deploy_or_update_napcatA

一键自动部署或更新 NapCat 运行时环境 (支持从 GitHub 官方 Release 下载或使用本地离线包解压并自动配置 OneBot 端口)。 ⚠️ 安全规范:首次调用必须保持 confirmed=False 以获取部署预览计划;向用户展示计划并获得明确授权后,再传入 confirmed=True 执行。 :param action: 执行动作类型,'deploy' (部署安装) 或 'update' (更新升级) :param confirmed: 是否已获得用户明确许可 (False 时仅返回预览,True 时真正执行解压/下载) :param use_local_zip_if_available: 部署时若本地存在离线包是否优先使用 :param target_uin: 要自动配置 OneBot 11 端口的 QQ 号 (留空则使用当前默认账号)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo执行动作类型,'deploy' (部署安装) 或 'update' (更新升级)deploy
confirmedNo是否已获得用户明确许可 (False 时仅返回预览,True 时真正执行解压/下载)
target_uinNo要自动配置 OneBot 11 端口的 QQ 号 (留空则使用当前默认账号)
use_local_zip_if_availableNo部署时若本地存在离线包是否优先使用

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden and does well: it discloses the confirmation workflow, that confirmed=False returns only a preview while True performs real download/extraction, and that local offline packages are preferred when available. It does not cover rollback behavior or exactly how an update mutates an existing installation, so it is not fully exhaustive.

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

Conciseness4/5

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

The description is front-loaded with purpose, followed by a safety warning and parameter notes. It is efficient but the trailing :param list duplicates the input schema nearly verbatim, which slightly reduces conciseness.

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

Completeness4/5

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

For a deployment/update tool with no annotations and no output schema, the description supplies the essential behavioral context: the preview/execute confirmation flow, local zip priority, and target_uin purpose. It is largely complete, though it could say more about what happens to an existing NapCat installation during an update.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters in detail. The description repeats the same parameter meanings without adding format, constraints, or examples beyond the schema, which is the baseline 3 case when structured fields do the heavy lifting.

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

Purpose5/5

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

The description states a specific verb and resource: '一键自动部署或更新 NapCat 运行时环境', with explicit modes (deploy/update), download vs local zip, and OneBot port configuration. This clearly distinguishes it from sibling service-control tools like start/stop/restart_napcat_service and check_napcat_environment.

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

Usage Guidelines4/5

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

The description gives a strong usage protocol: first call must use confirmed=False to get a preview, then after explicit user authorization call with confirmed=True. It does not name alternative sibling tools or state when deployment should be preferred over, for example, checking the environment first, so it stops short of explicit alternatives.

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

download_fileB

通过 NapCat 下载网络文件到本地缓存目录并返回本地绝对路径 (OneBot 11: download_file)。 :param url: 文件下载 URL :param thread_count: 下载线程数,默认 3 :param headers: 自定义请求头列表 (如 ["User-Agent=xxx"])

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes文件下载 URL
headersNo自定义请求头列表 (如 ["User-Agent=xxx"])
thread_countNo下载线程数,默认 3

TDQS

B3.1/5.0
Behavior3/5

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 discloses the side effect (writes the file to the local cache directory) and the return value (local absolute path), but omits permission/auth requirements, rate limits, or failure behavior for a network operation.

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

Conciseness3/5

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

The purpose sentence is front-loaded and clear, but the following :param lines duplicate the schema verbatim, adding bulk without new information. Reasonably sized but not maximally efficient.

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

Completeness3/5

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

With no output schema and no annotations, the description does partially compensate by naming the return value (local absolute path). However, for a network I/O tool with side effects, it lacks context on permissions, error cases, and cache location details, leaving notable gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the input schema. The description's :param lines restate the same information (URL, thread count default 3, headers format) without adding 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.

Purpose4/5

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

States a specific verb (download) and resource (network file to local cache directory via NapCat), and clarifies it returns the local absolute path. An agent can distinguish this from upload/delete file siblings, though the description does not explicitly name any alternative.

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

Usage Guidelines2/5

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

The description explains what the tool does but offers no guidance on when to use it versus alternatives like get_group_file_url or get_private_file_url, nor any prerequisites or exclusions. Usage must be inferred entirely by the agent.

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

get_essence_msg_listB

获取指定 QQ 群的精华消息列表 (NapCat 扩展接口: get_essence_msg_list)。 :param group_id: 目标群号

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes目标群号

TDQS

B3.2/5.0
Behavior2/5

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 implies a read operation via 获取, but says nothing about return shape, whether the list is paginated or capped, ordering, or required permissions for the group.

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

Conciseness4/5

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

Short and front-loaded, with the core purpose stated first. The trailing ':param group_id:' docstring artifact is slightly redundant clutter but the whole entry stays compact.

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

Completeness3/5

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

For a one-parameter read getter with no output schema, the description is minimally adequate. It does not describe what the returned list contains or how large it may be, which is the main remaining gap.

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

Parameters3/5

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

Schema coverage is 100% with a single required group_id already documented as 目标群号 in the schema. The description merely repeats that same meaning, adding no format or constraint detail beyond the schema.

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

Purpose4/5

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

The description states a specific verb+resource: 获取 (get) the 精华消息列表 (essence/pinned message list) for a specified QQ group. This clearly separates it from the write-side siblings set_essence_msg and delete_essence_msg, though it never explicitly names them.

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

Usage Guidelines3/5

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

Usage is only implied by the tool name and read semantics; the description gives no when-to-use, no prerequisites, and no mention of the sibling mutation tools. An agent can infer it is the read counterpart, but nothing is stated explicitly.

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

get_forward_msgC

获取合并转发消息的具体内容节点列表 (OneBot 11: get_forward_msg)。 :param message_id: 合并转发 ID (id / message_id)

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes合并转发 ID (id / message_id)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that it retrieves a node list, but says nothing about read-only safety, permissions, response format beyond 'node list', or error behavior.

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

Conciseness4/5

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

The description is short and front-loads the purpose before the parameter line. The separate ':param' line duplicates the schema, but the overall structure remains efficient.

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

Completeness3/5

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

For a simple one-parameter getter with no output schema and no annotations, the description gives minimal but adequate purpose and parameter info. It does not describe the returned node structure or any failure conditions, so it is only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, and the description simply repeats the schema's wording for message_id. Baseline 3 is appropriate when the schema already documents the parameter fully.

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

Purpose4/5

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

The description states a specific verb and resource: it retrieves the content node list of a merged forward message, and it names the OneBot 11 action name. It does not differentiate itself from siblings like get_msg or send_private_forward_msg, 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.

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as get_msg or the send_*_forward_msg tools. The usage is only implied by the purpose statement.

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

get_friend_listB

获取当前登录 QQ 的全部好友列表 (包括 user_id、nickname、remark 等) (OneBot 11: get_friend_list)。 :param no_cache: 是否强制不使用缓存刷新列表,默认 False

ParametersJSON Schema
NameRequiredDescriptionDefault
no_cacheNo是否强制不使用缓存刷新列表,默认 False

TDQS

B3.1/5.0
Behavior3/5

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 returned fields and the cache-refresh option, and '获取' implies read-only, but it does not state authentication prerequisites, rate limits, or detailed cache semantics.

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

Conciseness3/5

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

The description is short and front-loads the purpose, which is good. However, it includes the OneBot 11 API name and a ':param no_cache' line that duplicates the schema, adding minor unnecessary text.

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

Completeness3/5

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

For a simple one-optional-parameter read tool with no output schema, the description gives purpose, key fields, and the cache option. It still lacks sibling differentiation and any detail on return shape, pagination, or size handling.

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

Parameters3/5

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

Schema description coverage is 100%, so the single no_cache parameter is already documented in the schema. The description repeats the same explanation without adding syntax, constraints, or behavioral meaning beyond what the schema provides.

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

Purpose4/5

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

States a specific verb (获取) and resource (好友列表), scoped to the currently logged-in QQ, and lists example returned fields. However, it does not distinguish this from sibling get_friends_with_category, which also returns friends.

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

Usage Guidelines2/5

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

There is no when-to-use guidance or mention of alternatives. The phrase '全部好友列表' implies all friends, but an agent gets no explicit instruction on choosing this over get_friends_with_category or get_stranger_info.

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

get_friend_msg_historyB

从 NapCat 获取与指定好友的历史私聊消息记录 (NapCat OneBot 11: get_friend_msg_history)。 :param user_id: 好友 QQ 号 :param count: 获取的消息条数,默认 20 :param message_seq: 起始消息序号 (可选,不填则从最新一条往前拉取)

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo获取的消息条数,默认 20
user_idYes好友 QQ 号
message_seqNo起始消息序号 (可选,不填则从最新一条往前拉取)

TDQS

B3.2/5.0
Behavior3/5

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 data source (NapCat) and the paging direction when message_seq is omitted, which is genuinely useful behavior, but it says nothing about result ordering guarantees, how count interacts with message_seq, permissions, or rate limits.

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

Conciseness4/5

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

The text is short and front-loaded with the core action, followed by parameter notes. It is efficient, though the param lines are pure duplication of the schema and thus slightly wasted space.

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

Completeness3/5

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

With no output schema and no annotations, the description should ideally describe the returned message structure or pagination contract. It covers inputs adequately but leaves the return shape and pagination semantics unstated, which is a real gap for a history-fetch tool.

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

Parameters3/5

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

Schema description coverage is 100%, and the description simply restates the same three parameter descriptions verbatim (user_id, count default 20, message_seq optional). It adds no syntax, format, or constraint detail 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.

Purpose4/5

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

The description gives a specific verb+resource: retrieve historical private chat messages with a specified friend, and names the upstream API (NapCat OneBot 11 get_friend_msg_history). It is clearly distinct from sibling tools by resource type (friend vs group), though it never explicitly contrasts with get_group_msg_history or get_recent_messages.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no mention of alternatives such as get_group_msg_history or get_recent_messages. Usage is only implied by the tool name and the note that omitting message_seq pulls from the newest message backward.

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

get_friends_with_categoryB

获取按好友分组归类的好友列表 (NapCat 扩展接口: get_friends_with_category)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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, yet it discloses nothing beyond the name. It does not indicate pagination, rate limits, ordering, or what happens when the endpoint is unavailable; the only added signal is that this is a NapCat extension rather than standard OneBot. For a zero-param read this is low risk, but the disclosure is still minimal.

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

Conciseness4/5

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

One short sentence that front-loads the function and tucks the endpoint identity into a parenthetical. The parenthetical partially restates the tool name already visible to the agent, but it also contributes the 'NapCat extension' tag, so waste is minor.

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

Completeness3/5

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

For a zero-param read with no output schema, the description is adequate but does not explain the shape of the returned grouping (how categories and their members are represented), which the absent output schema leaves entirely open. It does correctly imply the result is categorized rather than flat.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics for the description to supply; the baseline of 4 applies. Nothing is misleading or inconsistent with the empty schema.

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

Purpose4/5

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

States a specific verb and resource ('获取好友列表') plus a scope qualifier ('按好友分组归类'), which implicitly separates it from the flat sibling get_friend_list. The parenthetical identifies it as a NapCat extension endpoint, reinforcing what it is. It never names get_friend_list explicitly, so the differentiation is left to inference.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance: it does not say to prefer this over get_friend_list when category/group data is needed, nor when it is unnecessary. No prerequisites, no alternatives, no exclusions are offered.

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

get_group_at_all_remainB

查询指定群聊今日剩余的 @全体成员 次数 (OneBot 11: get_group_at_all_remain)。 :param group_id: 群号

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号

TDQS

B3.1/5.0
Behavior3/5

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. '查询' implies a read-only operation and '今日剩余' hints at a daily-reset quota, but the description never explicitly confirms it is side-effect-free nor describes the return format. For a simple read this is adequate but not rich.

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

Conciseness3/5

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

The core sentence is front-loaded and clear, but the trailing ':param group_id: 群号' docstring fragment is redundant with the schema and adds no value, making the structure slightly wasteful.

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

Completeness3/5

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

For a single-parameter read tool with no output schema, the description covers the basic purpose but does not explain the shape of the return value (e.g., count fields or reset behavior), leaving a modest gap.

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

Parameters3/5

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

Schema coverage is 100%, with group_id fully documented as 群号. The description's ':param group_id: 群号' merely repeats the schema without adding format, range, or example detail, so baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (查询/query) and a precise resource: the remaining @全体成员 count for a given group today. This is clearly distinguishable from other read tools like get_group_shut_list or get_group_info. However, it offers no explicit differentiation from siblings, so a 4 is appropriate.

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

Usage Guidelines2/5

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

The description says what the tool returns but gives no when-to-use guidance, no prerequisites, and no alternatives. An agent is left to infer that this is a diagnostic/read call with no explicit routing context.

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

get_group_files_by_folderC

获取 QQ 群指定文件夹内的文件与子文件夹列表 (NapCat OneBot 11: get_group_files_by_folder)。 :param group_id: 群号 :param folder_id: 文件夹 ID

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号
folder_idYes文件夹 ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing behavioral. It implies a read-only listing operation but never states that it is non-mutating, whether it requires bot/group permissions, how results are paginated, or what happens for an invalid folder_id.

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

Conciseness4/5

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

The definition is a single front-loaded sentence plus two terse param notes, with no wasted prose. It is efficient, though the param lines simply duplicate the schema.

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

Completeness3/5

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

For a two-parameter read-only listing tool with full schema coverage and no output schema, the essentials are covered. However, it omits how folder_id is obtained and gives no hint of the returned list structure, which a description could reasonably supply in the absence of an output schema.

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

Parameters3/5

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

Schema description coverage is 100%; both group_id and folder_id are documented in the schema, and the description merely repeats '群号' and '文件夹 ID'. Baseline 3 applies since the schema does the heavy lifting and the description adds no format or sourcing detail.

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

Purpose4/5

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 the list of files and subfolders inside a specified folder of a QQ group. The '指定文件夹' scoping implicitly distinguishes it from the sibling get_group_root_files, which handles root-level listing. It is clear but never explicitly names the sibling it differs from.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as get_group_root_files or get_group_file_url. An agent must infer from the name alone that a folder_id from a parent listing call is required first. No prerequisites or exclusions are given.

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

get_group_file_system_infoB

获取 QQ 群文件系统的空间使用情况 (总空间、已用空间、文件数上限等) (NapCat OneBot 11: get_group_file_system_info)。 :param group_id: 群号

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号

TDQS

B3.2/5.0
Behavior3/5

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 does disclose what data is returned (total space, used space, file-count limit), which is useful since there is no output schema, but it says nothing about permissions, failure modes, or rate limits. For a simple read-only getter this is acceptable but not rich.

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

Conciseness3/5

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

The core purpose sentence is short and front-loaded, which is good. However, the appended docstring fragment ':param group_id: 群号' is redundant noise that duplicates the schema and slightly muddies an otherwise clean one-liner.

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

Completeness4/5

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

For a single-parameter, read-only getter with no output schema or annotations, the description is adequate: it names the resource and lists the kinds of values returned, partially compensating for the missing output schema. Missing guidance on prerequisites and sibling alternatives keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 100% for the single group_id parameter, so the schema already documents it fully. The trailing ':param group_id: 群号' merely restates the schema text and adds no syntax, format, or constraint detail. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb+resource: retrieving QQ group file-system space usage (total space, used space, file-count limit). This is clearly distinct from sibling file tools like get_group_root_files or get_group_files_by_folder, which enumerate files rather than report quota. It lacks an explicit contrast to those siblings, so it falls just short of a 5.

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

Usage Guidelines2/5

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 versus the many sibling file/quota tools, nor any prerequisite or context such as needing the bot to be in the group. Usage is only implied by the name and resource. No when/when-not conditions are given.

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

get_group_file_urlC

获取指定群文件的直接 HTTP 下载链接 (NapCat OneBot 11: get_group_file_url)。 :param group_id: 群号 :param file_id: 群文件 ID :param busid: 文件 busid (可选,默认 102)

ParametersJSON Schema
NameRequiredDescriptionDefault
busidNo文件 busid (可选,默认 102)
file_idYes群文件 ID
group_idYes群号

TDQS

C2.9/5.0
Behavior2/5

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 implies a read operation and that the result is a direct HTTP link, but says nothing about auth/permission requirements, link expiry, or failure modes when a file is unavailable.

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

Conciseness3/5

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

The purpose is front-loaded in one clear sentence, but the three ':param' lines duplicate schema content that is already fully documented, so a portion of the text does not earn its place.

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

Completeness3/5

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

For a 3-param URL-retrieval tool with full schema coverage but no annotations and no output schema, the description is minimally adequate. It omits what the returned link looks like and when the call fails, which an agent would benefit from knowing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The ':param' lines merely restate the schema descriptions verbatim (群号, 群文件 ID, busid optional default 102), adding no syntax or format detail beyond the structured fields.

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

Purpose4/5

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

States a specific verb (获取/get) and resource (群文件的直接 HTTP 下载链接/direct HTTP download link of a group file), which is unambiguous. It does not explicitly differentiate from the sibling get_private_file_url, but the 'group' scope is clear from the name and text.

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

Usage Guidelines2/5

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 versus get_private_file_url or get_group_root_files, nor any prerequisite (e.g. that a file_id must first be obtained from a listing call). Only the purpose is given.

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

get_group_honor_infoC

获取指定 QQ 群的群荣誉信息 (龙王、群聊之火、快乐源泉等) (OneBot 11: get_group_honor_info)。 :param group_id: 群号 :param honor_type: 荣誉类型: 'talkative'(龙王), 'performer'(群聊之火), 'legend'(群聊炽焰), 'strong_newbie'(冒尖小春笋), 'emotion'(快乐源泉), 或 'all'(全部)

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号
honor_typeNo荣誉类型: 'talkative'(龙王), 'performer'(群聊之火), 'legend'(群聊炽焰), 'strong_newbie'(冒尖小春笋), 'emotion'(快乐源泉), 或 'all'(全部)all

TDQS

C2.9/5.0
Behavior2/5

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. The 'get_' prefix implies a read-only operation, but there is no disclosure of permission requirements, rate limits, whether an empty result is possible, or what the response contains — significant gaps for an unannotated tool.

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

Conciseness3/5

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

The purpose is front-loaded and the entry is short, but the :param lines duplicate the schema descriptions word-for-word, which is wasted text given full schema coverage. Structure is fine, content is partly redundant.

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

Completeness3/5

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

For a two-parameter read tool with no output schema, the description covers the operation and parameters adequately, but it omits any description of return values or result shape and offers no behavioral context. It is the minimum viable without being rich.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates the group_id and honor_type documentation verbatim from the schema rather than adding format, constraints, or behavior detail, so it adds no meaning beyond the structured fields.

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

Purpose4/5

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

The description states a specific verb and resource (获取指定 QQ 群的群荣誉信息) and enumerates the honor categories it can return, so an agent knows exactly what this tool does. It doesn't need to distinguish from siblings since no other tool retrieves group honors, but it offers no explicit contrast either, keeping it just short of a 5.

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

Usage Guidelines2/5

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 and no named alternatives. The only implicit signal is the honor_type default of 'all', which hints at a query use case but is not stated as guidance.

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

get_group_infoB

获取指定 QQ 群的详细信息 (群名称、人数、群主、群备注等) (OneBot 11: get_group_info)。 :param group_id: 目标群号 :param no_cache: 是否不使用缓存

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes目标群号
no_cacheNo是否不使用缓存

TDQS

B3.2/5.0
Behavior3/5

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 the shape of the returned data (name, member count, owner, remark) and cites the underlying OneBot 11 action, but says nothing about permissions, error behavior, or the practical effect of no_cache beyond its literal meaning.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence and the whole thing is short. The trailing ':param' block duplicates the schema, which is mild redundancy rather than bloat.

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

Completeness3/5

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

With no output schema, the field enumeration is a valuable substitute for documenting the return value. However, the description omits error cases and any auth or rate-limit context, leaving it only minimally complete for a no-annotation, no-output-schema tool.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The ':param' lines merely restate the schema descriptions verbatim (目标群号, 是否不使用缓存) without adding format, range, or behavioral detail, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb+resource ('获取指定 QQ 群的详细信息') and enumerates the returned fields (群名称、人数、群主、群备注), which clearly distinguishes it from the list-style siblings like get_group_list. It lacks explicit sibling differentiation by name, but the scope is unambiguous.

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

Usage Guidelines2/5

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 and no mention of alternatives (e.g. get_group_list for enumerating groups). The agent must infer usage context entirely 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_listB

获取当前账号已加入的所有 QQ 群列表 (包含 group_id, group_name, member_count, max_member_count 等) (OneBot 11: get_group_list)。 :param no_cache: 是否强制刷新最新群列表而不使用缓存,默认 True

ParametersJSON Schema
NameRequiredDescriptionDefault
no_cacheNo是否强制刷新最新群列表而不使用缓存,默认 True

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose a real behavioral trait: results come from cache unless no_cache is set (default True), which is useful. However, it never states that this is a read-only operation or whether any auth/session prerequisites apply.

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

Conciseness4/5

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

Front-loaded with the core purpose, then return fields, then the OneBot 11 API mapping. Only the parameter note is redundant with the schema, so it is close to fully efficient.

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

Completeness4/5

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

With no output schema, listing the returned fields compensates well, and the single parameter is covered. Missing only usage context and read-only/permission framing, which are minor for a simple read tool.

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

Parameters3/5

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

Schema description coverage is 100%, and the description merely repeats the no_cache parameter text verbatim from the schema. Baseline 3 applies since the schema already does the documentation work and the description adds no syntax or edge-case detail.

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

Purpose4/5

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

States a specific verb and resource: retrieves all QQ groups the current account has joined, and even enumerates the returned fields (group_id, group_name, member_count, max_member_count). An agent can distinguish it from get_group_info or get_group_member_list by scope, though 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.

Usage Guidelines2/5

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 versus alternatives such as get_group_info, nor any stated preconditions (e.g., requiring a logged-in account). Usage is only implied by the tool name and 'current account' phrasing.

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

获取指定群成员的详细资料 (群名片 card、昵称 nickname、群角色 role[owner/admin/member]、入群时间、最后发言时间、头衔等) (OneBot 11: get_group_member_info)。 :param group_id: 群号 :param user_id: 群成员 QQ 号 :param no_cache: 是否强制刷新缓存

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes群成员 QQ 号
group_idYes群号
no_cacheNo是否强制刷新缓存

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. '获取' implies a read-only lookup and the enumerated return fields are useful output context (especially with no output schema), but the description never explicitly states the operation is side-effect-free, nor how the no_cache refresh behaves.

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

Conciseness3/5

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

The purpose sentence is front-loaded and information-dense, but the three ':param' lines duplicate the schema verbatim and earn no place given 100% schema coverage, adding pure redundancy.

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

Completeness4/5

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

With no output schema, the enumeration of returned fields (card, nickname, role, join time, last speak time, title) usefully compensates by telling the agent what comes back. Only the read-only/caching semantics remain unstated for a definition with no annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema. The ':param' lines in the description simply restate 群号, 群成员 QQ 号, and 是否强制刷新缓存, adding no meaning beyond what the schema provides.

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

Purpose4/5

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

States a specific verb+resource ('获取指定群成员的详细资料') and enumerates exactly what is returned (群名片 card, 昵称 nickname, 群角色 role[owner/admin/member], 入群时间, 最后发言时间, 头衔). This clearly separates it from list-oriented siblings like get_group_member_list and get_stranger_info, 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.

Usage Guidelines3/5

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

Usage is only implied by the purpose: fetch details for one specific member identified by group_id + user_id. There is no statement of when to prefer this over get_group_member_list, nor any prerequisites or when-not-to-use guidance.

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

get_group_member_listC

获取指定 QQ 群的全部成员名单列表 (OneBot 11: get_group_member_list)。 :param group_id: 群号 :param no_cache: 是否强制刷新缓存

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号
no_cacheNo是否强制刷新缓存

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it only restates the schema's no_cache field. It says nothing about permissions/auth, response size for large groups, whether the result is paginated, or rate limiting — significant gaps for a tool that can return an entire group's roster.

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

Conciseness3/5

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

The first sentence is front-loaded and efficient, but the two ':param' lines merely re-repeat the schema descriptions, adding length without value. Trimming them would lose nothing.

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

Completeness3/5

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

For a simple read tool with no output schema and fully covered parameters, the definition is adequate but thin: it does not hint at the shape of the returned member list, handling of large groups, or cache-vs-fresh semantics beyond the flag name.

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

Parameters3/5

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

Schema description coverage is 100%, with both group_id and no_cache already documented in the schema. The description's ':param' lines duplicate that text verbatim and add no syntax, format, or edge-case meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource in Chinese — fetch the full member list of a specified QQ group — and cites the underlying OneBot 11 action. It implicitly distinguishes itself from get_group_member_info (single member) via '全部成员', though it never names that sibling explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of the nearest alternatives (get_group_member_info, get_group_list). The agent must infer that this is the bulk-membership read rather than the single-member read from the tool name alone.

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

get_group_msg_historyC

从 NapCat 获取指定群聊的历史聊天记录 (NapCat OneBot 11: get_group_msg_history)。 :param group_id: 群号 :param count: 获取的消息条数,默认 20 :param message_seq: 起始消息序号 (可选,不填则从最新一条往前拉取)

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo获取的消息条数,默认 20
group_idYes群号
message_seqNo起始消息序号 (可选,不填则从最新一条往前拉取)

TDQS

C2.9/5.0
Behavior2/5

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 does disclose one useful behavior — message_seq omitted means pulling backwards from the newest message — but says nothing about result ordering, pagination limits, authentication requirements, or error conditions for an invalid/ungrouped group_id.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence and the parameter notes are terse. The param lines are largely redundant with the schema, which slightly dilutes efficiency, but there is no filler prose.

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

Completeness3/5

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

For a query tool with no output schema and no annotations, the description covers the inputs but omits the return shape (what a message record looks like) and any behavioral caveats. It is minimally sufficient but leaves the agent guessing about response structure and failure modes.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, and the description repeats them nearly verbatim (群号, 获取的消息条数,默认 20, 起始消息序号). It adds no format, range, or semantics beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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 historical chat records for a specified group chat via NapCat's OneBot 11 get_group_msg_history action. An agent immediately knows what the tool returns. It does not, however, explicitly distinguish itself from the sibling get_friend_msg_history or get_recent_messages, 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.

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as get_recent_messages, get_msg, or get_friend_msg_history, and no prerequisites (e.g. the QQ account must be logged in). Usage is only implied by the tool name and the group_id parameter.

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

get_group_root_filesB

获取 QQ 群文件根目录下的所有文件与文件夹列表 (NapCat OneBot 11: get_group_root_files)。 :param group_id: 群号

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号

TDQS

B3.2/5.0
Behavior2/5

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. The verb '获取' implies a read-only operation, but there is no statement of permissions/auth requirements, pagination or result-size behavior, or how the root listing differs from the folder-scoped variant — significant gaps for a tool with zero annotation coverage.

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

Conciseness4/5

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

Front-loaded one-line statement of purpose, with the NapCat/OneBot provenance in parentheses. The trailing ':param group_id: 群号' duplicates the schema and is mildly wasteful, but the description stays short overall.

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

Completeness3/5

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

A simple single-parameter read tool with no output schema; the description conveys what is returned at a high level ('所有文件与文件夹列表'), which is adequate. It omits any detail on result shape (file metadata fields), size limits, or error cases, so it is minimally sufficient.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter is already documented as '群号' in the schema; the description merely repeats it via the ':param group_id: 群号' line. Baseline 3 applies when the schema does all the work.

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

Purpose4/5

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

States a specific verb (获取/list) and resource (QQ 群文件根目录下的文件与文件夹), and the '根目录' (root directory) scope implicitly distinguishes it from the sibling get_group_files_by_folder. Clear, though it does not name the alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the resource name — listing group root files. There is no explicit when-to-use, when-not-to-use, or pointer to get_group_files_by_folder for subfolder navigation, leaving the agent to infer the boundary.

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

get_group_shut_listB

获取指定群聊当前处于被禁言状态的成员列表 (NapCat 扩展接口: get_group_shut_list)。 :param group_id: 群号

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this is a read-only operation, what permissions or group context are required, whether pagination applies, or any rate-limit/auth behavior.

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

Conciseness4/5

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

The main sentence is front-loaded and names the resource and filter efficiently. The trailing ':param group_id: 群号' is redundant with the schema, which is a minor structural waste but not harmful.

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

Completeness3/5

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

For a simple read-list tool with one fully documented parameter, the description says what is returned (被禁言状态的成员列表). However, with no annotations or output schema, it omits read-only safety context and any response-shape or pagination detail, leaving moderate gaps.

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

Parameters3/5

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

Schema coverage is 100%, and the input schema already describes group_id as 群号. The description repeats ':param group_id: 群号' without adding syntax, constraints, or context, so it meets the baseline for a fully documented schema.

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

Purpose5/5

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

States a specific action (获取) and resource (指定群聊当前处于被禁言状态的成员列表), including the muted-members filter that separates it from get_group_member_list. The NapCat extension note adds provenance, and an agent can identify the tool's purpose without ambiguity.

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

Usage Guidelines2/5

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

No explicit when-to-use, prerequisites, or alternatives are provided. The agent must infer that this tool is for inspecting muted members and is not told when to prefer it over get_group_member_list or other group-management siblings.

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

get_group_system_msgB

获取群系统消息列表 (包括待审批的入群申请、被邀请进群通知等) (OneBot 11: get_group_system_msg)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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 usefully describes what the list contains, but says nothing about pagination, read-state side effects, permissions, or ordering for what is presumably a read operation.

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

Conciseness4/5

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

A single front-loaded sentence with the OneBot API mapping appended. No wasted text, and the purpose is stated immediately.

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

Completeness3/5

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

For a zero-param listing tool with no output schema, the description partially fills the gap by naming the returned content types, which helps. However, it omits pagination or scope details that would make it fully self-contained.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to compensate for. Baseline 4 applies.

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

Purpose4/5

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

States a specific verb (获取) and resource (群系统消息列表), and clarifies what it contains (pending join requests, invitation notifications). This is clear, though it doesn't explicitly distinguish itself from the similarly named sibling get_recent_notices_and_requests.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of alternatives. The sibling get_recent_notices_and_requests appears related, but the description gives no signal about when to prefer one 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_infoB

获取当前登录的 QQ 账号信息 (返回 user_id 与 nickname) (OneBot 11: get_login_info)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but for a zero-parameter read-only lookup the burden is light. It usefully discloses the return fields (user_id, nickname) and the underlying OneBot 11 action, yet says nothing about auth prerequisites, rate limits, or failure behavior when no account is logged in.

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

Conciseness4/5

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

A single front-loaded sentence that leads with the action and resource. The two trailing parentheses (return fields, OneBot action name) add some value but are slightly redundant padding.

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

Completeness4/5

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

No output schema exists, so the description must carry return-value information, and it does so by naming user_id and nickname. For a trivial no-argument read, nothing critical is missing, though error/empty-state behavior is unaddressed.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The parenthetical return-field note describes output rather than input and does not mislead about parameters.

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

Purpose4/5

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

States a specific verb+resource: retrieve the currently logged-in QQ account info, and even names the returned fields (user_id, nickname). It is unambiguous in isolation, but does not differentiate from the sibling list_qq_accounts, which could also surface account data.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative guidance. The sibling set contains list_qq_accounts, switch_qq_account, and login_new_qq_by_qrcode, so an agent gets no help deciding when this single-account lookup is the right call versus those.

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

get_login_qrcode_imageB

查看本地最新的 NapCat 登录二维码图片路径 (qrcode.png),并可选在电脑屏幕上直接打开展示该二维码。 :param open_image: 若二维码文件存在,是否立即在屏幕上打开图片查看器,默认 True

ParametersJSON Schema
NameRequiredDescriptionDefault
open_imageNo若二维码文件存在,是否立即在屏幕上打开图片查看器,默认 True

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does disclose a meaningful side effect: opening an on-screen image viewer, gated on the file existing. However it omits what happens if the file is missing, error behavior, and the fact that the returned value is a file path.

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

Conciseness3/5

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

The purpose sentence is front-loaded and compact, but the trailing `:param` line is pure duplication of the schema and does not earn its place in the description.

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

Completeness3/5

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

For a single-parameter tool with no output schema, the description adequately conveys purpose and the display side effect. It stops short of stating the return format (a path) or failure behavior, which matters since no output schema exists to fill that gap.

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

Parameters3/5

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

Schema coverage is 100% and the only parameter is fully documented in the schema. The description's `:param open_image` line simply duplicates that schema text verbatim, adding no new meaning. Baseline 3 is appropriate.

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

Purpose4/5

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

The description names a specific verb and resource: it retrieves the path to the local NapCat login QR code image (`qrcode.png`) and optionally displays it. This is distinct from the login flow sibling, though it never explicitly differentiates itself from `login_new_qq_by_qrcode`.

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

Usage Guidelines2/5

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 closely related `login_new_qq_by_qrcode` sibling, nor any stated preconditions (e.g. that the QR code only exists during a pending login). The reader must infer the usage context.

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 获取单条消息的详细信息,包括发送者、发送时间、原始消息段等 (OneBot 11: get_msg)。 :param message_id: 目标消息 ID

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes目标消息 ID

TDQS

B3.2/5.0
Behavior2/5

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 conveys that this is a read but says nothing about permissions, whether the message may have been deleted/expired, rate limits, or error behavior such as an invalid message_id. For a lone-parameter lookup with no annotation coverage this is thin.

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

Conciseness4/5

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

The first sentence front-loads the tool's purpose and returned fields, and the trailing param line is a minor redundancy. It is compact and largely earns its place, though the param restatement is wasted text.

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

Completeness3/5

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

With one required parameter, no annotations, and no output schema, the description minimally tells an agent what it gets back (sender, time, raw segments). However, it omits how message_id is obtained (the get_*_history tools) and what happens on a missing/stale ID, leaving real gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents message_id as '目标消息 ID'. The description's ':param message_id' line only restates the target message ID and adds no format, scope, or sourcing detail 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.

Purpose4/5

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 detailed info for a single message by message_id, and enumerates the returned fields (sender, time, raw message segments). This clearly distinguishes it from the history-listing siblings like get_group_msg_history and get_recent_messages, though it does not explicitly name them.

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

Usage Guidelines3/5

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

Usage is implied by the single-message scope and the required message_id, but the description never states when to prefer this over get_group_msg_history, get_friend_msg_history, or get_forward_msg. No explicit alternatives or exclusions are offered.

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

get_napcat_statusA

获取 NapCat OneBot 11 协议端运行状态与版本信息 (组合调用 get_status 与 get_version_info)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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 add real value by revealing that this is an aggregate of get_status and get_version_info, implying a read-only, side-effect-free call, but it says nothing about permissions, latency, failure modes when NapCat is down, or return shape.

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

Conciseness5/5

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

A single front-loaded sentence that names the resource and then parenthetically explains the mechanism. Every clause earns its place; nothing is padded.

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

Completeness4/5

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

For a no-argument, no-annotation, no-output-schema read tool, the description conveys the essential outcome (status + version). It is nearly complete, though an agent gets no hint of what fields come back or how the composite behaves if one underlying call fails.

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

Parameters4/5

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

The tool takes zero parameters, so there are no parameter semantics to explain; the baseline for a 0-param tool applies. Nothing in the description misleads about inputs.

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

Purpose4/5

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

States a specific verb+resource: retrieving NapCat OneBot 11 runtime status and version info. It also discloses the underlying composition (get_status + get_version_info), which is unusually informative. It stops short of 5 because it never distinguishes itself from the sibling check_napcat_environment, which an agent could plausibly confuse with this tool.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives. The closest sibling, check_napcat_environment, is left unaddressed even though it sounds like a competing way to inspect NapCat health, leaving the agent to infer the boundary.

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

get_private_file_urlB

获取私聊文件的直接下载链接或本地缓存路径 (NapCat 扩展接口: get_private_file_url)。 :param file_id: 私聊文件 file_id

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes私聊文件 file_id

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden, and it does disclose the meaningful behavior that the result is either a direct download URL or a local cache path. However, it omits whether the call requires the file to still exist, permission/auth requirements, or expiry/rate-limit behavior.

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

Conciseness4/5

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

The purpose is front-loaded in a single clear clause and the size is appropriate. The embedded Sphinx-style ':param' docstring is redundant with the schema and slightly clutters the sentence, but it is not a structural problem.

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

Completeness3/5

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

For a simple one-parameter getter with no output schema, the description is nearly complete: it names what is returned. It still lacks the origin of file_id and the private-vs-group distinction, and with no annotations those gaps are not covered elsewhere.

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

Parameters3/5

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

Schema description coverage is 100%, so the single file_id parameter is already documented in the schema, and the description merely repeats ':param file_id: 私聊文件 file_id'. It adds no format, source, or validation detail beyond the schema, which is the expected baseline when the schema does the work.

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

Purpose4/5

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

States a specific verb (获取) and resource (私聊文件的直接下载链接或本地缓存路径), so an agent knows it retrieves a download link or cache path for a private-chat file. The 'private' scope implicitly distinguishes it from the sibling get_group_file_url, though that alternative is never named.

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

Usage Guidelines2/5

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 (e.g. that file_id comes from a received message), and no reference to the group-file sibling. The agent must infer context entirely.

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

get_recent_contactB

获取当前 QQ 最近联系列表 / 最近会话列表 (包含最近联系的好友和群聊及最新消息摘要) (NapCat 扩展接口: get_recent_contact)。 :param count: 返回的最近会话数量,默认 20

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo返回的最近会话数量,默认 20

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully scopes the return (recent friends, groups, latest message summaries) and flags it as a NapCat extension interface, but says nothing about auth/login requirements, ordering, or pagination behavior for a read endpoint.

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

Conciseness3/5

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

Front-loaded with the purpose, which is good, but the ':param count' line duplicates the schema verbatim and '最近联系列表 / 最近会话列表' is a near-synonym pair, so there is mild redundancy.

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

Completeness3/5

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

For a zero-required, one-parameter read tool this is adequate, but with no output schema the description should more concretely describe the shape of returned entries (fields per contact/conversation) rather than only naming the categories.

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

Parameters3/5

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

Schema description coverage is 100% and the sole parameter (count, default 20) is fully documented in the schema. The description merely restates the same :param line, adding no semantics beyond what structured data already provides.

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

Purpose4/5

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

States a specific verb and resource ('获取...最近联系列表/最近会话列表') and clarifies the payload covers both friends and group chats with latest message summaries. It is distinguishable from sibling get_recent_messages, but the description never explicitly contrasts itself with it or with get_friend_msg_history/get_group_msg_history.

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

Usage Guidelines2/5

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

No when-to-use guidance and no alternatives named. An agent cannot tell from the text whether get_recent_contact should be preferred over get_recent_messages or get_friend_list for the same conversational intent.

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

get_recent_messagesB

获取 MCP 服务后台通过 WebSocket 实时监听并缓存的近期 QQ 消息列表。 支持按私聊/群聊、目标 QQ 号或群号、关键词过滤。 :param count: 返回的最大消息条数,默认 20 :param chat_type: 消息类型过滤: 'all' (全部), 'private' (仅私聊), 'group' (仅群聊) :param target_id: 按特定群号 (group_id) 或特定用户 QQ 号 (user_id) 过滤 (可选) :param keyword: 按消息文本或发送者昵称关键词过滤 (可选) :param include_self_sent: 是否包含自己发出的消息,默认 False

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo返回的最大消息条数,默认 20
keywordNo按消息文本或发送者昵称关键词过滤 (可选)
chat_typeNo消息类型过滤: 'all' (全部), 'private' (仅私聊), 'group' (仅群聊)all
target_idNo按特定群号 (group_id) 或特定用户 QQ 号 (user_id) 过滤 (可选)
include_self_sentNo是否包含自己发出的消息,默认 False

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose meaningful behavior: messages are captured live over WebSocket and served from a backend cache, implying freshness limits and possible buffer bounds. However, it never states how far back the cache reaches, whether the buffer is cleared (a sibling clear_recent_messages_buffer exists), or the ordering of results — gaps that matter for a read tool with zero annotation coverage.

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

Conciseness3/5

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

The opening sentence is well front-loaded and informative, but the five :param: lines duplicate the input schema verbatim, adding bulk without value. Roughly half the description is redundant repetition of structured fields.

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

Completeness3/5

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

For a 5-parameter, no-output-schema, no-annotation tool, the description covers purpose, data source, and filtering but omits return shape, result ordering, and the cache's time/size bounds. Adequate to call the tool, but not enough to predict what comes back.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's parameter block simply restates the same text (count, chat_type, target_id, keyword, include_self_sent). It adds no new syntax, format, or interaction detail beyond what the schema already documents, so baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb+resource (获取近期 QQ 消息列表) and adds an important qualifier: the data comes from a WebSocket real-time listener cache in the MCP backend, which distinguishes it from server-side history APIs. It stops short of naming the sibling it competes with (get_friend_msg_history / get_group_msg_history), so differentiation is implied rather than explicit.

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

Usage Guidelines2/5

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

It lists supported filters but never says when to use this tool versus get_friend_msg_history, get_group_msg_history, or get_recent_contact. No prerequisites, exclusions, or alternative-selection criteria are given, leaving the agent to infer that 'recent cached' is the distinguishing condition.

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

get_recent_notices_and_requestsB

获取后台实时捕获的近期群通知事件 (如群文件上传、撤回、禁言、成员增减) 以及加好友/加群验证请求。 返回的 flag 字段可直接传入 set_friend_add_request 或 set_group_add_request 进行审批。 :param count: 最大返回条数,默认 20

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo最大返回条数,默认 20

TDQS

B3.4/5.0
Behavior3/5

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 that events are captured in real time and held as a recent buffer, and that returned items carry a flag field, but it says nothing about buffer lifetime, whether reading consumes/clears events, ordering, or the fact that a sibling (clear_recent_messages_buffer) exists.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence and the flag-to-approval linkage follows logically, with no filler. The only flaw is the leftover ':param count:' docstring marker embedded in prose, which is a minor formatting artifact rather than wasted content.

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

Completeness3/5

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

With no annotations and no output schema, the description must explain both behavior and returns. It does describe the kinds of events and the flag field, but leaves out buffer scope, whether results are paginated or capped by the count parameter (beyond restating the default), and whether events persist across calls.

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

Parameters3/5

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

Schema description coverage is 100%, so the single count parameter is already fully documented. The description's trailing ':param count: 最大返回条数,默认 20' merely repeats the schema text verbatim and adds no new semantics; baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: retrieving recent group notification events (file upload, recall, mute, member changes) plus friend/group add-verification requests. It is concrete about the payload categories, but it does not distinguish itself from siblings like get_group_system_msg, get_recent_messages, or get_recent_contact, which an agent could plausibly 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.

Usage Guidelines3/5

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

It establishes a useful downstream workflow by naming set_friend_add_request and set_group_add_request as consumers of the returned flag field, which is real routing value. However, it never states when this tool is the right source versus get_group_system_msg or get_recent_contact, and there are no exclusions or prerequisites.

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

get_stranger_infoB

获取指定 QQ 用户(好友或陌生人)的公开个人资料 (昵称、性别、年龄、等级、个性签名等) (OneBot 11: get_stranger_info)。 :param user_id: 目标 QQ 号 :param no_cache: 是否不使用缓存

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes目标 QQ 号
no_cacheNo是否不使用缓存

TDQS

B3.1/5.0
Behavior2/5

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 implies read-only retrieval and mentions a no_cache option, but it does not disclose permissions, rate limits, error behavior, or what happens when no_cache is used beyond restating the schema.

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

Conciseness4/5

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

The description is front-loaded with the tool's purpose and then lists returned fields and parameters. It is reasonably concise, though the parameter notes duplicate the schema and add little new information.

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

Completeness4/5

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

For a simple read-only profile lookup with no output schema, the description helpfully lists the returned fields and covers both parameters. It is largely complete for calling the tool, though it lacks explicit output shape and behavioral caveats.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the input schema. The description restates 'user_id' and 'no_cache' without adding format, constraints, or behavior beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific verb+resource: fetching the public profile of a specified QQ user (friend or stranger), with example fields like nickname, gender, age, level, and signature. It is distinct from most siblings, but it does not explicitly differentiate itself from related tools such as get_group_member_info or get_friend_list.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, no prerequisites, and no alternatives to consider. It says what the tool does but not when an agent should choose it over sibling tools like get_group_member_info or get_friend_list.

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

list_qq_accountsA

查看本地沙箱中所有已保存登录凭证的 QQ 账号列表、当前默认激活账号以及当前正在线运行的账号信息。 列表中的账号均可直接通过 switch_qq_account 免扫码快速切换上线。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the return content categories, which is valuable given there is no output schema. It also surfaces the behavioral trait that listed accounts support QR-free switching. It omits any explicit read-only/safety statement or freshness caveats, but the 'view/list' framing makes the read nature unambiguous.

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

Conciseness5/5

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

Two sentences, front-loaded with what the tool returns and followed by the actionable next step. No filler or repetition; every clause carries a distinct fact (accounts, default account, online account, switch linkage).

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

Completeness5/5

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

For a zero-parameter read tool with no annotations and no output schema, the description fully covers what an agent must know: the absence of inputs is moot, and the missing output schema is compensated by an explicit enumeration of the returned account categories plus the switch workflow.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. No parameter description is needed or expected here.

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

Purpose5/5

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

States a specific verb and resource ('view' a list of QQ accounts) and enumerates the three distinct data categories returned: saved-credential accounts, the default active account, and the currently online account. An agent can understand the scope without opening any schema, and switch_qq_account is named for differentiation.

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

Usage Guidelines4/5

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

The second sentence gives a clear downstream workflow: accounts in this list can be brought online via switch_qq_account without a QR scan, which tells the agent when this tool is the right entry point. It stops short of explicit when-not-use conditions or prerequisites, so it is clear context rather than full routing guidance.

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

list_supported_napcat_actionsA

列出 NapCatQQ 官方引擎支持的全部 140+ 个底层 Action 名称目录,方便在使用 call_napcat_api 前查阅精确的接口名。 :param category: 分类过滤: 'all' | 'messaging' | 'group_management' | 'files_and_media' | 'friends_and_account' | 'ai_and_system'

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo分类过滤: 'all' | 'messaging' | 'group_management' | 'files_and_media' | 'friends_and_account' | 'ai_and_system'all

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses the catalog nature and its scale (140+), implying a read-only lookup, but never states that it is side-effect free, nor how results are grouped/returned. Adequate but leaves the safety profile to inference.

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

Conciseness3/5

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

The first sentence is well front-loaded, but a raw Sphinx-style ':param category:' directive has leaked into the description text, which is a structural artifact rather than clean prose. Still short and readable overall.

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

Completeness4/5

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

For a one-optional-param catalog tool with no output schema, the description tells the agent what is returned (action name directory) and its size. Minor gaps remain (whether results are grouped by category, whether descriptions accompany names) but nothing critical for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% and the description's category text is an exact duplicate of the schema enum, adding no format, default, or behavioral detail beyond it. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb (列出/list) and resource (NapCatQQ 官方引擎支持的全部 140+ 个底层 Action 名称目录), and quantifies the scope. It explicitly positions itself relative to the sibling call_napcat_api, so an agent can distinguish it without opening the schema.

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

Usage Guidelines4/5

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

The clause '方便在使用 call_napcat_api 前查阅精确的接口名' clearly names the alternative tool and the condition that selects this one. It gives positive routing context but no explicit exclusions or negative guidance, so it falls short of a 5.

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

login_new_qq_by_qrcodeA

启动新 QQ 账号扫码登录流程(绑定新 QQ 号或当旧账号凭证过期需要重新扫码时使用)。 执行流程:

  1. 自动停止当前后台 NapCat 进程并清空自动登录配置;

  2. 启动扫码沙箱生成高清二维码图片 (qrcode.png),并在屏幕上自动弹出该二维码供用户用手机 QQ 扫码;

  3. 等待用户扫码成功后,自动为新 QQ 号生成 OneBot 11 (3000/3001) 端口配置,并自动转为后台常驻模式上线。 :param open_image: 是否自动在电脑屏幕上用图片查看器弹出二维码图片,默认 True :param wait_scan_seconds: 等待用户手机扫码的最大秒数,默认 45 秒

ParametersJSON Schema
NameRequiredDescriptionDefault
open_imageNo是否自动在电脑屏幕上用图片查看器弹出二维码图片,默认 True
wait_scan_secondsNo等待用户手机扫码的最大秒数,默认 45 秒

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses that the flow stops the running NapCat process, wipes auto-login config, generates qrcode.png, pops up the image, waits for a scan, then writes OneBot 11 port config and switches to a background daemon. These are exactly the destructive and side-effecting traits an agent must know before invoking.

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

Conciseness4/5

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

Front-loads the purpose, then uses a numbered execution flow that is easy to scan. The trailing :param lines duplicate the schema rather than adding value, which is the only real waste in an otherwise well-structured description.

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

Completeness4/5

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

For a complex multi-step, side-effecting login operation with no output schema, the description covers prerequisites, side effects, timing, and the resulting port configuration. It does not say what the tool returns on success/failure, which is a minor remaining gap.

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

Parameters3/5

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

Schema description coverage is 100% and the two params (open_image default true, wait_scan_seconds default 45) are already fully documented in the schema; the description repeats them nearly verbatim. No additional syntax or behavioral meaning is added, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource: starting a new QQ account QR-code login flow. The parenthetical narrows the scenario (binding a new QQ or re-scanning when old credentials expire), which separates it from siblings like switch_qq_account and get_login_qrcode_image without needing to open any schema.

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

Usage Guidelines4/5

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

Explicitly states when to use it: binding a new QQ account or re-authenticating when existing credentials have expired. It gives clear triggering conditions but does not name alternative tools (e.g., switch_qq_account) that an agent might otherwise consider, so this lands just under the top band.

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

mark_msg_as_readB

将指定消息、私聊会话或群聊会话标记为已读 (NapCat 扩展接口: mark_msg_as_read / mark_private_msg_as_read / mark_group_msg_as_read)。 :param message_id: 消息 ID (可选) :param user_id: 好友 QQ 号,标记该私聊已读 (可选) :param group_id: 群号,标记该群聊已读 (可选)

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNo好友 QQ 号,标记该私聊已读 (可选)
group_idNo群号,标记该群聊已读 (可选)
message_idNo消息 ID (可选)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden, yet it only states the mutation and the wrapped interface names. It does not disclose side effects (e.g., whether clearing one message also clears the session's unread badge), permission requirements, idempotency, or failure behavior for an all-optional-parameter mutation.

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

Conciseness4/5

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

The core action is front-loaded in a single clear sentence, and the trailing :param lines are compact. They are, however, pure duplication of the schema descriptions, which slightly dilutes the value of the text.

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

Completeness3/5

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

For a three-parameter mutation with no annotations and no output schema, the definition covers the action and targeting options but omits what the tool actually does when multiple or zero of the optional parameters are provided, and what effect/return the caller should expect.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, and the description's parameter lines are verbatim duplicates of those descriptions. Baseline 3 is appropriate since no additional semantics (mutual exclusivity, precedence, defaults) are added.

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

Purpose4/5

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

States a specific verb+resource: mark a message, private chat, or group chat as read, and names the three underlying NapCat interfaces it wraps. No sibling in the list performs a read-state mutation, so the agent can place it easily, though it does not explicitly say how it differs from read-only siblings like get_msg.

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

Usage Guidelines3/5

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

Usage is only implied through the parameter descriptions (message_id for a single message, user_id for a private chat, group_id for a group chat). There is no explicit statement of when to prefer one targeting mode, what happens if multiple or no parameters are supplied, or any prerequisite context.

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

ocr_imageC

调用 QQ 内置 OCR 引擎识别图片中的文字 (NapCat OneBot 11: ocr_image)。 :param image: 图片文件 ID、本地绝对路径或 HTTP URL

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYes图片文件 ID、本地绝对路径或 HTTP URL

TDQS

C2.9/5.0
Behavior2/5

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 engine (QQ 内置 OCR) but says nothing about return format, accuracy, size limits, failure behavior, or whether the operation is read-only. For a tool with zero structured hints, this is a significant gap.

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

Conciseness3/5

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

The first sentence is tight and front-loaded, but the second sentence is a verbatim repeat of the schema's parameter description, complete with Sphinx-style ':param' markup that leaks authoring artifacts into agent-facing text. Partly efficient, partly redundant.

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

Completeness3/5

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

There is no output schema and no annotations, so the description should ideally cover the return shape and constraints. It establishes the what and the input format adequately for a one-parameter tool, but omits any notion of what the OCR call returns, leaving it only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter is already fully documented by the schema. The description merely restates the identical text (file ID, local absolute path, or HTTP URL), adding no syntax or format nuance beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource in Chinese — calling QQ's built-in OCR engine to recognize text in images — and identifies the underlying NapCat OneBot 11 action. No sibling performs OCR, so the purpose is unambiguous even without an explicit contrast sentence.

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

Usage Guidelines2/5

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, no prerequisites (e.g. whether the image must be accessible to the NapCat host), and no exclusions. The agent is left to infer everything about invocation context.

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

restart_napcat_serviceB

强制重启本地 NapCat 后台服务进程(可指定要登录的 QQ 号)。 :param uin: 指定重启登录的 QQ 号 (可选,留空则使用当前默认账号) :param wait_seconds: 等待端口监听就绪的秒数,默认 25

ParametersJSON Schema
NameRequiredDescriptionDefault
uinNo指定重启登录的 QQ 号 (可选,留空则使用当前默认账号)
wait_secondsNo等待端口监听就绪的秒数,默认 25

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations present, the description carries the full behavioral burden. It does disclose one useful trait beyond the schema: it blocks/wait until the port is listening ready, via wait_seconds, implying the restart is not instantaneous. However it omits what happens to in-flight connections, existing sessions, or the failure mode if the process does not come back up.

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

Conciseness3/5

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

The purpose is front-loaded in a single clear sentence, which is good. But the trailing ':param ...' lines duplicate the input schema word-for-word, adding length without adding information, so structure is only adequate.

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

Completeness3/5

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

For a disruptive restart tool with no annotations and no output schema, the description covers the action and its blocking wait but omits permissions/auth requirements, failure behavior, and the effect on active sessions or logins. It is minimally sufficient to call but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters, and the description only restates them verbatim (':param uin:' / ':param wait_seconds:') with no added format, constraint, or fallback semantics. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description names a specific verb and resource: '强制重启本地 NapCat 后台服务进程' (force-restart the local NapCat backend service process). It clearly reads as a restart action, which an agent can distinguish from start/stop siblings by the verb. It stops short of explicitly contrasting itself with start_napcat_service/stop_napcat_service, so it is not a 5.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given. It never says when a restart is preferable to stop+start, or what state triggers a restart, and no prerequisite conditions are mentioned. The only conditional content is the optional uin parameter, which is usage of a parameter, not guidance on tool selection.

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

send_group_forward_msgB

向指定群聊发送合并转发消息 (NapCat OneBot 11: send_group_forward_msg)。 节点格式示例: [{"type": "node", "data": {"name": "发送者昵称", "uin": "10001", "content": "消息内容"}}] :param group_id: 目标 QQ 群号 :param messages: 合并转发消息节点数组 (list of node dicts)

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes目标 QQ 群号
messagesYes合并转发消息节点数组 (list of node dicts)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but only implies a write/mutation via '发送'. It discloses nothing about permissions, rate limits, failure behavior, or whether the forward is persisted, leaving the safety and side-effect profile unspecified.

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

Conciseness4/5

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

The purpose is front-loaded, followed by the node format example, then param docs. The param lines largely restate the schema, but the format example earns its place and the whole entry is compact.

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

Completeness4/5

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

For a send tool with no output schema and no annotations, the key complexity—the node array format—is covered, along with the target group. Missing details about the return value and error handling are minor given the format example is the main callability hurdle.

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

Parameters4/5

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

Schema coverage is 100% and both params are documented, but the schema's messages.items is an empty type {}, so the description's concrete node example ({type, data:{name, uin, content}}) supplies the array element structure the schema omits. That is genuine added value beyond the baseline.

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

Purpose4/5

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

The description states a specific verb and resource: sending a merged/combined forward message to a specified group chat, tied to the NapCat OneBot 11 action. '群聊' and '合并转发' implicitly separate it from send_group_msg and send_private_forward_msg, though 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.

Usage Guidelines2/5

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

No when-to-use guidance is given, and no alternatives are mentioned. An agent must infer that this differs from send_group_msg or send_private_forward_msg purely from the tool name, with no exclusions or prerequisites stated.

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

send_group_msgB

向指定 QQ 群发送群聊消息 (OneBot 11: send_group_msg)。 支持纯文本、@全体成员 ([CQ:at,qq=all] 或直接 @全体成员)、@指定成员 ([CQ:at,qq=123456]) 及图片/表情等 CQ 码。 :param group_id: 目标 QQ 群号 :param message: 要发送的群消息内容 :param auto_escape: 是否作为纯文本发送 (不解析 CQ 码),默认 False

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes要发送的群消息内容
group_idYes目标 QQ 群号
auto_escapeNo是否作为纯文本发送 (不解析 CQ 码),默认 False

TDQS

B3.4/5.0
Behavior3/5

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 discloses CQ-code support and the auto_escape plain-text mode, but says nothing about permissions, rate limits, what happens on failure, or the return value (e.g., message_id) of a send operation.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence, followed by the supported message formats. The trailing :param block largely duplicates the schema, which is mild redundancy, but overall the text is efficient and well-ordered.

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

Completeness3/5

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

For a 3-parameter mutation tool with no annotations and no output schema, the description covers message formatting well but omits the return contract (message identifier) and error/edge behavior. Adequate but with clear gaps for correct invocation handling.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description's :param lines simply restate the schema descriptions verbatim, adding no syntax or format detail beyond it — baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('向指定 QQ 群发送群聊消息') with the underlying OneBot 11 action named, so an agent immediately knows what it does. It does not explicitly distinguish itself from close siblings like send_msg or send_group_forward_msg, 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.

Usage Guidelines3/5

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

Usage is implied by the name and description (send a message to a group), but there is no explicit when-to-use guidance and no routing to alternatives such as send_msg (unified) or send_group_forward_msg (forwarded content). An agent must infer the choice from sibling names alone.

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

send_likeC

向指定好友资料卡点赞 (OneBot 11: send_like)。 :param user_id: 对方 QQ 号 :param times: 点赞次数 (1~10,默认 10)

ParametersJSON Schema
NameRequiredDescriptionDefault
timesNo点赞次数 (1~10,默认 10)
user_idYes对方 QQ 号

TDQS

C2.9/5.0
Behavior2/5

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 mentions the action and the times range/default, but does not disclose side effects, permission requirements, rate limits, or what happens on repeated calls. This is minimal for a side-effecting action.

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

Conciseness4/5

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

The description is short and front-loads the purpose, followed by parameter notes. The parameter lines largely repeat the input schema, which slightly reduces efficiency, but the overall text is concise.

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

Completeness3/5

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

For a simple two-parameter action with full schema coverage and no output schema, the description covers the basic call requirements. However, it leaves behavioral context and usage routing to the agent, so it is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description duplicates the schema parameter descriptions exactly and adds no extra meaning or format details beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific verb and resource: liking a specified friend's profile card, and identifies the underlying OneBot 11 action 'send_like'. It does not explicitly distinguish this tool from similar siblings such as set_msg_emoji_like or send_poke, 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.

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The implied usage is simply that it likes a friend's profile card, but no routing information is provided.

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

send_msgC

通用消息发送接口 (OneBot 11: send_msg),可根据 message_type 发送私聊或群聊消息。 :param message_type: 消息类型,'private' (私聊) 或 'group' (群聊) :param target_id: 当 message_type='private' 时为对方 QQ 号;为 'group' 时为目标群号 :param message: 要发送的消息文本或 CQ 码 :param auto_escape: 是否不解析 CQ 码,默认 False

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes要发送的消息文本或 CQ 码
target_idYes当 message_type='private' 时为对方 QQ 号;为 'group' 时为目标群号
auto_escapeNo是否不解析 CQ 码,默认 False
message_typeYes消息类型,'private' (私聊) 或 'group' (群聊)

TDQS

C2.5/5.0
Behavior2/5

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 states the operation is a message send but discloses nothing about rate limits, permissions, return values, or side effects for a mutation tool. The only behavioral hint (message_type drives routing) is already implied by the parameter set.

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

Conciseness3/5

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

The purpose sentence is reasonably front-loaded, but the four :param lines duplicate the input schema one-for-one and inflate the definition without adding information. This redundancy costs structure quality.

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

Completeness2/5

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 describe behavioral traits (permissions, return shape, failure modes) in the description. It instead only restates parameters, leaving the behavioral burden unmet for an agent deciding how to call it safely.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description's :param blocks merely repeat the schema text verbatim, adding no syntax, format, or edge-case detail beyond it. Baseline 3 is appropriate.

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

Purpose3/5

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

The description states a verb and resource ('通用消息发送接口' / send_msg) and explains it sends private or group messages based on message_type. However, it is a generic framing that fails to differentiate from siblings send_private_msg and send_group_msg, which do the same thing with a fixed type.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of the specialized siblings (send_private_msg, send_group_msg). The agent must infer when the general send_msg is preferable to the dedicated tools, which is exactly the ambiguity this field should resolve.

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

send_pokeA

发送“戳一戳”互动提醒 (NapCat 扩展接口: send_poke)。 若提供 group_id 则在群内戳指定成员;若不提供则发送私聊戳一戳。 :param user_id: 要戳的目标 QQ 号 :param group_id: 所在群号 (可选,不填则为私聊戳一戳)

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes要戳的目标 QQ 号
group_idNo所在群号 (可选,不填则为私聊戳一戳)

TDQS

A3.5/5.0
Behavior3/5

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 discloses the two delivery modes and that this is a NapCat extension interface, but says nothing about rate limits, permission requirements, failure modes (e.g., non-friend target), or whether the recipient is notified.

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

Conciseness4/5

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

The core purpose and the mode-selection rule are front-loaded in the first two clauses, which is efficient. The trailing ':param' lines duplicate the schema descriptions and add some redundancy, but overall it is short and readable.

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

Completeness4/5

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

For a simple two-parameter interaction tool with no output schema and no annotations, the description covers the essential calling logic (mode selection). Return values need not be explained without an output schema, but failure conditions and prerequisites remain unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are already fully documented in the schema. The description merely restates the same parameter text ('要戳的目标 QQ 号', '所在群号 (可选,不填则为私聊戳一戳)') without adding syntax, constraints, or format details beyond it, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb and resource ('发送戳一戳互动提醒') and immediately clarifies the two operating modes (group vs. private) based on group_id. It is unambiguous against most siblings, though it never explicitly contrasts itself with related interaction tools like send_like or send_group_msg.

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

Usage Guidelines3/5

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

It states the conditional that selects group vs. private behavior ('若提供 group_id 则在群内戳指定成员;若不提供则发送私聊戳一戳'), which is genuine usage guidance. However, there is no guidance on when to prefer this over alternatives (send_like, send_msg) or any prerequisites such as needing an existing friend/group relationship.

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

send_private_forward_msgB

向指定好友发送合并转发消息 (NapCat OneBot 11: send_private_forward_msg)。 节点格式示例: [{"type": "node", "data": {"name": "发送者昵称", "uin": "10001", "content": "消息内容"}}] :param user_id: 接收方好友 QQ 号 :param messages: 合并转发消息节点数组 (list of node dicts)

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes接收方好友 QQ 号
messagesYes合并转发消息节点数组 (list of node dicts)

TDQS

B3/5.0
Behavior2/5

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 is a mutation tool, yet nothing is said about permissions, rate limits, whether the message is reversible, or what the return value looks like. The node format example is useful but is structural, not behavioral.

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

Conciseness3/5

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

The purpose is front-loaded and the example is valuable, but the trailing ':param' lines merely restate the schema descriptions verbatim, adding length without new meaning. The OneBot 11 action-name reference is only marginally useful.

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

Completeness3/5

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

For a tool whose only real complexity is building the nested node array, the inline example makes it callable. However, with no annotations and no output schema, the description should at least hint at success/failure behavior or the result shape, and it does not.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3. However, the description goes beyond the schema by supplying a concrete node format example ('[{type: node, data: {name, uin, content}}]'), which is genuinely needed to construct the 'messages' array that the schema leaves as an untyped items:{} list. This adds real construction value.

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

Purpose4/5

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

The description states a specific verb and resource ('向指定好友发送合并转发消息' – send a merged forward message to a specified friend), which inherently distinguishes it from send_group_forward_msg (group) and send_private_msg (single message). It does not explicitly name those siblings, but the scope is unambiguous.

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

Usage Guidelines2/5

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, and no alternatives are named. An agent must infer that this is the tool for multi-node merged forwards to friends versus send_private_msg for single messages, but the description never states that.

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

send_private_msgB

向指定好友或用户发送私聊消息 (OneBot 11: send_private_msg)。 支持纯文本、CQ 码 (如 [CQ:image,file=xxx] / [CQ:face,id=14])。 :param user_id: 对方 QQ 号 :param message: 要发送的消息内容 (文本或 CQ 码字符串) :param auto_escape: 是否作为纯文本发送 (不解析 CQ 码),默认 False

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes要发送的消息内容 (文本或 CQ 码字符串)
user_idYes对方 QQ 号
auto_escapeNo是否作为纯文本发送 (不解析 CQ 码),默认 False

TDQS

B3.4/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It usefully discloses that the message body supports text and CQ codes and what auto_escape does, but it says nothing about failure modes (e.g. non-friend targets), rate limits, or what is returned. Partial behavioral coverage only.

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

Conciseness4/5

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

Purpose and the upstream action name are front-loaded in the first sentence, and the CQ-code support is called out early. The subsequent ':param' lines largely duplicate the schema descriptions, which is mild redundancy but not verbosity.

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

Completeness3/5

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

With no annotations and no output schema, the description should say more: it never explains that a successful call returns a message_id, nor any error/permission behavior for a mutation-style tool. Core calling information is present, but important operational context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents user_id, message and auto_escape; the docstring lines restate them nearly verbatim. The only added value is the concrete CQ-code example format, which is minor. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('向指定好友或用户发送私聊消息') and names the upstream OneBot 11 action, so the agent can tell it apart from send_group_msg by the '私聊' scope. It does not explicitly name the sibling to prefer/reject, so it falls just short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by '私聊' (private vs group) and by the required user_id, but there is no explicit when-to-use/when-not guidance and no mention of prerequisites such as being friends with the target. Adequate but leaves the agent to infer routing between this and send_group_msg/send_msg.

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

set_essence_msgC

将指定群消息设为群精华消息 (NapCat 扩展接口: set_essence_msg)。 :param message_id: 要设为精华的消息 ID

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes要设为精华的消息 ID

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It notes the tool is a NapCat extension interface but does not disclose permission requirements, idempotency, error behavior, or reversibility for this mutation. That is a significant gap for a write operation.

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

Conciseness3/5

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

The core purpose sentence is front-loaded and efficient, but the trailing ':param message_id' line duplicates the schema description verbatim and earns no place. Slightly redundant rather than maximally tight.

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

Completeness2/5

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 is too thin. It omits permission requirements, side effects, and failure modes, leaving the agent without enough to invoke it confidently.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents the single parameter. The description merely repeats the same text ('要设为精华的消息 ID') and adds no new syntax, format, or constraint details. Baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: setting a specified group message as an essence message, with the NapCat extension API name. It is clearly distinguishable from siblings like delete_essence_msg and get_essence_msg_list, though it does not explicitly name those siblings.

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

Usage Guidelines2/5

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 versus alternatives such as delete_essence_msg or get_essence_msg_list, and no stated prerequisites (e.g., admin/owner permission required to set an essence message). Usage must be inferred entirely.

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

set_friend_add_requestB

审批处理他人发来的加好友请求 (OneBot 11: set_friend_add_request)。 :param flag: 加好友请求事件上报的 flag 标识 :param approve: True 同意添加,False 拒绝添加 :param remark: 同意后的好友备注名 (可选)

ParametersJSON Schema
NameRequiredDescriptionDefault
flagYes加好友请求事件上报的 flag 标识
remarkNo同意后的好友备注名 (可选)
approveNoTrue 同意添加,False 拒绝添加

TDQS

B3.2/5.0
Behavior2/5

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 conveys that approve=false rejects and that remark is applied after approval, but says nothing about permissions, whether a rejection is final/irreversible, or what happens to the pending request state.

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

Conciseness4/5

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

The purpose is front-loaded in a single clear sentence, and the docstring-style parameter lines are compact. The :param lines duplicate the schema descriptions, which is mild redundancy rather than bloat.

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

Completeness3/5

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

With no annotations and no output schema, the description should disclose the mutation's safety profile and expected result, and it only partially does so. It is adequate for a simple 3-parameter approval action but leaves the agent guessing about reversibility and the return value.

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

Parameters3/5

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

Schema description coverage is 100% and the description merely restates the same per-parameter text verbatim (flag, approve, remark). It adds no format, source, or constraint detail 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.

Purpose4/5

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

The description states a specific verb+resource: approving/handling incoming friend-add requests, with the OneBot 11 action name given for traceability. It is clearly distinguishable from the sibling set_group_add_request by resource (friend vs group), though it does not explicitly name that sibling.

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

Usage Guidelines3/5

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

Usage is implied: you call this when you have a pending friend request and want to accept or reject it, and the 'flag' note hints it comes from an event report. However, it never names where to obtain the flag (e.g. get_recent_notices_and_requests) or states any when-not conditions.

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

set_friend_remarkB

设置或修改指定好友的备注名 (NapCat 扩展接口: set_friend_remark)。 :param user_id: 好友 QQ 号 :param remark: 新备注名称

ParametersJSON Schema
NameRequiredDescriptionDefault
remarkYes新备注名称
user_idYes好友 QQ 号

TDQS

B3/5.0
Behavior2/5

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 states a mutation ('设置或修改') but doesn't disclose permissions required, reversibility, rate limits, or whether the remark can be cleared.

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

Conciseness3/5

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

The core sentence is efficient and front-loaded, but the inclusion of ':param' lines duplicates schema content and the '(NapCat 扩展接口)' parenthetical adds little for an agent.

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

Completeness2/5

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

For a mutation tool with zero annotations and no output schema, the description omits prerequisites, permission needs, and error behavior. It is not complete enough for reliable invocation.

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

Parameters3/5

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

Schema description coverage is 100% and the description repeats the same param docs ('好友 QQ 号', '新备注名称') without adding format, constraints, or edge cases. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource: '设置或修改指定好友的备注名' (set or modify a friend's remark name), which is unambiguous and distinguishable from siblings like set_group_card or set_qq_profile.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives such as set_group_card or set_self_longnick. It implicitly handles friend remarks only, but exclusions and context are absent.

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

审批处理加群请求或邀请入群请求 (OneBot 11: set_group_add_request)。 :param flag: 加群请求事件上报的 flag 标识 :param sub_type: 请求类型,'add' (他人申请入群) 或 'invite' (被邀请入群) :param approve: True 同意,False 拒绝 :param reason: 拒绝时的理由 (仅在 approve=False 时生效)

ParametersJSON Schema
NameRequiredDescriptionDefault
flagYes加群请求事件上报的 flag 标识
reasonNo拒绝时的理由 (仅在 approve=False 时生效)
approveNoTrue 同意,False 拒绝
sub_typeNo请求类型,'add' (他人申请入群) 或 'invite' (被邀请入群)add

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It is a mutating, effectively irreversible approval action, yet it says nothing about required permissions (admin/owner), what happens on approval, or error behavior. It only clarifies the approve/reason interaction, which is already in the schema.

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

Conciseness3/5

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

The opening sentence is appropriately front-loaded, but the following four lines duplicate the schema's parameter descriptions word-for-word, which is wasted space given 100% schema coverage.

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

Completeness2/5

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

For a mutating tool with no annotations and no output schema, the description leaves out the key operational context: where the flag comes from and what permissions are needed. It is not complete enough for an agent to invoke it correctly in a real flow.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description merely restates the same parameter text verbatim, adding no new syntax, format, or sourcing information for 'flag'.

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

Purpose4/5

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

The description states a specific verb and resource: approving/handling group join requests or group invite requests, and names the OneBot 11 action. It is clearly distinguishable from the sibling set_friend_add_request by the 'group' resource, though it never explicitly calls out that distinction.

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

Usage Guidelines2/5

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, nor on the prerequisite that a 'flag' must first be obtained from an event report (e.g. get_group_system_msg / get_recent_notices_and_requests). The agent is told what the params are but not the workflow context.

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

set_group_adminB

设置或取消群管理员 (OneBot 11: set_group_admin)。需群主权限。 :param group_id: 群号 :param user_id: 目标成员 QQ 号 :param enable: True 设为管理员,False 取消管理员

ParametersJSON Schema
NameRequiredDescriptionDefault
enableNoTrue 设为管理员,False 取消管理员
user_idYes目标成员 QQ 号
group_idYes群号

TDQS

B3.4/5.0
Behavior3/5

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 discloses the group-owner authorization requirement, but for a mutating tool it says nothing about reversibility, effect on the target member, failure modes, or whether the target must already be in the group.

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

Conciseness4/5

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

The purpose and permission requirement are front-loaded in the first two sentences, and the whole definition is short. The trailing ':param' lines duplicate the schema, which is mild waste, but nothing is padded or meandering.

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

Completeness3/5

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

There is no output schema and no annotations, so the description must carry the behavioral load. It covers identity, permission, and the enable flag, but omits return/failure behavior and edge cases for a mutation tool — adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's param lines ('群号', '目标成员 QQ 号', 'True 设为管理员,False 取消管理员') merely restate what the schema already documents verbatim. With the schema doing the heavy lifting, the baseline of 3 applies.

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

Purpose4/5

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 — set or revoke group administrator — plus the OneBot 11 action name, so the agent knows exactly what it does. It does not explicitly contrast itself with nearby siblings such as set_group_special_title or set_group_ban, but the overlap risk is low, so 4 rather than 5.

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

Usage Guidelines3/5

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

'需群主权限' gives a real precondition (group-owner permission) that helps the agent decide whether the call can succeed. However, there is no explicit when-to-use vs alternatives guidance or exclusion conditions, so this lands at implied rather than stated usage.

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

set_group_banA

群聊单人禁言或解禁 (OneBot 11: set_group_ban)。 :param group_id: 群号 :param user_id: 目标成员 QQ 号 :param duration: 禁言时长(秒),设为 0 表示解除禁言,默认 1800 (30分钟)

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes目标成员 QQ 号
durationNo禁言时长(秒),设为 0 表示解除禁言,默认 1800 (30分钟)
group_idYes群号

TDQS

A3.5/5.0
Behavior3/5

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 the key behavioral fact that duration=0 lifts the ban and the default is 1800 seconds, which is genuinely useful. However, it omits permission requirements (admin/bot rights), what happens if the target is invalid or already banned, and rate-limit behavior 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.

Conciseness3/5

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

The opening sentence is tight and front-loaded, but the trailing :param lines duplicate the input schema exactly, adding length without new information. Front-loading is good; the redundant parameter restatement costs it a point.

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

Completeness3/5

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

For a 3-parameter mutation tool with no annotations and no output schema, the description covers the core semantics (including the duration=0 unmute sentinel) but says nothing about permissions, error conditions, or response. Adequate but with clear gaps an agent would want filled.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, and the description's :param block repeats them verbatim with no added syntax or format detail. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource: single-member mute/unmute in a group chat, and references the OneBot 11 action name. The word '单人' (single person) implicitly distinguishes it from the whole-group ban sibling set_group_whole_ban, so an agent can route correctly.

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

Usage Guidelines3/5

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

Usage is implied by the description ('mute or unmute a member'), but no explicit when-to-use guidance, no prerequisites, and no named alternatives are given. The contrast with set_group_whole_ban must be inferred from the word '单人'.

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

set_group_cardC

修改群成员的群名片 / 群昵称 (OneBot 11: set_group_card)。 :param group_id: 群号 :param user_id: 目标成员 QQ 号 :param card: 新群名片内容 (传空字符串表示清空群名片)

ParametersJSON Schema
NameRequiredDescriptionDefault
cardNo新群名片内容 (传空字符串表示清空群名片)
user_idYes目标成员 QQ 号
group_idYes群号

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for a mutation tool. It discloses one useful behavioral trait — an empty string clears the card — but that same note is already in the schema, and it says nothing about required permissions, whether the bot can rename itself or only others, or failure behavior.

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

Conciseness3/5

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

Purpose is front-loaded in the first line, which is good, but the three ':param' lines duplicate the schema descriptions verbatim and consume most of the length without adding information.

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

Completeness3/5

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

For a three-parameter mutation tool with no annotations and no output schema, the description covers the action and its parameters but omits permission requirements and result semantics, leaving meaningful gaps for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so group_id, user_id, and card are all already documented in the schema. The description merely restates those same descriptions, adding no format, range, or edge-case detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource: modifying a group member's card/nickname, and cites the underlying OneBot 11 action name. An agent can distinguish it from neighbours like set_group_name or set_qq_profile, though it doesn't explicitly contrast with set_group_special_title or set_friend_remark.

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

Usage Guidelines2/5

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

No statement of when to use this versus alternatives, no prerequisites (e.g. admin/owner rights needed to change another member's card), and no exclusions. Usage is only implied by the tool name and the param list.

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

set_group_kickB

将指定成员移出群聊 / 群踢人 (OneBot 11: set_group_kick)。需具备管理员或群主权限。 :param group_id: 群号 :param user_id: 被移出的成员 QQ 号 :param reject_add_request: 是否拒绝此人今后的加群申请,默认 False

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes被移出的成员 QQ 号
group_idYes群号
reject_add_requestNo是否拒绝此人今后的加群申请,默认 False

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the required authorization level and the side effect that reject_add_request can block future join requests, but says nothing about reversibility, failure behavior, or return format. Partial but meaningful disclosure.

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

Conciseness4/5

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

Compact and front-loaded: the primary action and permission requirement come first, followed by parameter notes. The param lines duplicate the schema, which is slightly redundant but not wasteful enough to hurt much.

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

Completeness3/5

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

For a mutating, no-annotation, no-output-schema tool, the description covers the action, the permission requirement, and one side effect. It is adequate but leaves gaps around failure modes and any output/confirmation, so it is complete only at a minimum-viable level.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema. The description merely restates group_id, user_id, and reject_add_request, adding no syntax, constraints, or format detail beyond the structured fields. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: remove a designated member from a group chat (kick). The action is unambiguous and distinguishable from set_group_leave (self-leave) by its member-targeting semantics. However, it does not explicitly name or contrast a sibling tool, so it stops short of a 5.

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

Usage Guidelines3/5

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

It states a prerequisite (requires admin or group-owner permissions), which implies when the call is valid, but gives no explicit when-to-use vs when-to-avoid guidance and names no alternative (e.g., set_group_ban for temporary removal). Usage context is implied rather than spelled out.

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

set_group_leaveB

退出群聊或解散群聊 (OneBot 11: set_group_leave)。 :param group_id: 群号 :param is_dismiss: 是否解散群 (仅当自己是群主时有效),默认 False

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号
is_dismissNo是否解散群 (仅当自己是群主时有效),默认 False

TDQS

B3.4/5.0
Behavior3/5

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 discloses the owner-only precondition for is_dismiss, but omits that this is an irreversible self-removal/mutation, whether the bot loses access to the group afterward, or any permission/error behavior.

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

Conciseness4/5

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

Front-loaded with the action and the API reference, then the params. It is short and readable, though the :param block is pure duplication of the schema and earns no extra value.

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

Completeness3/5

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

For a two-parameter destructive tool with no annotations and no output schema, the description covers purpose, params, and one precondition. It still leaves the agent guessing about reversibility, side effects on group membership, and failure modes.

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

Parameters3/5

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

Schema coverage is 100% and the two :param lines simply restate the schema descriptions verbatim, adding no new syntax, ranges, or edge cases. Baseline 3 applies when the schema already does the documenting.

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

Purpose4/5

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

The description states a specific verb+resource pair with two clear modes: leaving a group or dismissing it, and names the underlying OneBot action. It is distinguishable from write-oriented siblings like set_group_kick, but it does not explicitly contrast itself with any of them.

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

Usage Guidelines3/5

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

Usage is implied by the two named modes (leave vs. dismiss), and it adds one real precondition — dismissal only works when the caller is the group owner. It does not say when to prefer this over related tools such as set_group_kick or set_group_ban.

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

set_group_nameC

修改 QQ 群名称 (OneBot 11: set_group_name)。 :param group_id: 群号 :param group_name: 新群名称

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号
group_nameYes新群名称

TDQS

C2.8/5.0
Behavior2/5

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 says nothing about required privileges, whether the change is reversible, what happens on failure (e.g. insufficient permission or invalid name), or rate limits — significant gaps for a group-mutating action.

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

Conciseness3/5

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

Purpose is front-loaded in one short line, which is good, but the trailing ':param' lines simply duplicate the schema descriptions and consume space without adding information.

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

Completeness2/5

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

For a write operation with no annotations and no output schema, the description omits everything behavioral: permission requirements, failure modes, and side effects on group members. The schema covers the inputs, but the description leaves the operation opaque.

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

Parameters3/5

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

Schema description coverage is 100% and both params carry identical text ('群号', '新群名称') in the description, so the description adds no meaning beyond what the schema already provides. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource: '修改 QQ 群名称' (modify QQ group name), plus the underlying OneBot 11 action name for reference. It is distinct from nearby siblings like set_group_card, set_group_admin, or set_group_portrait, though it never explicitly says so.

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

Usage Guidelines2/5

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

No guidance on when to use this tool, what preconditions apply (bot must be owner/admin), or what alternative exists for renaming other entities. The agent gets no context beyond the bare action.

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

set_group_portraitC

修改 QQ 群头像 (OneBot 11: set_group_portrait)。 :param group_id: 群号 :param file: 图片本地绝对路径、网络 URL 或 base64:// 字符串

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes图片本地绝对路径、网络 URL 或 base64:// 字符串
group_idYes群号

TDQS

C2.8/5.0
Behavior2/5

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 reveals nothing about required permissions, whether the change overwrites an existing portrait, rate limits, or the response on success/failure for what is clearly a mutation operation — a significant gap.

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

Conciseness3/5

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

The purpose is front-loaded in one clear line, but the two ':param' lines duplicate the schema descriptions verbatim, adding length without information. It is compact but partly redundant.

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

Completeness2/5

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 is too thin: it omits permission requirements, overwrite behavior, and expected outcomes. The parameter details it does include only repeat the schema, leaving real behavioral questions unanswered.

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

Parameters3/5

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

Schema description coverage is 100%, and the description merely restates the same parameter text already present in the schema for both group_id and file. It adds no meaning beyond what the structured schema documents, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource ('修改 QQ 群头像') and cites the exact OneBot 11 action name, so an agent knows this sets a group's avatar. It doesn't explicitly distinguish itself from the sibling set_qq_avatar (personal avatar), leaving that inference to the agent.

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

Usage Guidelines2/5

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, nor any prerequisites (e.g., admin/bot permission needed to change a group avatar). Usage is entirely implied by the name.

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

设置群成员专属头衔 (OneBot 11: set_group_special_title)。需群主权限。 :param group_id: 群号 :param user_id: 目标成员 QQ 号 :param special_title: 专属头衔名称 (空字符串表示取消头衔) :param duration: 有效期秒数,默认 -1 表示永久

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes目标成员 QQ 号
durationNo有效期秒数,默认 -1 表示永久
group_idYes群号
special_titleNo专属头衔名称 (空字符串表示取消头衔)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose the group-owner permission requirement plus the empty-string-cancels semantics and the -1=permanent default. It omits failure behavior, whether existing titles are overwritten, and any rate limits, so the disclosure is partial.

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

Conciseness3/5

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

The purpose line is front-loaded and efficient, but the four :param lines duplicate schema text word-for-word, which is pure redundancy rather than conciseness. The useful permission and cancel-semantics notes are buried in the schema echo rather than stated up front.

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

Completeness4/5

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

For a 4-parameter mutation with no annotations and no output schema, the description covers the essentials: permission requirement, required vs optional params, and the meaning of cancel/permanent values. Return values are not described but the tool's contract is otherwise adequately specified.

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

Parameters3/5

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

Schema coverage is 100% and the description's :param lines are verbatim repetitions of the schema descriptions, adding no syntax, format, or edge-case meaning beyond them. Baseline 3 applies when the schema already does the work.

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

Purpose4/5

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

States a specific verb+resource ('设置群成员专属头衔') and cites the OneBot 11 action name, so the agent knows it targets a group member's honorific rather than a card, admin flag, or group name. The unique resource makes it distinguishable from siblings, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

States a prerequisite ('需群主权限'), which implies who may call it and under what condition. It does not, however, tell the agent when to prefer this over adjacent tools like set_group_admin or set_group_card, or what to do if permission is lacking.

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

set_group_todoC

将群内的某条消息设置为“群待办”提醒全员 (NapCat 扩展接口: set_group_todo)。 :param group_id: 群号 :param message_id: 要设为群待办的消息 ID

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes群号
message_idYes要设为群待办的消息 ID

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It discloses the side effect of notifying all members, but says nothing about required permissions (likely group admin/owner), reversibility (is there an un-set), rate limits, or error conditions for this mutation.

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

Conciseness3/5

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

Purpose is front-loaded and readable, but the trailing :param lines duplicate the schema descriptions exactly, adding no value. Slightly redundant rather than wasteful.

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

Completeness2/5

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

For a 2-param mutation tool with no annotations and no output schema, the description omits permission requirements, failure modes, and reversibility. It is not complete enough for an agent to call it confidently in edge cases.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented in the schema, and the :param lines merely repeat them verbatim. Baseline 3 is appropriate since the description adds no syntax or semantic detail beyond the schema.

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

Purpose4/5

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

States a specific verb+resource (set a group message as a 'group todo') and describes the effect ('提醒全员' / remind all members), plus notes it's a NapCat extension interface. However, it does not differentiate itself from similar siblings like set_essence_msg, so an agent must infer the distinction.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no alternatives named. With siblings such as set_essence_msg and set_group_* operations, the description gives no routing logic for choosing this tool.

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

set_group_whole_banC

开启或关闭群全员禁言 (OneBot 11: set_group_whole_ban)。 :param group_id: 群号 :param enable: True 开启全员禁言,False 关闭全员禁言

ParametersJSON Schema
NameRequiredDescriptionDefault
enableNoTrue 开启全员禁言,False 关闭全员禁言
group_idYes群号

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses nothing beyond the toggle semantics. It does not state the admin/permission requirement, whether it affects current admins, what happens to existing bans, or the response shape — significant gaps for a mutating group-management call.

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

Conciseness4/5

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

The purpose is stated first and in one clause, followed by the action identifier. The trailing :param lines duplicate the schema documentation, which is mild redundancy rather than bloat.

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

Completeness2/5

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

For a mutating group tool with zero annotations and no output schema, the description should at minimum cover permissions and reversibility. It leaves the agent without the behavioral context needed to call this safely.

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

Parameters3/5

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

Schema description coverage is 100%, so both group_id and enable are already fully documented in the schema, and the description merely repeats that text verbatim. Baseline 3 applies since the description adds no syntax, format, or edge-case meaning beyond the schema.

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

Purpose4/5

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

Specific verb (开启/关闭) plus resource (群全员禁言) with the underlying OneBot action named, so the agent knows exactly what state is being toggled. It does not distinguish itself from the sibling set_group_ban (single-member mute), 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.

Usage Guidelines2/5

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 and no reference to the closely related set_group_ban / get_group_shut_list siblings. Usage is only inferable from the name and the enable flag.

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

set_msg_emoji_likeB

对指定消息添加或取消表情回应 / 贴表情 (NapCat 扩展接口: set_msg_emoji_like)。 :param message_id: 目标消息 ID :param emoji_id: 表情 ID (如 128077 表示👍,或 QQ 表情 ID) :param set_like: True 为添加贴表情,False 为取消

ParametersJSON Schema
NameRequiredDescriptionDefault
emoji_idYes表情 ID (如 128077 表示👍,或 QQ 表情 ID)
set_likeNoTrue 为添加贴表情,False 为取消
message_idYes目标消息 ID

TDQS

B3.1/5.0
Behavior3/5

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 behavioral axis (add vs. cancel via set_like) and that this is a non-standard NapCat extension endpoint, which is useful context. However it says nothing about permission requirements, failure modes for invalid message/emoji IDs, or reversibility beyond the flag.

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

Conciseness3/5

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

The first sentence front-loads the purpose well, but the following three :param lines are redundant with a schema that already has 100% coverage, so they do not earn their place. The mixed Chinese/English docstring style is functional but not optimized for an agent reader.

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

Completeness3/5

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

For a simple three-parameter mutation with no output schema and no annotations, the description covers the core operation but omits return/result semantics and error behavior. It is minimally adequate rather than complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description's :param lines are verbatim copies of the schema descriptions and add no new meaning. The example (128077 = 👍) is helpful but already present in the schema, so baseline 3 applies.

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

Purpose4/5

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: add or remove an emoji reaction on a specified message. It also tags the operation as a NapCat extension API, which helps distinguish it from standard actions. It does not explicitly differentiate itself from nearby siblings such as send_like (user-level like) or send_poke, leaving that inference to the agent.

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

Usage Guidelines2/5

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 (e.g., group membership or permissions), and no mention of alternatives like send_like for liking a user. The set_like flag semantics are explained, but that is parameter behavior, not usage guidance.

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

set_online_statusA

设置当前登录 QQ 的在线状态 (NapCat 扩展接口: set_online_status)。 常用状态码: status=10(在线), 30(离开), 40(隐身), 50(忙碌), 60(Q我吧), 70(请勿打扰)。 :param status: 主状态码 (默认 10 在线) :param ext_status: 扩展状态码 (默认 0) :param battery_status: 电量状态 (默认 0)

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo主状态码 (默认 10 在线)
ext_statusNo扩展状态码 (默认 0)
battery_statusNo电量状态 (默认 0)

TDQS

A3.8/5.0
Behavior3/5

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 discloses the meaning of each status code (10=online, 40=invisible, etc.), which is genuine behavioral context, but it omits permission requirements, whether the change is reversible, scope of effect, and response shape.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, and the status-code list earns its place. The :param docstring lines largely repeat the schema descriptions, adding minor redundancy but not bloat.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description documents all three parameters well but says nothing about behavior, effect scope, or what is returned. Adequate but with clear gaps given the burden it must carry alone.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema by enumerating the common status codes and their meanings — the schema has no enums and only states defaults. ext_status and battery_status remain opaque in both places.

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

Purpose5/5

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

States a specific verb and resource: '设置当前登录 QQ 的在线状态' (set the online status of the currently logged-in QQ). No sibling tool sets presence (set_qq_profile covers profile fields, set_self_longnick covers nickname), so an agent can distinguish it immediately.

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

Usage Guidelines3/5

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

Usage is only implied by the name and purpose — there is no explicit when-to-use, when-not, or alternative routing. The status-code list is parameter help, not context about when an agent should change presence.

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

set_qq_avatarB

修改当前登录 QQ 账号的头像 (NapCat 扩展接口: set_qq_avatar)。 :param file: 图片本地绝对路径、HTTP URL 或 base64:// 字符串

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes图片本地绝对路径、HTTP URL 或 base64:// 字符串

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it only discloses that the change applies to the currently logged-in account. It does not say the existing avatar is overwritten irreversibly, whether a login/authentication state is required, what happens on invalid input, or any rate limits. This is a mutation tool with essentially no safety or side-effect disclosure.

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

Conciseness4/5

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

The description is short and front-loads the core action before the API name and parameter note. The ':param file:' line duplicates the schema description, which is slight waste, but the overall length is appropriate for a one-parameter tool.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema, the description covers the action, the target account, and the accepted input formats. It stops short of noting overwrite behavior or error conditions, but nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter is already fully documented in the schema, and the description merely repeats the same text verbatim. No added meaning (e.g., size limits, accepted image formats, fallback behavior for URLs) is provided beyond the structured field, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource — modifying the avatar of the currently logged-in QQ account — and the scope qualifier '当前登录' disambiguates it from siblings like set_group_portrait or set_qq_profile. It is clear what the tool does, 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.

Usage Guidelines2/5

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 and no mention of alternative tools such as set_qq_profile or set_group_portrait. The agent must infer that this is the tool for avatar changes purely from the name and verb.

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

set_qq_profileC

修改当前登录 QQ 账号的个人资料 (NapCat 扩展接口: set_qq_profile)。 :param nickname: 新昵称 (可选) :param personal_note: 个人说明 / 个性签名 (可选) :param sex: 性别代码 (1男, 2女, 0未知,可选)

ParametersJSON Schema
NameRequiredDescriptionDefault
sexNo性别代码 (1男, 2女, 0未知,可选)
nicknameNo新昵称 (可选)
personal_noteNo个人说明 / 个性签名 (可选)

TDQS

C2.9/5.0
Behavior2/5

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 not say whether unspecified fields are preserved or cleared, whether it requires a logged-in session, whether changes are reversible, or what the response contains. For a mutation tool with zero annotation coverage this is a substantial gap.

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

Conciseness4/5

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

Front-loads the core purpose in the first clause with the NapCat action name; the rest is param echoing that duplicates the schema. Reasonably tight, though the repeated :param lines add little beyond the structured fields.

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

Completeness3/5

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

A profile-setting mutation tool with no annotations and no output schema leaves behavioral questions unanswered, and the 100% schema coverage offsets the missing param detail. It is adequate for a simple setter but not complete for safe invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, and the description merely restates them verbatim (nickname, personal_note, sex with the same enum-style codes). Baseline 3 applies since the schema does the heavy lifting and no syntax or format value is added.

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

Purpose4/5

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

States a specific verb (修改) and resource (当前登录 QQ 账号的个人资料), making the operation clear. It does not explicitly distinguish itself from close siblings like set_self_longnick, set_qq_avatar, or set_friend_remark, but the target (the logged-in account's own profile) is well-scoped.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, prerequisites, or alternatives. With siblings such as set_qq_avatar and set_self_longnick covering adjacent profile fields, the agent gets no help deciding which tool to reach for. Usage is only weakly implied by the description.

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

set_self_longnickC

设置当前登录 QQ 的个性签名 (NapCat 扩展接口: set_self_longnick)。 :param long_nick: 个性签名内容

ParametersJSON Schema
NameRequiredDescriptionDefault
long_nickYes个性签名内容

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It is a mutation that visibly changes the logged-in account's signature, yet the description says nothing about reversibility, login requirements, failure behavior, or rate limits — the only behavioral hint is the '当前登录 QQ' targeting.

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

Conciseness4/5

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

Very short and front-loaded, with the core action stated first. The trailing ':param long_nick' is docstring residue rather than prose, but it costs little and introduces no ambiguity.

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

Completeness3/5

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

For a single-parameter, no-output-schema tool this is close to adequate — action, target scope, and parameter are all identifiable. But a mutation tool with zero annotations should at minimum state the login prerequisite and what a successful call does to the profile.

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

Parameters3/5

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

Schema description coverage is 100% and the description merely restates the same meaning ('个性签名内容' for long_nick), adding no format, length, or validation detail beyond the schema. Baseline 3 applies when the schema already documents the parameter.

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

Purpose4/5

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

States a specific verb (设置/set) and resource (当前登录 QQ 的个性签名), and the parenthetical identifies it as a NapCat extension action. The scope '当前登录 QQ' helps distinguish it from per-group tools like set_group_card, though it doesn't explicitly contrast with set_qq_profile.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites (e.g., must be logged in), and no routing to or away from the closely related set_qq_profile / set_friend_remark siblings. 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.

start_napcat_serviceB

启动本地 NapCat 后台服务进程并等待端口 (3000/3001) 就绪。 若服务已在运行则直接返回就绪状态。 :param uin: 指定要登录启动的 QQ 号 (留空则使用默认激活账号) :param wait_seconds: 等待端口监听的最大秒数

ParametersJSON Schema
NameRequiredDescriptionDefault
uinNo指定要登录启动的 QQ 号 (留空则使用默认激活账号)
wait_secondsNo等待端口监听的最大秒数

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden, and it does disclose key traits: it starts a background process, waits on ports 3000/3001, and short-circuits if the service is already up (idempotent). It does not describe failure behavior, what happens on timeout, or any permission requirements, so the disclosure is useful 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.

Conciseness3/5

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

The first two sentences are front-loaded and efficient, conveying the core action and idempotency. The trailing ':param' block is redundant with the input schema, duplicating documentation rather than adding information.

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

Completeness3/5

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

There is no output schema, and the description only loosely indicates the return state ('直接返回就绪状态') without describing the response shape on failure or partial readiness. For a service-start tool with no annotations, it covers the essentials but leaves failure/timeout outcomes undefined.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters fully. The ':param' lines in the description restate the schema text verbatim (uin default-account fallback, wait_seconds max wait) without adding format, unit, or edge-case detail, so no value is added beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource (启动本地 NapCat 后台服务进程) plus the scope of the operation (waiting for ports 3000/3001). It also implicitly distinguishes itself from restart/stop siblings by noting that an already-running service returns ready status directly, though it does not name those siblings explicitly.

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

Usage Guidelines3/5

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

Usage context is implied: use it to bring the service up, and it is idempotent when the service is already running. However, there is no explicit guidance on when to prefer restart_napcat_service or deploy_or_update_napcat instead, and no stated prerequisites (e.g. whether NapCat must be installed first).

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

stop_napcat_serviceA

安全停止当前后台运行的 NapCat 沙箱进程 (仅精准终止 napcat_runtime 下的进程,不影响系统其他 Node 服务)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden and does disclose meaningful behavior: it is a safe stop that precisely targets napcat_runtime processes and explicitly does NOT affect other Node services. That scoping constraint is genuinely useful. It omits what happens if the service is not running and the response shape, so not a 5.

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

Conciseness5/5

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

A single front-loaded sentence with the action first and the safety scope parenthetically attached. No wasted text.

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

Completeness4/5

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

For a zero-parameter action tool with no annotations and no output schema, the description covers what it does and its blast radius adequately. Only minor gaps remain (idempotency when nothing is running, success/failure signaling).

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to document and the baseline is 4. The description correctly implies a no-argument invocation.

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

Purpose5/5

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

States a specific verb+resource ('安全停止...NapCat 沙箱进程') with a clear scope qualifier. The verb 'stop' naturally distinguishes it from the sibling start_napcat_service and restart_napcat_service without needing to name them.

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

Usage Guidelines3/5

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

Usage is implied by the action (stop the running service) but there is no explicit guidance on when to stop versus restart_napcat_service, nor any preconditions (e.g. only callable when the service is running). Minimum-viable implied usage.

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

switch_qq_accountA

切换当前使用的 QQ 账号(支持在多个已登录过的 QQ 号之间热切换)。 会自动更新默认配置与 OneBot 11 端口配置;当 restart_immediately=True 时,会自动停止旧账号进程并以新账号重启上线。 :param uin: 要切换的目标 QQ 号 :param restart_immediately: 是否立即重启 NapCat 服务使新账号即刻上线,默认 True :param wait_seconds: 重启时等待端口就绪的最大秒数,默认 25

ParametersJSON Schema
NameRequiredDescriptionDefault
uinYes要切换的目标 QQ 号
wait_secondsNo重启时等待端口就绪的最大秒数,默认 25
restart_immediatelyNo是否立即重启 NapCat 服务使新账号即刻上线,默认 True

TDQS

A4.2/5.0
Behavior4/5

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 key behaviors: automatic updates to default and OneBot 11 port configs, stopping the old account process, and restarting with the new account when restart_immediately=True. The wait_seconds parameter and its default are also explained. However, it doesn't mention potential side effects like downtime during restart 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.

Conciseness5/5

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

The description is front-loaded with the core action, followed by behavioral details and parameter descriptions. Every sentence adds value without redundancy, and the structure is clear and efficient.

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

Completeness4/5

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

For a mutation tool with no annotations and no output schema, the description covers the essential behavior: what it does, how it updates configs, and restart options. It could be more complete by mentioning the expected outcome (e.g., success confirmation) or error conditions like invalid uin, but it is largely sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the schema. The description repeats the same information about uin, restart_immediately, and wait_seconds without adding new semantic details like valid formats or edge cases. Baseline 3 is appropriate when the schema fully covers parameters.

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

Purpose5/5

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

The description clearly states the specific verb and resource: '切换当前使用的 QQ 账号' and explains it supports hot-switching between multiple logged-in QQ accounts. It distinguishes itself from login_new_qq_by_qrcode and other account tools by focusing on switching between already logged-in accounts.

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

Usage Guidelines4/5

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

The description implies usage when multiple accounts are logged in and provides context about automatic configuration updates and restart behavior. However, it does not explicitly state when to use this versus login_new_qq_by_qrcode or list_qq_accounts, nor does it mention prerequisites like requiring at least one other account already logged in.

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

upload_group_fileC

向指定 QQ 群上传群文件 (NapCat OneBot 11: upload_group_file)。 :param group_id: 目标 QQ 群号 :param file_path: 本地文件的绝对路径 :param file_name: 群文件中显示的文件名 :param folder: 目标群文件夹 ID (可选,不填则上传至群文件根目录)

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNo目标群文件夹 ID (可选,不填则上传至群文件根目录)
group_idYes目标 QQ 群号
file_nameYes群文件中显示的文件名
file_pathYes本地文件的绝对路径

TDQS

C2.9/5.0
Behavior2/5

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 reveals only that this maps to a NapCat OneBot 11 action and that omitting folder targets the root directory; it says nothing about required bot permissions, file size limits, overwrite/duplicate-name behavior, or what happens on failure — all material for an upload mutation.

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

Conciseness4/5

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

The purpose is front-loaded in one sentence followed by a compact param list; nothing is padded. The param lines are redundant with the schema, which slightly dilutes the value but not the readability.

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

Completeness3/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the definition covers inputs adequately but omits return information (file id/message id) and failure modes. It is minimally viable rather than complete.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's param list is a verbatim restatement of the schema (group_id, file_path, file_name, folder), adding no format or constraint detail. Baseline 3 is appropriate when the schema already documents every parameter.

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

Purpose4/5

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

States a specific verb and resource ('向指定 QQ 群上传群文件') plus the underlying NapCat OneBot 11 action name, so the operation is unambiguous. However, it never names its closest sibling upload_private_file (or delete_group_file / get_group_file_url), so the agent must infer the group-vs-private distinction from the tool name alone.

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

Usage Guidelines2/5

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 prerequisites, and no comparison to the many adjacent file tools in the sibling list. The only usage hint is that folder is optional and defaults to the group root.

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

upload_private_fileC

向指定好友发送本地文件附件 (NapCat OneBot 11: upload_private_file)。 :param user_id: 接收方好友 QQ 号 :param file_path: 本地文件的绝对路径 (如 'D:/Desktop/report.xlsx') :param file_name: 对方看到的显示文件名 (如 'report.xlsx')

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes接收方好友 QQ 号
file_nameYes对方看到的显示文件名 (如 'report.xlsx')
file_pathYes本地文件的绝对路径 (如 'D:/Desktop/report.xlsx')

TDQS

C2.8/5.0
Behavior2/5

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 states the file is sent but says nothing about rate limits, whether the path must exist locally, error/failure behavior, or account/permission requirements 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.

Conciseness3/5

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

The opening sentence is front-loaded and clear, but the :param: block largely duplicates the input schema, adding length without new information. Structure is acceptable but has redundant content.

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

Completeness2/5

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

With no annotations and no output schema, the description should compensate by explaining side effects and outcomes, but it does not describe what happens on success/failure or any return value. The parameter layer is covered by the schema, but the behavioral layer is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the three parameters are already documented. The description repeats those same descriptions verbatim rather than adding format, constraint, or edge-case detail, so baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb+resource ('向指定好友发送本地文件附件' – send a local file attachment to a specified friend) and cites the underlying NapCat OneBot 11 action. It is clearly distinguishable from the group-file siblings, though it does not name them explicitly.

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

Usage Guidelines2/5

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 versus alternatives such as upload_group_file or send_private_msg. No prerequisites, no mention that the target must be a friend, and no exclusions are stated.

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.

  1. 74 tool updatesv1.0.0
    • First observedcall_napcat_api
    • First observedcheck_napcat_environment
    • First observedclear_recent_messages_buffer
    • First observeddelete_essence_msg
    • First observeddelete_friend
    • First observeddelete_group_file
    • First observeddelete_group_folder
    • First observeddelete_msg
    • First observeddeploy_or_update_napcat
    • First observeddownload_file
    • First observedget_essence_msg_list
    • First observedget_forward_msg
    • First observedget_friend_list
    • First observedget_friend_msg_history
    • First observedget_friends_with_category
    • First observedget_group_at_all_remain
    • First observedget_group_file_system_info
    • First observedget_group_file_url
    • First observedget_group_files_by_folder
    • First observedget_group_honor_info
    • First observedget_group_info
    • First observedget_group_list
    • First observedget_group_member_info
    • First observedget_group_member_list
    • First observedget_group_msg_history
    • First observedget_group_root_files
    • First observedget_group_shut_list
    • First observedget_group_system_msg
    • First observedget_login_info
    • First observedget_login_qrcode_image
    • First observedget_msg
    • First observedget_napcat_status
    • First observedget_private_file_url
    • First observedget_recent_contact
    • First observedget_recent_messages
    • First observedget_recent_notices_and_requests
    • First observedget_stranger_info
    • First observedlist_qq_accounts
    • First observedlist_supported_napcat_actions
    • First observedlogin_new_qq_by_qrcode
    • First observedmark_msg_as_read
    • First observedocr_image
    • First observedrestart_napcat_service
    • First observedsend_group_forward_msg
    • First observedsend_group_msg
    • First observedsend_like
    • First observedsend_msg
    • First observedsend_poke
    • First observedsend_private_forward_msg
    • First observedsend_private_msg
    • First observedset_essence_msg
    • First observedset_friend_add_request
    • First observedset_friend_remark
    • First observedset_group_add_request
    • First observedset_group_admin
    • First observedset_group_ban
    • First observedset_group_card
    • First observedset_group_kick
    • First observedset_group_leave
    • First observedset_group_name
    • First observedset_group_portrait
    • First observedset_group_special_title
    • First observedset_group_todo
    • First observedset_group_whole_ban
    • First observedset_msg_emoji_like
    • First observedset_online_status
    • First observedset_qq_avatar
    • First observedset_qq_profile
    • First observedset_self_longnick
    • First observedstart_napcat_service
    • First observedstop_napcat_service
    • First observedswitch_qq_account
    • First observedupload_group_file
    • First observedupload_private_file

TDQS

B3.2/5.0

Scored across 74 tools

Disambiguation4/5

Most tools target clearly distinct OneBot/NapCat actions (send private vs group, group file vs folder, profile vs signature vs status), and detailed descriptions help disambiguate. However, a few overlaps exist: send_msg duplicates the specific private/group send tools, call_napcat_api overlaps all named tools as a fallback, and several recent/history/system-message tools could be confused at a glance.

Naming Consistency5/5

Names are consistently snake_case and follow predictable verb-first patterns: get_*, set_*, send_*, delete_*, upload_*, list_*, and clear_*. Minor outliers like check_napcat_environment or deploy_or_update_napcat still fit the snake_case convention and remain readable.

Tool Count2/5

74 tools is far above the typical well-scoped range and feels heavy even for a broad OneBot 11 wrapper. The server also provides call_napcat_api and list_supported_napcat_actions as generic passthroughs, making many named convenience tools partially redundant.

Completeness5/5

The surface covers the domain comprehensively: account login/switch/deploy, messaging, group administration, files, friends, profile, history, recent events, OCR, and a generic passthrough for uncovered OneBot actions. No obvious lifecycle or CRUD gap remains for the stated QQ/NapCat control purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables AI clients to send and receive QQ messages through NapCatQQ (OneBot v11) for both private and group chats. It supports message context management, real-time WebSocket listening, and human-like typing simulation.
    7
    25
    MIT
  • F
    license
    C
    quality
    B
    maintenance
    Enables 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.
    57
    4
    -
  • F
    license
    A
    quality
    B
    maintenance
    Enables 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
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables interaction with QQ through official bot APIs or personal accounts bridged via NapCat/OneBot v11, including status checks, target listing, bounded context retrieval, and plain-text sending to allowlisted conversations.
    5
    MIT