Skip to main content
Glama
EthanQC

feishu-user-plugin

by EthanQC

feishu-user-plugin

License: MIT Node.js MCP Tools npm PRs Welcome

中文 · English · Docs · CHANGELOG · npm

飞书 / Lark MCP 服务器,覆盖 IM、文档、多维表格、知识库、云空间、日历、任务 v2、OKR、实时事件。84 tools · 3 auth layers · 9 MCP prompts · MIT licensed · Node ≥18

兼容 Claude Code、Codex、Cursor、Windsurf、VS Code、Claude Desktop、OpenClaw 等 MCP 客户端。

与其他飞书 MCP 的区别:基于 cookie + protobuf 协议路径,支持以用户本人身份发消息——飞书官方开放 API 没有 send_as_user 权限点,机器人 token 发出的消息一律标 sender_type: "app"

三层鉴权

鉴权层

凭证

覆盖能力

工具数

用户身份(cookie + protobuf)

LARK_COOKIE

以用户身份发文本 / 图片 / 文件 / 富文本 / @ / 批量

8

官方 API(机器人)

LARK_APP_ID + LARK_APP_SECRET

群消息读写、文档、多维表格、知识库、云空间、日历、任务 v2、OKR、联系人、实时事件 WS

70+

用户 OAuth UAT

LARK_USER_ACCESS_TOKEN + LARK_USER_REFRESH_TOKEN

P2P 私聊读取、用户 chat 列表;写入文档 / Bitable / 日历 资源时以用户为 owner

2 显式 + 全工具 UAT-first

三层独立 —— 配置任意一层,对应工具可用。

Related MCP server: lark-hermes-mcp

安装

npx feishu-user-plugin setup --app-id <APP_ID> --app-secret <APP_SECRET>
npx feishu-user-plugin oauth         # 拿用户 OAuth UAT
# 重启 Claude Code / Codex

cookie 获取:跟 Claude Code 说一句"帮我设置飞书 cookie"会自动经 Playwright 扫码登录抓取;手动方式在 feishu.cn DevTools Network 标签从请求头 Cookie 整行复制(不要用 document.cookie 或 Application > Cookies 标签—— HttpOnly 的 session / sl_session 拿不到)。

没有 APP_ID / SECRET 见下面 创建飞书应用

用法

你:帮我以我身份给王小明发:今天的代码 review 我看完了,有 3 个 nit
Claude:[调用 send_to_user]  Sent
你:总结"工程组"群今天 9 点之后的讨论,发个日报到 #日报频道
Claude:[read_messages → 总结 → send_to_group]  Sent

创建飞书应用

LARK_APP_ID / LARK_APP_SECRET 是用 Official API(70+ 工具)的前置条件:

  1. 飞书开放平台 登录 → 创建自建应用(不能选商店应用 / 第三方应用,否则 P2P 读取会被锁)

  2. 添加应用能力 → 启用机器人

  3. 权限管理 → 添加 scope:

    • 消息:im:messageim:message:readonlyim:chat:readonly

    • 文档:docx:documentbitable:recordwiki:wiki:readonlydrive:drive:readonly

    • 联系人:contact:user.base:readonly

    • 按需:okr:okr:readonlycalendar:calendar:readonlytask:taskdrive:drivedocs:document.media:uploadwiki:wiki

  4. 凭证与基础信息 → 复制 App ID(cli_xxx)+ App Secret

  5. 创建版本 → 提交审核 → 管理员审批

  6. 把 bot 加到要读消息的群里

工具索引(84 个)

完整工具列表 + 参数 + 跨域注意事项见 CLAUDE.md

工具

说明

send_to_user

按名搜用户 + 发文本,一步完成

send_to_group

按名搜群 + 发文本,一步完成

send_as_user

按 chat ID 发文本,支持回复线程(root_id / parent_id

send_image_as_user

以用户身份发图(v1.3.9)

send_file_as_user

以用户身份发文件(需先 upload_file

send_post_as_user

富文本:标题 + 段落 + @ + 超链

send_card_as_user

飞书交互卡片(机器人通道;cookie 通道服务端关闭,仅 bot 路径可用)

batch_send

一次发多条到不同 chat(text / image / file / post)

用户身份 —— 联系人 / 信息(cookie,5 个)

工具

说明

search_contacts

搜用户 / bot / 群

create_p2p_chat

创建或获取 P2P chat

get_chat_info

群详情(接受 oc_xxx 或 numeric)

get_user_info

用户名 / 头像查询

get_login_status

三层鉴权健康检查(实际跑一次 UAT 调用,不只看配置)

用户 OAuth UAT —— P2P 读取(2 个)

工具

说明

read_p2p_messages

读私聊历史(外部群自动 fallback)

list_user_chats

用户加入的所有群(仅群,不含 P2P;P2P 用 search_contactscreate_p2p_chat

官方 API —— IM(15 个)

工具

说明

list_chats

列 bot 加入的所有 chat

read_messages

读群消息(接受 chat 名 / oc_xxx / numeric;外部群自动 UAT fallback;merge_forward 自动展开)

send_message_as_bot

机器人发消息

reply_message

机器人回复

forward_message

转发到其他 chat(自动识别 receive_id_type)

delete_message

撤回 / 删除 bot 消息

update_message

编辑已发消息(仅支持 text / interactive)

add_reaction / delete_reaction

表情回应

pin_message

置顶

create_group / update_group

建群 / 改群

list_members / manage_members

群成员 list / add / remove(注意 member_id_type 与 ID 类型匹配)

download_message_resource

下载消息附件(image / file,> 2 MiB 必须 save_path

官方 API —— 文档(7 个)

工具

说明

search_docs

关键词搜文档

read_doc

结构化 JSON

read_doc_markdown

v1.3.9 直接返回 markdown,~60% token 节省(适合 RAG / 总结)

get_doc_blocks

块树

create_doc

创建文档(可选 wiki_space_id 直接落知识库)

manage_doc_block

块 create / update / delete(image_path / file_path / image_token / file_token 快捷)

download_doc_image

下载文档内嵌图片

官方 API —— 多维表格 Bitable(6 个,v1.3.7 整合)

工具

actions

说明

manage_bitable_app

create / copy / get_meta

应用级(创建可指定 wiki_space_id 直接落 Wiki)

manage_bitable_table

list / create / update / delete

数据表 CRUD

manage_bitable_field

list / create / update / delete

字段(update 必须传 type 即使只改名)

manage_bitable_view

list / create / delete

视图(grid / kanban / gallery / form / gantt / calendar)

manage_bitable_record

search / get / create / update / delete

记录 CRUD(数组:单条或最多 500)

upload_bitable_attachment

上传附件,返回 file_token

官方 API —— 知识库 Wiki(9 个)

工具

说明

list_wiki_spaces

列空间(UAT-first)

search_wiki

搜知识库

list_wiki_nodes

列节点

get_wiki_node

节点 → obj_token 解析(接受 wiki node token 或 obj_token)

create_wiki_node

创建节点(doc / sheet / bitable / mindnote / file / docx / slides)

update_wiki_node

改名(内容编辑用 docx / bitable 工具)

move_wiki_node

移动

copy_wiki_node

深拷贝

delete_wiki_node

删除 wiki 节点指针(底层 drive 资源用 manage_drive_file(action=delete) 删)

官方 API —— 云空间 Drive(5 个)

工具

说明

list_files

列文件夹内文件

create_folder

建文件夹

manage_drive_file

copy / move / delete(必须传 type

upload_image / upload_file

上传图片 / 文件,返回 key

upload_drive_file

上传到 Drive 文件夹(可选 wiki_space_id 直接挂 Wiki 节点)

官方 API —— OKR(6 个)

工具

说明

list_user_okrs

列指定用户的 OKR(必须传 user_id)

get_okrs

批量取详情(objectives + key results + progress + alignments)

list_okr_periods

列周期(季度 / 年度)

create_okr_progress_record

添加进展记录(v1.3.7,需 okr:okr.content:write

list_okr_progress_records

列进展记录(从 get_okrs 提取 triples)

delete_okr_progress_record

删进展记录

官方 API —— 日历(8 个,写入 v1.3.7)

工具

说明

list_calendars

列日历(primary + 共享 + 订阅)

list_calendar_events

列事件(指定时间窗)

get_calendar_event

事件详情(参与人 / 地点 / 会议链接 / 附件)

create_calendar_event

建事件(需 calendar:calendar.event:write

update_calendar_event

改事件

delete_calendar_event

删事件(可选 meeting_chat_id 同时解散关联会议群)

respond_calendar_event

RSVP(accept / decline / tentative)

get_freebusy

多人 freebusy 查询

官方 API —— 任务 v2(7 个,v1.3.7 新域)

标识符是 task_guid(不是 v1 的 numeric task_id),需 task:task scope。

工具

说明

list_tasks

列当前用户任务

get_task

详情

create_task

建任务(summary 必填)

update_task

改任务(必传 update_fields=[...],飞书只 patch 列出字段)

complete_task

完成 / 取消完成

delete_task

manage_task_members

add / remove 成员(assignee / follower)

插件层 —— 诊断与多账号(4 个)

工具

说明

get_login_status

三层鉴权健康检查

list_profiles

列可用 profile(默认 + LARK_PROFILES_JSON / credentials.json)

switch_profile

切 profile(缓存的 client 实例下次调用重建)

manage_profile_hints

查 / 改 / 清 自动切换缓存(list / set / clear)

插件层 —— 实时事件(2 个,v1.3.9)

工具

说明

get_new_events

拉取增量事件(peek=true 不推进 cursor;filter by event_type / chat_id / since_seconds / profile)

manage_ws_status

info / reconnect / claim / rotate / reconfig(诊断 / 重连 / 抢锁 / 强制 events.jsonl 轮转 / 不重启重新订阅)

9 个 MCP prompts(slash commands)

Prompt

说明

/send

以用户身份发消息

/reply

读最近消息然后回

/digest

群 / P2P 最近消息总结

/search

搜联系人 / 群

/doc

搜 / 读 / 建文档

/table

操作多维表格

/wiki

搜知识库

/drive

列云空间 / 建文件夹

/status

检查三层鉴权状态

客户端配置

环境变量配置一致,配置文件路径和顶层键不同。

统一 env 块

{
  "command": "npx",
  "args": ["-y", "feishu-user-plugin"],
  "env": {
    "LARK_COOKIE": "your-cookie-string",
    "LARK_APP_ID": "cli_xxxxxxxxxxxx",
    "LARK_APP_SECRET": "your-app-secret",
    "LARK_USER_ACCESS_TOKEN": "your-uat",
    "LARK_USER_REFRESH_TOKEN": "your-refresh-token"
  }
}

安放位置

客户端

配置文件

顶层键

Claude Code

~/.claude.json(推荐全局) / .mcp.json

mcpServers.feishu-user-plugin

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

mcpServers.feishu

Codex

~/.codex/config.toml

[mcp_servers.feishu-user-plugin](TOML)

Cursor

.cursor/mcp.json(项目级)

mcpServers.feishu

VS Code (Copilot)

.vscode/mcp.json

servers.feishu(注意是 servers,不是 mcpServers

OpenClaw

~/.openclaw/openclaw.json

mcp.servers.feishu-user-plugin

Windsurf

~/.codeium/windsurf/mcp_config.json

mcpServers.feishu

自动化设置

npx feishu-user-plugin setup                       # 默认写 Claude Code (~/.claude.json)
npx feishu-user-plugin setup --client codex        # Codex (~/.codex/config.toml)
npx feishu-user-plugin setup --client both         # Claude Code + Codex 都写
npx feishu-user-plugin setup --activate            # 激活当前 profile

各客户端完整 JSON 模板见 README.en.md MCP Client Configuration

多账号(v1.3.8 / v1.3.9)

~/.feishu-user-plugin/credentials.json 支持多 profile(默认 + 任意附加),单台机器一处配置覆盖多个飞书账号 / 多个企业。

npx feishu-user-plugin list-profiles
npx feishu-user-plugin switch-profile <name>
npx feishu-user-plugin keepalive --all       # 跨 profile keepalive

读路径工具(read_* / list_* / get_* / search_* / download_*)失败码 91403 / 1254301 / 1254000 / 99991672 / HTTP 403 时自动跨 profile retry。写路径不自动切(避免错号创建资源)。

单调用覆盖:传 via_profile: "<name>" 钉到指定 profile,传 via_profile: "auto" 给写路径开自动切换。

详见 CLAUDE.md "Multi-profile auto-switch" 段

实时事件(v1.3.9 机器级 SSOT)

机器上单进程持有 WS owner 锁(~/.feishu-user-plugin/ws-owner.lockO_CREAT|O_EXCL,30s stale),所有 MCP 进程共享 ~/.feishu-user-plugin/events.jsonl(10 MB 软 / 20 MB 硬限自动轮转),events.cursor.json 是全机所有 harness 共享的 drain cursor —— 每条事件全机恰好一次。

mcp call manage_ws_status --action info        # 谁在持锁、当前订阅、events.jsonl 大小
mcp call manage_ws_status --action claim --force true   # 跨进程抢锁

默认订阅 ["im.message.receive_v1"]。要订阅其他事件(审批 / 日历 / vc / etc),编辑 credentials.json::profiles[<active>].events,然后 manage_ws_status(action=reconfig) 不重启重新订阅。

仅支持 feishu.cn —— Lark 国际版(lark.com)的 WSClient 当前不支持。

工程细节

Token 生命周期

鉴权层

Token

有效期

续期

Cookie

sl_session

12h max-age

4h 心跳自动刷新

App

tenant_access_token

2h

SDK 自动管理

User OAuth

user_access_token

~2h

refresh_token 自动刷新,写回 credentials.json

Refresh Token

7 天

keepalive cron 防过期

crontab -e
# 0 */4 * * * npx feishu-user-plugin keepalive >> /tmp/feishu-keepalive.log 2>&1

UAT 刷新失败 invalid_grant —— refresh token 过期 / 被撤销,重跑 npx feishu-user-plugin oauth 然后重启 Claude Code / Codex。

凭证存储(v1.3.7+)

单一可信源 ~/.feishu-user-plugin/credentials.json(mode 0600),多 harness 共享。schema 见 docs/CREDENTIALS-FORMAT.md

npx feishu-user-plugin migrate              # dry-run
npx feishu-user-plugin migrate --confirm    # 真写

自动 sync hooks

阶段

触发文件

作用

pre-commit

CLAUDE.md staged

同步到 AGENTS.md + skill 引用

pre-commit

package.json / plugin.json / SKILL.md staged

三角等价检查(version 必须一致)

pre-commit

src/server.js / src/tools/* staged

工具个数 + README 84 tools 徽章必须一致

pre-commit

src/* staged

smoke test

post-merge (main)

任意

自动开 team-skills sync PR

CI(.github/workflows/validate.yml)每个 PR 跑同样的 gate。

已知限制

  • Cookie 寿命:12-24 小时无心跳过期,需重新登录 feishu.cn 拿 cookie

  • 协议变化:cookie + protobuf 层依赖飞书 web 客户端的协议,飞书更新可能失效(机器人能力不受影响)

  • 卡片:cookie 通道发卡片服务端不可用,机器人通道可发

  • Lark 国际版:实时事件 WS 不支持

  • 未实现search_messages(v1.3.10 计划)、md → wiki 同步(v1.3.10 主线)

完整 ROADMAP 见 ROADMAP.md

贡献

Issues / PR 欢迎。提交前先看 CONTRIBUTING.md

飞书改协议导致功能挂掉 —— 开 issue 带错误日志即可。

License

MIT

致谢

Available Tools

84 tools
add_reactionA

[Official API] Add an emoji reaction to a message.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID (om_xxx)
emoji_typeYesEmoji type string, e.g. "THUMBSUP", "SMILE", "HEART"

TDQS

A3.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 of behavioral transparency. It only restates the action without disclosing side effects, authentication requirements, idempotency, or how the reaction is displayed to others. This adds little beyond the tool name.

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 a single short sentence that is front-loaded with the action and contains no unnecessary elaboration. The '[Official API]' prefix is minor metadata but does not detract from the overall conciseness.

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

Completeness3/5

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

The tool is simple and all parameters are documented in the schema, but the description gives no behavioral context or return value expectations. For a mutation tool with no annotations, this feels under-specified, although the low complexity keeps it from being severely deficient.

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

Parameters3/5

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

The input schema fully describes both parameters (message_id and emoji_type) with examples, achieving 100% schema coverage. The description adds no additional parameter context, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'Add' and clearly identifies the resource 'emoji reaction to a message'. It is unambiguous and distinguishes the tool from sibling tools like delete_reaction, which performs the opposite operation.

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

Usage Guidelines3/5

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

The description implies when to use the tool ('when you want to add a reaction') but provides no explicit guidance on alternatives, prerequisites, or exclusions. It does not mention related tools like delete_reaction or forward_message, leaving usage context largely implied.

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

batch_sendA

[User Identity / Official API] Send the same or different content to multiple targets in one call. Each target dispatches sequentially with a small delay (anti-rate-limit) and reports per-target success/error. Identity is the cookie user (user-identity sends) unless target.via=bot. Use for broadcast / fan-out scenarios.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetsYesArray of targets. Each entry: { type: "user"|"group"|"chat", id: <user_name | group_name | chat_id>, content: { kind: "text"|"image"|"file"|"post", ... } }. For kind="text": { text }. For "image": { image_key }. For "file": { file_key, file_name }. For "post": { title, paragraphs }. Optional per-target: via="bot" routes through send_message_as_bot (chat_id required).
delay_msNoDelay between sends in milliseconds (default 200, increase for risky volumes).

TDQS

A4.4/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 full burden and delivers important behavioral details: sequential dispatch with a small anti-rate-limit delay, per-target success/error reporting, and identity behavior (cookie user unless target.via=bot). It doesn't cover permissions or failure continuation, but the core behavioral traits are well disclosed.

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

Conciseness5/5

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

The description is three concise sentences, front-loaded with the main action, and every sentence adds value—no filler or redundancy. It is well-structured and easy to parse.

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

Completeness4/5

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

The description covers the use case, execution model, identity routing, error reporting, and rate-limit mitigation. While the return format and failure continuation are not explicitly described, the tool's complexity is largely addressed by the detailed input schema and the description's behavioral disclosures.

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% for both targets and delay_ms, so the baseline is 3. The description adds extra meaning by explaining the anti-rate-limit purpose of delay_ms and clarifying the via=bot routing for targets, going beyond the schema's basic parameter descriptions.

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

Purpose5/5

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

Description clearly states 'Send the same or different content to multiple targets in one call' and explicitly mentions 'Use for broadcast / fan-out scenarios,' making the purpose and scope unambiguous. It also distinguishes this from single-target sibling tools like send_to_user and send_to_group.

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 says 'Use for broadcast / fan-out scenarios,' providing a clear when-to-use signal. It doesn't explicitly name alternatives or when-not scenarios, but the contrast with single-target send siblings is obvious. This earns a 4 for clear context without exclusions.

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

complete_taskA

[Official API + UAT, v1.3.7] Mark a task complete (or uncomplete it). Convenience wrapper around update_task with completed_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_guidYesTask GUID
completedNotrue → mark complete (uses Date.now()); false → uncomplete (sets completed_at to "0"). Default true.

TDQS

A4/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 of behavioral disclosure. It does disclose that the tool can both complete and uncomplete tasks, and that it delegates to update_task, but it doesn't mention permissions, side effects, or return values.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and wastes no words. The version note is brief and adds context without bloating.

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?

This is a simple 2-parameter mutation tool with complete schema coverage. The description clearly states the behavior and relationship to update_task, but since there's no output schema, it could have mentioned the return value for full completeness. Still, the overall context is adequate.

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

Parameters3/5

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

Schema coverage is 100%, so the parameters are already fully documented. The description adds no parameter-specific meaning beyond the schema, but the schema's descriptions are sufficient.

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?

Description states 'Mark a task complete (or uncomplete it)' with a clear verb and resource. It explicitly notes it is a 'Convenience wrapper around update_task with completed_at', distinguishing it from sibling tools like update_task.

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 explains when to use this tool by framing it as a convenience wrapper around update_task, implying it's for quick completion/uncompletion. It provides clear context but lacks explicit exclusions or named alternatives beyond the implied update_task.

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

copy_wiki_nodeA

[Official API] Deep-copy a Wiki node into a different location (and optionally a different space). Underlying resource is duplicated.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSource space ID
node_tokenYesWiki node token to copy
target_parent_tokenNoDestination parent wiki node token (optional)
target_space_idNoDestination space ID (optional; same-space copy if omitted)
titleNoTitle for the copy (optional; defaults to source title)

TDQS

A3.9/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 burden. It discloses key behavioral traits: it is a deep copy (not a move), and 'Underlying resource is duplicated' clearly indicates the original remains. However, it omits return behavior, permissions, and edge cases.

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 one concise sentence plus one clarifying sentence. It is front-loaded with the core action and resource, and every sentence adds value without 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?

The description adequately explains the core operation and the schema covers all parameters, but with no output schema or annotations, it does not state what the API returns (e.g., new node token) or mention error/edge cases. Adequate for basic invocation but incomplete.

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?

All five parameters are fully described in the input schema (100% coverage), so the baseline is 3. The description does not add parameter-specific meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly identifies the action ('Deep-copy'), the resource ('Wiki node'), and the destination ('different location (and optionally a different space)'). The phrase 'Underlying resource is duplicated' distinguishes it from sibling move_wiki_node.

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?

The description implies usage for duplicating a node to another location/space, but does not explicitly state when to use it instead of move_wiki_node or other wiki operations. No exclusions or alternative tool references are provided.

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

create_calendar_eventA

[Official API + UAT, v1.3.7] Create a new calendar event. Requires calendar:calendar.event:write scope (re-run npx feishu-user-plugin oauth after enabling). The current identity (UAT-first) must have writer or owner permission on the calendar.

Time fields: A time object: {timestamp:"", timezone?:"Asia/Shanghai"} OR {date:"YYYY-MM-DD"} for all-day events.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID (use list_calendars; primary calendar has type="primary").
summaryYesEvent title
descriptionNoDescription / notes (optional)
start_timeYesA time object: {timestamp:"<unix-seconds>", timezone?:"Asia/Shanghai"} OR {date:"YYYY-MM-DD"} for all-day events.
end_timeYesA time object: {timestamp:"<unix-seconds>", timezone?:"Asia/Shanghai"} OR {date:"YYYY-MM-DD"} for all-day events.
locationNoOptional. {name, address?, latitude?, longitude?}.
visibilityNoEvent visibility (optional)
attendee_abilityNoWhat attendees may do (optional)
free_busy_statusNoWhether this event blocks the calendar (optional)
remindersNoReminders before event start (optional). E.g. [{minutes:15}].
recurrenceNoiCal RRULE recurrence string (optional)
need_notificationNoWhether to notify attendees on create (default true)

TDQS

A3.7/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 discloses scope requirements, permission level, identity constraint, and time field formats. However, it omits other behavioral traits like whether notifications are sent (the need_notification parameter suggests it but doesn't state explicitly), idempotency, error scenarios, or rate limits. Moderate transparency.

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 relatively concise and front-loaded with purpose, then prerequisites, then time details. It could be slightly more terse (e.g., 'Official API + UAT' might be redundant), but overall it's well-structured and each section adds 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?

Despite having 12 parameters and no output schema, the description does not explain the return value (e.g., the created event's ID or details) or cover error handling. For a creation tool, this is a significant gap. The description misses completeness by not addressing what the agent should expect after invocation.

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 baseline is 3. The description adds value by explaining the two time object formats (timestamp vs. date) and the scope/permission context. This goes beyond the schema's parameter descriptions, which already cover most but not all nuances.

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 'Create a new calendar event.' It uses a specific verb ('Create') and resource ('calendar event'), effectively distinguishing it from sibling tools like update_calendar_event or respond_calendar_event.

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?

The description provides prerequisites (scope, permissions, UAT-first identity) and time field formatting, but it does not offer guidance on when to use this tool compared to alternatives, such as when to use respond_calendar_event for responding to events. The prerequisites are helpful but lack comparative usage context.

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

create_docA

[Official API] Create a new Feishu document. Can place directly under a Wiki space by passing wiki_space_id (optionally wiki_parent_node_token for nested placement) — the plugin creates the doc in drive then attaches it as a Wiki node.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDocument title
folder_idNoParent folder token (optional; ignored when wiki_space_id is set)
wiki_space_idNoWiki space ID to place the doc under (optional)
wiki_parent_node_tokenNoParent wiki node token within the space (optional; defaults to space root)

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 the burden. It discloses the two-step behavior: creating the doc in drive first, then attaching it as a Wiki node. This adds value beyond the name/schema, though it does not cover failure modes 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?

Two sentences, front-loaded with the core purpose, then the optional wiki context. Every sentence carries meaningful information with no redundancy or filler.

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

Completeness4/5

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

Given the moderate complexity (4 params, no output schema) and rich schema descriptions, the description covers the essential nuances of Wiki placement. It doesn't need to explain return values. It lacks explicit alternative guidance, but overall it's sufficiently complete for an agent to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description restates the wiki placement logic already present in the schema descriptions (folder_id ignored when wiki_space_id set, wiki_parent_node_token defaults to root), adding no new parameter-level meaning beyond the 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?

Description clearly states specific action: 'Create a new Feishu document.' It also distinguishes from siblings like create_folder or create_wiki_node by explaining the optional Wiki space placement and the drive-to-Wiki attachment flow, which is unique to 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 Guidelines4/5

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

Provides clear context: you can place the doc directly under a Wiki space using wiki_space_id and optionally nest it with wiki_parent_node_token. However, it doesn't explicitly mention when to use this over alternatives (e.g., create_wiki_node), but the context is sufficiently clear.

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

create_folderC

[Official API] Create a new folder in Drive.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name
parent_tokenNoParent folder token (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits, but it only states the basic create effect. It omits permissions, duplicate-name behavior, parent_token impact, and response format—critical gaps for a create operation.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the verb and resource. 'Official API' adds minor context without bloating the text.

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 simple create tool with no output schema, the description is too sparse. It fails to mention what the caller receives (e.g., folder ID/token) and does not clarify parent_token semantics or error cases, leaving important operational 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%, with 'name' and 'parent_token' both described. The tool description adds no extra parameter-level meaning, 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 clearly states the tool's action ('Create a new folder') and resource ('in Drive'), making its purpose unambiguous. It distinguishes itself from siblings like upload_file or manage_drive_file, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus siblings such as manage_drive_file or upload_drive_file. It implicitly suggests folder creation but lacks prerequisites, exclusions, or alternative recommendations.

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

create_groupB

[Official API] Create a new group chat (as bot). Can add initial members.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGroup name
descriptionNoGroup description (optional)
user_idsNoInitial member open_ids (optional)

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden for behavioral disclosure. It only states the creation action and the ability to add initial members, but does not disclose side effects, permission requirements, whether the bot is automatically added, or any return values. For a mutation tool, 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.

Conciseness5/5

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

The description is two short sentences with no redundancy. It front-loads the core purpose and includes a useful optional capability. Every word earns 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?

Given it is a simple creation tool with three parameters and no output schema, the description covers the basic action but omits usage context, behavioral details, and return expectations. It is minimally viable but leaves clear gaps in guidance and behavioral transparency.

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 parameters. The description adds a minor hint about 'initial members' which maps to the user_ids parameter, but does not provide new meaning 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?

The description clearly states the action: 'Create a new group chat (as bot).' It uses a specific verb and resource, and the addition 'Can add initial members' further clarifies scope. It distinguishes itself from siblings like create_p2p_chat by explicitly targeting group chats.

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 guidance is given on when to use this tool vs. alternatives such as create_p2p_chat or send_to_group. The 'as bot' phrasing implicitly indicates bot context, but there is no mention of prerequisites, exclusions, or when another tool would be more appropriate.

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

create_okr_progress_recordA

[Official API + UAT, v1.3.7] Add a progress note to an OKR objective or key result. Feishu requires source_title, source_url, and a block-structured content; this tool exposes a simple content_text and auto-wraps it into the single-paragraph block format. Pass richer content directly if you need lists / mentions / docs links / images.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idYesID of the OKR objective or key result. Get from get_okrs response (`objective_list[].id` or `objective_list[].kr_list[].id`).
target_typeYes1 = objective, 2 = key result. Pick based on which level target_id refers to.
content_textNoPlain-text progress note. Auto-wrapped into the Feishu block format. Use `content` instead for rich text.
contentNoOptional: full Feishu block structure ({blocks:[...]}). If provided, overrides content_text.
source_titleNoSource label (default "Progress update"). Shown next to the note in the OKR UI.
source_urlNoSource URL (default https://feishu.cn/). Feishu requires a URL even for plain notes.
source_url_pcNoOptional PC-specific source URL.
source_url_mobileNoOptional mobile-specific source URL.
progress_percentNoOptional progress percent (0-100) to bump alongside the note.
progress_statusNoOptional status code (Feishu enum: 1=on track, 2=at risk, 3=blocked, etc).
user_id_typeNoType of user IDs in mentioned_user_list etc. (default open_id)

TDQS

A4.4/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 full responsibility. It discloses the auto-wrapping of content_text into the Feishu block format, the requirement for source_title and source_url, and the override behavior when content is passed. It also mentions the API version and UAT environment. It does not discuss permissions, return values, or failure modes, but for a create operation with no annotations, this is adequate.

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 only three sentences, front-loaded with the primary purpose, then immediately provides key usage constraints and the content option. Every sentence adds essential information without repetition or filler.

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

Completeness4/5

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

Given the tool's complexity (11 parameters, nested content object, no output schema), the description adequately orients the agent: it explains the core Feishu requirement, the simple default path, and the advanced override path. It doesn't explicitly state what the tool returns on success, but the purpose and action are unambiguous from the name and description, making this a minor gap.

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

Parameters4/5

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

Schema descriptions cover 100% of parameters, so the baseline is 3. The description adds meaningful value beyond the schema by explaining the relationship between content_text and content: content_text is auto-wrapped into a single-paragraph block, while content can be passed directly for rich formatting. This helps the agent choose the correct parameter based on the desired output.

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 'Add a progress note to an OKR objective or key result', using a specific verb and resource. It distinguishes the tool from sibling tools like list_okr_progress_records and delete_okr_progress_record by implying it is the creation operation, and adds context about Feishu's content requirements.

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 clear context on when to use the tool (adding progress notes) and provides guidance on choosing between simple content_text and richer content. It mentions Feishu's mandatory fields, implicitly steering the user to provide source_title and source_url. However, it does not explicitly name alternatives or state when not to use this tool, so it stops short of a full 5.

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

create_p2p_chatA

[User Identity] Create or get a P2P (direct message) chat. Returns numeric chat_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesTarget user ID from search_contacts

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 carries the full burden. It discloses the idempotent behavior ('Create or get') and the return type ('numeric chat_id'), which adds useful context. However, it does not mention potential side effects, permissions, or error conditions (e.g., invalid user_id). This is a minimal but adequate disclosure for a simple 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?

The description is a single sentence with 17 words, front-loaded with the core action and result. There is no redundant information or filler. The '[User Identity]' prefix is a minor label but does not detract from 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 tool with one parameter and no output schema, the description is reasonably complete: it states the action (create/get), the resource (P2P chat), and the return value. It does not explain error handling or what to do with the chat_id, but these are less critical given the simplicity. The schema and sibling tools provide enough surrounding context 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% (user_id has a description), so the baseline is 3. The description does not add any parameter-specific meaning beyond what the schema already provides. It correctly implies the parameter identifies the target user, but the schema already states 'Target user ID from search_contacts'.

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 'Create or get a P2P (direct message) chat' with a specific verb and resource, and it explicitly mentions the return value ('Returns numeric chat_id'). This distinguishes it from sibling tools like create_group (group chat) and send_to_user (sending messages), making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for direct messaging by saying 'P2P (direct message) chat', but it does not explicitly state when to use this tool vs alternatives like create_group or send_to_user. There is no mention of prerequisites (e.g., needing to search contacts first) or exclusions, so the guidance is only implied, not explicit.

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

create_taskB

[Official API + UAT, v1.3.7] Create a new task. summary is required; due / members / etc. are optional.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYesTask title
descriptionNoTask description (optional)
dueNoDue time (optional). {timestamp:"<unix-millis>", is_all_day?:true|false}
membersNoInitial members (optional). Each: {id:"<open_id>", role:"assignee"|"follower", type?:"user", name?:"..."}
repeat_ruleNoRecurrence (optional, RFC5545 RRULE)
extraNoFree-form extra metadata (optional)

TDQS

B3.4/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 full responsibility. It only mentions required/optional parameters and a version tag; it does not disclose side effects, return values, authentication needs, or idempotency. This is notably thin 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.

Conciseness5/5

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

The description is a single sentence that front-loads the core action and required parameter. The version bracket is minor noise but does not detract from overall efficiency.

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 output schema, no annotations, and nested object parameters, the description is under-specified. It does not describe what the tool returns, any default behaviors, or contextual prerequisites, making it incomplete for an agent to invoke 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 baseline is 3. The description adds only a restatement that summary is required and others optional, which does not deepen understanding beyond what the schema already provides.

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

Purpose5/5

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

The description opens with 'Create a new task,' a specific verb+resource that clearly distinguishes this tool from sibling task operations like update_task, delete_task, and complete_task. The action 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 Guidelines3/5

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

The description implies usage for creating new tasks but provides no explicit when-to-use or when-not-to-use guidance. It does not reference alternatives, despite many sibling task tools being present.

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

create_wiki_nodeA

[Official API] Create a new Wiki node inside a space. obj_type picks the underlying resource (doc/sheet/bitable/mindnote/file/docx/slides). UAT-first so the resource is owned by the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesWiki space ID (from list_wiki_spaces)
obj_typeYesUnderlying resource type
titleNoNode title (optional; Feishu generates a default if absent)
parent_node_tokenNoParent wiki node under which to create (optional; root if omitted)
node_typeNoorigin = real resource, shortcut = pointer to existing node (default: origin)origin
origin_node_tokenNoRequired when node_type=shortcut — the wiki node this shortcut points at

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 takes on the disclosure burden. It usefully reveals that UAT-first means the resource is owned by the user, but it does not mention that the operation also creates the underlying resource, nor any permissions or side effects beyond ownership.

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 compact and front-loaded with the core purpose, followed by a parameter note and ownership context. The phrase '[Official API]' is slightly redundant but does not waste much 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?

The description covers the essential purpose and ownership context, and the schema handles parameter details. But it gives no guidance on return values, shortcut behavior, or how this tool relates to alternative doc/sheet creation tools, leaving an agent to make some inferences.

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

Parameters3/5

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

The schema covers 100% of parameters (all 6 with descriptions), so the baseline is 3. The description adds marginal value by restating obj_type's role, but does not provide additional detail on defaults or relationships beyond the 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?

The description clearly states the action ('Create a new Wiki node'), the target ('inside a space'), and adds the key parameter 'obj_type' that selects the underlying resource. This distinguishes it from sibling tools like update_wiki_node, delete_wiki_node, and list_wiki_nodes.

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 UAT-first note gives valuable context about ownership and when this tool is appropriate, and 'inside a space' narrows the context. However, it does not explicitly contrast with alternative creation tools like create_doc or explain when to use shortcut vs origin node types.

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

delete_calendar_eventC

[Official API + UAT, v1.3.7] Delete a calendar event. Requires calendar:calendar.event:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID
event_idYesEvent ID
need_notificationNoWhether to notify attendees of the deletion (default true)
meeting_chat_idNoOptional. If the event has a linked meeting chat, pass its chat_id to also dissolve it.

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Adds scope but no details on permanence, notification, or side effects.

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

Conciseness3/5

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

Very short but includes non-essential metadata ('[Official API + UAT, v1.3.7]'). Could be cleaner.

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 output schema. Does not explain return values or important behavioral context like notification defaults or irreversibility.

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 baseline is 3. Description adds no parameter information beyond what is in 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?

Clearly states the tool deletes a calendar event and specifies required scope. However, does not differentiate from siblings like 'create_calendar_event' or 'update_calendar_event'.

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 guidance on when to use this tool vs alternatives. Only states the action and scope requirement.

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

delete_messageA

[Official API] Recall/delete a message (bot can only delete its own messages).

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID (om_xxx)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It discloses the important behavioral constraint that only the bot's own messages can be deleted. It does not describe other traits like permanence, error behavior, or effects on replies, but for a simple delete operation, this level is adequate.

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 a single, front-loaded sentence that communicates the action and the key constraint without any fluff. The '[Official API]' prefix is minor but does not detract. Every word earns its place.

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

Completeness4/5

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

This is a low-complexity tool with one well-documented parameter and no output schema. The description covers the essential operational constraint (own messages only), which is arguably the most critical information for correct invocation. It is sufficiently complete for the tool's simplicity, though it could mention success/failure behavior.

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% (message_id is described as 'Message ID (om_xxx)'). The tool description adds no additional parameter meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's action ('Recall/delete a message') and specifies the resource ('message'). It also includes a key scoping constraint ('bot can only delete its own messages'), which distinguishes it from other message-related tools like update_message or forward_message.

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?

The description provides a clear limitation ('bot can only delete its own messages'), which implicitly guides when the tool can be used. However, it does not explicitly mention when to use this tool vs alternatives (e.g., update_message for editing) or provide exclusions beyond the ownership constraint.

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

delete_okr_progress_recordA

[Official API + UAT, v1.3.7] Delete an OKR progress record by its progress_id (from list_okr_progress_records).

ParametersJSON Schema
NameRequiredDescriptionDefault
progress_idYesProgress record ID

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, leaving the description to carry full behavioral disclosure. The description does not mention whether deletion is permanent, if there are permission requirements, or what happens to associated data. This is a notable gap for a delete operation.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action and resource. The version bracket is brief and does not detract from clarity. No wasted words.

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 delete tool, the description is adequate but not complete. Without annotations or an output schema, it omits important behavioral details such as irreversibility or expected response format, leaving the agent to infer these.

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

Parameters3/5

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

The input schema already documents progress_id with 100% coverage. The description adds a helpful pointer that the ID should come from list_okr_progress_records, but this is minimal extra value beyond the schema's basic field description.

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

Purpose5/5

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

The description clearly states the action (Delete), the resource (OKR progress record), and the key (progress_id). It also references the source for the ID (list_okr_progress_records), distinguishing it from create/list siblings.

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 provides clear context: the ID must come from list_okr_progress_records, implying the appropriate workflow. It does not explicitly exclude alternative sources or mention when not to use it, but the delete verb and ID reference make the usage context clear.

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

delete_reactionB

[Official API] Remove an emoji reaction from a message.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID
reaction_idYesReaction ID (from add_reaction response)

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 burden of behavioral disclosure. It only states the action itself and omits important traits such as whether users can only remove their own reactions, idempotency, or failure behavior when the reaction does not exist.

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 a single, concise sentence that is front-loaded with the action and object. The '[Official API]' prefix is minor noise but does not detract 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 simple delete operation, the description is minimally adequate but lacks critical context such as ownership requirements (whether the user must have added the reaction), behavior when the reaction is not found, and there is no output schema or annotations to fill these 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?

The input schema provides descriptions for both parameters, achieving 100% coverage. The description adds no additional parameter semantics beyond what the schema already provides; the note 'from add_reaction response' is included in the schema, not the description.

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

Purpose5/5

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

The description uses a specific verb 'Remove' and clearly identifies the resource: 'an emoji reaction from a message'. This distinguishes it from sibling tools like 'add_reaction' and 'delete_message', making the tool's purpose unambiguous.

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

Usage Guidelines2/5

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

No explicit guidance is provided on when to use this tool versus alternatives, nor are prerequisites or permission requirements mentioned. The context is implied by the tool's name and sibling set, but not stated.

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

delete_taskA

[Official API + UAT, v1.3.7] Permanently delete a task.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_guidYesTask GUID

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It states 'permanently' which indicates irreversibility, a key behavioral trait. However, it does not mention auth requirements, side effects on related data, or what happens to associated task members/progress.

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 a single concise sentence that is front-loaded with the action 'Permanently delete a task'. The prefix '[Official API + UAT, v1.3.7]' is low-value noise but does not significantly detract from clarity.

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 1-parameter destructive operation, the description covers the core action but lacks context on how to retrieve the task GUID, what 'permanently' implies for related data, and any prerequisites or side effects. It is minimally adequate but leaves 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% with a single parameter task_guid described as 'Task GUID'. The description adds no extra meaning beyond the schema, such as how to obtain the GUID or its format, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states 'Permanently delete a task' with a specific verb (delete) and resource (task). The use of 'permanently' adds important specificity and distinguishes it from related actions like complete_task or update_task.

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?

The description implies usage for deleting a task but provides no explicit guidance on when to use this tool versus alternatives such as complete_task (non-destructive status change) or other delete tools. It lacks any exclusions or alternative mentions.

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

delete_wiki_nodeA

[Official API, v1.3.7] Delete a Wiki node. Calls DELETE /open-apis/wiki/v2/spaces/{space_id}/nodes/{node_token}. The Feishu SDK does not type this endpoint, so the call goes through raw REST (UAT-first; bot fallback uses client.request). The underlying drive resource (docx / sheet / bitable / file) is NOT deleted — Feishu treats wiki nodes as pointers. To delete the actual resource as well, follow up with manage_drive_file(action=delete, type=<obj_type>, file_token=<obj_token>) (use get_wiki_node first to get obj_type / obj_token).

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesWiki space ID
node_tokenYesWiki node token to delete

TDQS

A4/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. It discloses the critical behavior that the underlying drive resource is not deleted, and explains the raw REST implementation due to missing SDK typing. It does not mention whether child nodes are recursively deleted or handle permission failures, which are relevant for a delete 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?

Four sentences, front-loaded with the primary purpose. The technical note about UAT-first/bot fallback is an implementation detail that may not be needed for all users, but it's compact and valuable for an agent. Slightly verbose but well-structured.

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

Completeness3/5

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

The description covers the most critical nuance (pointer vs resource deletion) and the necessary follow-up action, but lacks information about recursive deletion of children nodes, error behavior, or auth requirements. Given the moderate complexity and no output schema, it is not fully 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?

Both parameters are fully described in the schema (100% coverage), so the baseline is 3. The description adds the endpoint template but does not provide additional syntax, formats, or constraints beyond the 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?

The description explicitly states 'Delete a Wiki node' with the HTTP DELETE endpoint, clearly distinguishing it from sibling wiki operations like create/update/move/copy. It also clarifies the pointer semantics, making it clear that this tool only removes the wiki node, not the underlying drive resource.

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

Usage Guidelines4/5

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

It provides clear context for the deletion operation and references `manage_drive_file` as a follow-up for deleting the actual resource, and suggests `get_wiki_node` to retrieve needed tokens. However, it does not explicitly state alternative scenarios (e.g., when to prefer managing the drive file directly), so it's clear but not exhaustive.

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

download_doc_imageA

[User Identity / Official API] Download an image embedded in a docx document so the model can see it. Pass the image_token from get_doc_blocks (block.image.token), and optionally the doc/wiki/URL token to scope the lookup. UAT-first.

Size cap: payloads > 2 MiB MUST pass save_path.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_tokenYesImage token (from get_doc_blocks image block)
doc_tokenNoDocument ID, wiki node token, or Feishu URL (optional but recommended for permission scoping).
save_pathNoAbsolute local path. Required when image bytes > 2 MiB.

TDQS

A4/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 behavioral disclosure burden. It does reveal an important constraint: payloads > 2 MiB MUST pass save_path. However, it does not disclose return format, authentication details (beyond the ambiguous 'UAT-first'), or what happens if save_path is omitted for large files, leaving gaps.

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 concise and front-loaded with the purpose. It is split into two short paragraphs, with the size cap as a separate note. However, the phrase 'UAT-first' is unclear and may confuse agents, slightly reducing effectiveness.

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 with 3 params and no output schema, the description covers the essential usage and the critical size cap. It does not explain the return format or what exactly the model receives, though 'so the model can see it' implies visual access. Given the absence of an output schema, more detail on the response would improve completeness.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds extra meaning by explaining that image_token comes from get_doc_blocks (block.image.token) and that doc_token scopes the lookup. It also reiterates the save_path requirement for large payloads, reinforcing the schema's constraint.

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

Purpose5/5

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

The description clearly states the action ('Download an image embedded in a docx document') with a specific verb and resource. It distinguishes itself from sibling tools like download_message_resource by focusing on docx embedded images, using language like 'so the model can see it.'

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

Usage Guidelines4/5

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

Provides explicit guidance on how to use the tool: pass the image_token from get_doc_blocks, and optionally the doc/wiki/URL token to scope the lookup. This implies the workflow and conditions for use, though it does not explicitly mention when not to use it or name alternatives beyond the implicit context.

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

download_message_resourceA

[User Identity / Official API] Download an image or file attached to a message so the model can see / store it. v1.3.7 (C2.4) consolidates the v1.3.6 download_image (mode 1) + download_file. UAT-first, falls back to app.

For images, the response includes an inline image content block so the model sees pixels. For files, the response includes the bytes as base64 (truncated for display) plus an optional save_path write.

Size cap: payloads > 2 MiB MUST pass save_path. The Anthropic API rejects responses > 5 MB; we cap at 2 MiB so multipart wrapping has headroom.

merge_forward children: Feishu keys media by the parent merge_forward id, not the child id. Use the child's parentMessageId field (returned by read_messages with expand_merge_forward) — not the child id.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID (om_xxx). For merge_forward children, use the child's `parentMessageId`.
keyYesimage_key (img_xxx) for kind=image, file_key for kind=file. From read_messages content.
kindYesimage or file
save_pathNoAbsolute local path. Required when downloaded bytes > 2 MiB (else the response would exceed the Anthropic API 5 MB inline limit).

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fully explains the response format for both images and files, the size limits and API constraints, the save_path mechanism, and the merge_forward id handling. This is rich, specific behavioral context beyond what annotations would typically provide.

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 well-structured with clear sections, uses bold headers for emphasis, and every sentence adds necessary information. It covers complex behavior in a compact, scannable format without fluff.

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

Completeness5/5

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

For a tool with no output schema and no annotations, this description is remarkably complete. It addresses output format, size constraints, file vs image distinction, and a non-obvious merge_forward edge case. It leaves no critical gap for an agent to invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds valuable semantic context: it explains the 2 MiB threshold for save_path, the parentMessageId requirement for merge_forward children, and why the size cap exists. This goes beyond the schema's parameter descriptions by linking parameters to real-world constraints and edge cases.

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

Purpose5/5

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

The description clearly states the tool downloads an image or file attached to a message so the model can see or store it. It distinguishes itself from related tools like download_doc_image and upload_file by specifying the resource type (message attachments) and the dual output modes (image vs file).

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 provides clear context on when to use the tool and critical operational guidance (size cap threshold, save_path requirement, merge_forward special case). It does not explicitly compare to sibling tools or state when not to use it, but it effectively implies this is the consolidated replacement for download_image and download_file.

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

forward_messageA

[Official API] Forward a message to another chat or user. receive_id may be a group chat_id (oc_xxx), an open_id (ou_xxx), a union_id, a user_id, or an email — set receive_id_type to match (default: chat_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID to forward (om_xxx)
receive_idYesTarget chat_id (oc_xxx), open_id (ou_xxx), union_id, user_id, or email — set receive_id_type to match.
receive_id_typeNoFormat of receive_id (default: chat_id). Set to "open_id" when forwarding to a user via their open_id.chat_id

TDQS

A3.7/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 burden of behavioral disclosure. It fails to mention side effects (e.g., that a copy of the message is created in the target chat), any required permissions, or what the API returns. This lack of transparency could lead an agent to make incorrect assumptions about the tool's behavior.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action ('Forward a message to another chat or user'), followed by a concise but necessary clarification about receive_id types. Every word earns its place with no waste.

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

Completeness3/5

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

The tool has 3 parameters, no output schema, and no annotations. The description covers the parameter semantics adequately but omits important contextual details such as return value, side effects, and prerequisites. For a mutation-like operation (forwarding a message), this leaves some gaps, making it minimally complete but not thorough.

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 largely duplicates the schema's parameter explanations (e.g., receive_id formats and receive_id_type default), adding no new semantic meaning beyond what the schema already provides. Therefore, it meets but does not exceed the baseline.

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

Purpose5/5

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

The description clearly states the verb 'Forward' and the resource 'a message to another chat or user', making the action specific and distinct from sibling tools like send_message_as_bot or reply_message. It accurately conveys the core functionality 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 Guidelines4/5

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

The description provides clear context on when to use the tool: to forward an existing message to another chat or user. It does not explicitly mention alternatives or exclusions, but the verb 'forward' implies a distinct operation from sending or replying, so the usage context is adequately clear.

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

get_calendar_eventA

[Official API + UAT] Get full details of a single calendar event (summary, description, start/end, attendees, location, attachments, meeting link).

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID
event_idYesEvent ID from list_calendar_events

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It clearly identifies the output behavior by listing the returned fields (summary, description, start/end, attendees, location, attachments, meeting link), indicating a read-only operation. It does not mention permissions or rate limits, but the get verb and output details provide sufficient transparency for a simple read 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?

The description is a single, well-structured sentence that front-loads the purpose and lists key output fields. Every phrase adds value, with no redundancy or filler.

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

Completeness5/5

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

Given the tool's simplicity (2 parameters, no output schema), the description is complete. It states what the tool does, what fields it returns, and the schema covers the parameter details. The absence of an output schema is compensated by the field list in the description.

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

Parameters3/5

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

The input schema has 100% coverage, with both parameters already described ('Event ID from list_calendar_events' and 'Calendar ID'). The description adds no additional parameter meaning, but per the rubric, high schema coverage warrants a baseline of 3.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get full details of a single calendar event' and enumerates the specific fields returned. This distinguishes it from sibling tools like list_calendar_events, create_calendar_event, or delete_calendar_event, which have different actions.

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?

The description implies usage when you need full details of one event, but it does not explicitly mention alternatives or exclusion cases. Given the many calendar-related siblings, explicit guidance would help, but the phrase 'single calendar event' offers some implied context.

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

get_chat_infoA

[Official API + User Identity fallback] Get chat details: name, description, member count, owner. Supports both oc_xxx and numeric chat_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesChat ID (oc_xxx or numeric)

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 carries the burden for behavioral disclosure. It adds context about dual ID support and a user identity fallback, and lists the returned fields, implying a read-only operation. However, it does not mention permissions, error conditions, or rate limits, which are relevant for a tool with no structured safety signals.

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

Conciseness5/5

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

The description is a single, information-dense sentence. It front-loads the tool's purpose, lists the specific data returned, and covers ID format constraints without any filler or 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?

For a low-complexity tool with one parameter and no output schema, the description adequately covers the return value (name, description, member count, owner) and input format. It lacks explicit error handling or alternative tool references, but these are not critical for such a straightforward getter, making it nearly complete.

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

Parameters3/5

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

The schema already thoroughly documents the only parameter (chat_id) with 'Chat ID (oc_xxx or numeric)'. The description repeats this support ('Supports both oc_xxx and numeric chat_id'), adding no new semantic detail. Since schema coverage is 100%, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get chat details: name, description, member count, owner.' It specifies the resource (chat) and the exact data returned, distinguishing it from sibling tools like list_chats or get_user_info. The mention of supporting both oc_xxx and numeric chat_id further clarifies the input scope.

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?

The description implies usage: it is for retrieving metadata of a single chat, as opposed to listing chats or members. The '[Official API + User Identity fallback]' and 'Supports both oc_xxx and numeric chat_id' provide context about invocation modes, but no explicit when-to-use vs alternatives 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_doc_blocksA

[Official API] Get structured block tree of a document. Returns block types, content, and hierarchy for precise document analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesDocument ID (from search_docs or create_doc)

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does. It does not disclose behavioral traits like read-only nature, permissions, or error handling.

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

Conciseness5/5

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

Two concise sentences that are front-loaded, no unnecessary words. Perfectly structured for quick understanding.

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

Completeness4/5

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

Given a simple tool with one parameter and no output schema, the description adequately explains the purpose and return types. Missing behavioral details, but largely complete for its simplicity.

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 clear parameter description. The description does not add significant meaning beyond the schema, though it contextualizes the output.

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

Purpose5/5

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

The description clearly states the tool retrieves a structured block tree of a document, specifying it returns block types, content, and hierarchy. It distinguishes itself from sibling tools like read_doc by focusing on structural analysis.

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 use for precise document analysis, but does not explicitly contrast with siblings like read_doc or read_doc_markdown. Somewhat clear but lacks explicit when-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_freebusyA

[Official API + UAT, v1.3.7] Query freebusy windows for one or more users in a time range. Use to find a meeting slot. Requires calendar:calendar:readonly (already in default scope set).

ParametersJSON Schema
NameRequiredDescriptionDefault
time_minYesRFC3339 start, e.g. 2026-05-04T09:00:00+08:00
time_maxYesRFC3339 end
user_idsYesOpen IDs to query (use get_login_status / search_contacts to look up).
room_idsNoOptional meeting-room IDs.
include_external_calendarNoInclude the user's synced external calendars (optional)
only_busyNoOnly return busy windows (optional)

TDQS

A3.9/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 transparency burden. It discloses the read-only nature via 'Query' and mentions the required OAuth scope, which is useful. But it does not describe return format, error behavior, or how free/busy results are structured, so it only partially compensates for missing annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose. Every word earns its place—purpose, usage hint, and auth requirement are all included without fluff.

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?

This is a moderately simple query tool with no output schema and no annotations. The description covers the 'why' and 'when' but not the 'what returns'—the agent does not know the response structure. For a query tool, this is a moderate gap, but the schema covers inputs well, so the description is minimally adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no extra detail beyond the schema; it only summarizes the overall purpose ('one or more users in a time range') which is already evident from required params. It does not clarify formats or semantics beyond the 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?

The description clearly states the tool's function: 'Query freebusy windows for one or more users in a time range.' The verb 'Query' plus the specific resource 'freebusy windows' distinguishes it from sibling calendar tools like list_calendar_events or get_calendar_event.

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 context with 'Use to find a meeting slot,' which tells the agent when to apply this tool. It also mentions the required permission scope. However, it does not explicitly state when not to use it or suggest alternative tools, stopping 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.

get_login_statusA

Check cookie session validity and app credentials status. Also refreshes session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description must carry full behavioral transparency. It does disclose that the tool refreshes the session, which is an important side effect beyond merely checking status. However, it does not explain what happens on invalid sessions, whether credentials are re-verified, or any rate limits, leaving gaps.

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

Conciseness5/5

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

The description is two succinct sentences that front-load the primary action. Every word earns its place, and no irrelevant details are included. It is an example of efficient, well-structured writing.

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?

Despite the tool's simplicity, the description leaves out critical details about the tool's output. There is no output schema, and the description does not state what the agent will receive (e.g., a boolean, status object, or updated session cookie). Additionally, no usage context is provided, so the description is not fully complete for an agent to confidently consume the result.

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 has zero parameters, so the schema trivially covers all possible inputs. The description adds no parameter information, but none is needed. Baseline 4 is appropriate given the lack of 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 identifies the tool as a session/credential status checker with a specific verb 'Check' and a distinct resource. The additional refresh action is disclosed, which differentiates it from the listed sibling tools that focus on content operations. Though 'app credentials status' is slightly vague, the tool's purpose is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to invoke this tool, such as before other authenticated operations or as a health check. No alternatives are mentioned, nor any exclusions. This is a minimal description that does not help the agent decide between this and any other tool.

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

get_new_eventsA

[Plugin v1.3.9] Drain real-time events from the machine-level shared event log. v1.3.8 used per-process in-memory buffers (with duplicate-event problem); v1.3.9 uses ~/.feishu-user-plugin/events.jsonl with a single global cursor — every event delivered exactly once across all MCP processes on this machine. Default returns events from the current active profile only; pass profile="*" to see all.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_typeNo
event_typesNo
chat_idNo
since_secondsNo
profileNoProfile filter. Default = current active. Pass "*" or "any" for all profiles.
max_eventsNo
peekNo

TDQS

A3.6/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 of disclosing behavior. It does this well by explaining internal storage (~/.feishu-user-plugin/events.jsonl), the global cursor, exactly-once delivery across MCP processes, and default profile filtering. It does not mention whether draining consumes/deletes events or the output format, but the disclosed traits are substantial and useful.

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 compact and front-loaded with the core action and resource. The version-history detail adds behavioral context and is not fluff, though it could be considered slightly verbose for a tool description. Overall, it is well-structured and 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 7-parameter tool with no annotations and no output schema, the description is incomplete. It covers event source, storage, and profile filtering, but leaves six parameter meanings and the return/consumption behavior unexplained. This is a significant gap for an event-draining tool that likely requires event_type, max_events, and since_seconds to be used correctly.

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

Parameters2/5

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

Only the 'profile' parameter receives meaningful description in the text, while the remaining six parameters (peek, chat_id, event_type, event_types, max_events, since_seconds) have no schema description (14% coverage) and no additional explanation. The description fails to compensate for the undocumented 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 uses the specific verb 'Drain' and identifies a precise resource: 'machine-level shared event log.' It distinguishes itself from sibling chat/message tools by describing a real-time event stream with exactly-once delivery, and even mentions version-specific behavior.

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?

The description implies usage when one needs to consume real-time events, and it gives concrete guidance about profile filtering ('Default = current active... pass profile="*"'). However, it does not explicitly state when to use this tool versus alternatives like read_messages or search_messages, nor does it provide exclusion criteria.

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

get_okrsB

[Official API + UAT] Batch-fetch full OKR details (objectives, key results, progress, alignments) by OKR IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
okr_idsYesOKR IDs (max 10 per call). From list_user_okrs.
user_id_typeNoType of user_ids in response (default: open_id)
langNoResponse language (optional)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It indicates a read operation via 'fetch' but does not mention auth requirements, rate limits, pagination, or that it is read-only/safe. The extra prefix '[Official API + UAT]' adds no 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.

Conciseness4/5

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

The description is a single, concise sentence that front-loads the primary action and scope. The '[Official API + UAT]' prefix is extraneous and reduces clarity slightly, but overall it is efficient and readable.

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

Completeness3/5

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

The description lists key response aspects (objectives, key results, progress, alignments) but lacks guidance on prerequisites (e.g., obtaining IDs) or alternatives. Given the absence of an output schema, it could be more complete but covers the tool's core purpose adequately.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all three parameters (okr_ids, lang, user_id_type). The description itself adds little beyond mentioning 'batch' and listing response fields, so it meets the baseline but does not enhance parameter understanding.

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

Purpose5/5

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

The description clearly states the tool fetches full OKR details by IDs, using the specific verb 'fetch' and resource 'OKR details'. It distinguishes from sibling tools like list_user_okrs by emphasizing batch retrieval by explicit IDs.

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?

The phrase 'by OKR IDs' implies the need to first obtain IDs (likely from list_user_okrs), providing an implicit usage condition. However, it does not explicitly mention alternatives or when not to use this tool, so guidance is only implied, not explicit.

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

get_taskA

[Official API + UAT, v1.3.7] Get full details of a single task by GUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_guidYesTask GUID (from list_tasks / create_task / Feishu URL)

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description must carry the burden of behavioral disclosure. The verb 'Get' strongly implies a read-only operation with no side effects, but the description does not explicitly confirm read-only status or mention any prerequisites, permissions, or response characteristics. This is acceptable for a simple read but not fully transparent.

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 a single sentence, front-loaded with the core purpose. The version prefix '[Official API + UAT, v1.3.7]' is unnecessary but does not detract. Every part earns its place, and it is appropriately concise.

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 read tool, the description covers the core purpose and parameter source. There is no output schema, so the phrase 'full details' is somewhat vague but acceptable for a task object. Given the low complexity and rich sibling context, the description is sufficiently complete.

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% for the single parameter, but the description adds value beyond the schema by indicating where the GUID comes from (list_tasks, create_task, Feishu URL). This contextual hint helps the agent understand how to populate the parameter effectively.

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 'Get full details of a single task by GUID' uses a specific verb (Get), names the resource (single task), and specifies the lookup method (by GUID). This clearly distinguishes from siblings like list_tasks (which lists multiple) and create_task/update_task (which mutate).

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 for retrieving one task after obtaining a GUID. The parameter description adds context by listing sources for the GUID (list_tasks, create_task, Feishu URL). It does not explicitly state when NOT to use it or name alternative tools, but the guidance is clear for a simple read lookup.

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

get_user_infoA

[User Identity] Look up a user's display name by user ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUser ID
chat_idNoChat context (optional)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Look up' implies a non-destructive read operation, but it does not disclose error handling, authentication requirements, or exact return behavior (e.g., format, what happens if user not found).

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 a single, front-loaded sentence that states the core action and target resource without any filler. It is appropriately concise for a simple lookup 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?

Given the simple scope (lookup by ID) and full schema coverage, the description is mostly complete. However, with no output schema, it does not explain the return format beyond 'display name', nor does it address error conditions or dependent operations.

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 descriptions cover 100% of parameters (user_id as 'User ID', chat_id as 'Chat context (optional)'). The tool description adds no additional information about parameter usage, formats, or dependencies, so baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb 'look up' and resource 'display name by user ID', clearly stating what the tool does. It distinguishes itself from sibling tools like search_contacts or list_profiles by focusing on a lookup by user ID.

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 guidance on when to use this tool versus alternatives such as search_contacts or list_profiles. It neither mentions context nor exclusions, leaving the agent to infer usage from the simple verb.

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

get_wiki_nodeA

[Official API] Resolve a Wiki node token to its underlying object (docx / bitable / sheet / mindnote / file). Returns obj_type + obj_token + space_id so you can read/write the real resource via the usual docx / bitable tools. Accepts bare wiki node token (wikcnXXX), an underlying obj_token (docxXXX / bascnXXX from search_wiki), or a full Feishu /wiki/ URL — the handler tries the wiki endpoint first and falls back to a synthesized node-shape for non-wiki tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_tokenYesWiki node token (wikcnXXX / wikmXXX / wiknXXX), underlying obj_token (docxXXX / bascnXXX), or full Feishu /wiki/<token> URL

TDQS

A4.4/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 full burden. It discloses the fallback mechanism ('tries the wiki endpoint first and falls back to a synthesized node-shape') and the exact return fields. The word 'Resolve' and 'Returns' imply a read-only operation, and the tool is described as enabling read/write via other tools, not mutating directly. This is substantive disclosure, though it stops short of stating auth requirements or explicit non-mutation.

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

Conciseness5/5

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

The description is three sentences, each earning its place: purpose, output/usage rationale, and input variants/fallback. It is front-loaded with the core action and avoids redundancy or fluff.

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 resolver with no output schema, the description covers accepted inputs, return fields, and the fallback behavior. It doesn't detail the exact JSON structure or error handling, but the tool's simplicity and the given information make it reasonably complete. It fits well among sibling wiki tools.

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. The description adds context beyond the schema by explaining that obj_token can come from search_wiki, mentioning the 'synthesized node-shape' fallback, and clarifying the resolution flow. This provides practical meaning to the parameter beyond its type definition.

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 a specific verb ('Resolve') and resource ('Wiki node token') and explains what it returns ('obj_type + obj_token + space_id'). This distinguishes it from sibling tools like list_wiki_nodes or search_wiki, which list/search rather than resolve a single token.

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 indicates when to use this tool: to resolve a wiki token into an underlying object so you can 'read/write the real resource via the usual docx / bitable tools.' It also notes accepted input types (bare wiki token, obj_token, full URL) and the fallback behavior, providing clear operational context. It doesn't explicitly name alternatives but the intended use case is evident.

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

list_calendar_eventsA

[Official API + UAT] List events in a calendar within an optional time range. Typical usage: first list_calendars to find calendar_id (primary calendar has type="primary"), then list events in e.g. [now, now+7d] (Unix seconds).

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID from list_calendars
start_timeNoRange start (Unix seconds, optional)
end_timeNoRange end (Unix seconds, optional)
page_sizeNoItems per page (default 50)
page_tokenNoPagination token
sync_tokenNoIncremental sync token (optional)

TDQS

A4.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 clarifies the time format (Unix seconds) and gives an example range, but does not disclose pagination behavior, sorting, or whether all events are returned when no time range is specified. The read-only nature is implied but not explicitly stated.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with purpose, and every sentence adds essential information. The typical usage example is concise and highly informative, with no wasted words.

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 list tool with 6 parameters and no output schema, the description covers the core workflow and time range usage, which is sufficient for most cases. However, it does not elaborate on pagination behavior or response structure, leaving some gaps for comprehensive understanding.

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 schema already covers all parameter descriptions, so the baseline is 3. The description adds value by explaining how calendar_id is discovered (via list_calendars) and by providing a concrete example time range ([now, now+7d]), which helps agents construct valid parameter values.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('events in a calendar') and clearly states the optional time range. It also provides a typical usage flow involving list_calendars, distinguishing it from singular event retrieval tools like get_calendar_event.

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

Usage Guidelines4/5

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

The description gives explicit workflow context: first list_calendars to obtain calendar_id, then use this tool with a time range. It does not explicitly state when not to use alternatives like get_calendar_event, but the typical usage strongly implies the appropriate context.

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

list_calendarsA

[Official API + UAT] List the current user's calendars (primary + shared + subscribed). Requires UAT — app identity only sees calendars it was explicitly invited to. Requires calendar:calendar:readonly scope on the OAuth.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoItems per page (min 50, default 50). Feishu's calendar endpoint rejects page_size < 50.
page_tokenNoPagination token
sync_tokenNoIncremental sync token (optional)

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 full burden of behavioral disclosure. It explicitly reveals that app identity only sees invited calendars and that the OAuth scope is required—auth and visibility constraints that go beyond the raw schema. However, it does not mention pagination behavior or return format, leaving some gaps.

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

Conciseness5/5

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

The description is two short sentences. The first is front-loaded with the core purpose, and the second adds essential requirements and limitations. Every word earns its place with no redundancy or filler.

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

Completeness3/5

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

The tool has no output schema and no annotations, so the description should compensate by explaining return values and behavioral nuances. It provides important auth context but omits the structure of the returned calendar list and does not elaborate on how sync_token affects results beyond the schema's terse 'Incremental sync token (optional)'. This leaves an agent partially unprepared to consume the output.

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

Parameters3/5

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

The input schema has 100% description coverage for all three parameters, including details like page_size minimum (50) and the sync_token purpose. The description itself adds no parameter-specific meaning, so the baseline score of 3 applies as 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?

The description clearly states the action ('List the current user's calendars') and enumerates the exact resource types (primary + shared + subscribed). This distinguishes it from sibling tools like 'list_calendar_events' and 'get_calendar_event' by focusing on the calendar list rather than events or a single calendar.

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 provides clear context for when the tool is applicable: it requires a User Access Token (UAT) and the `calendar:calendar:readonly` scope, and notes that app identity only sees calendars it was explicitly invited to. This implies usage prerequisites and limitations, though it does not explicitly name alternative tools or state when not to use it.

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

list_chatsA

[Official API] List all chats the bot has joined. Returns chat_id, name, type.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoItems per page (default 20, max 100)
page_tokenNoPagination token

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It specifies the return fields ('Returns chat_id, name, type') but does not mention pagination behavior, rate limits, or whether the operation is read-only (though 'List' implies it). The absence of any side-effect disclosure is acceptable for a read operation, but more detail would improve transparency.

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 a single concise sentence that front-loads the purpose and includes the key return fields. No unnecessary words or repetition. It earns a perfect score for efficiency.

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 list tool with two optional parameters and no output schema, the description covers the purpose and return format adequately. It lacks usage alternatives and explicit read-only behavior, but the low complexity and good schema coverage make it nearly complete. Slightly below get_calls because it omits alternative tool guidance.

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 page_size and page_token described directly in the input schema. The description adds nothing beyond the schema's parameter explanations, so it stays at the baseline of 3. It does not clarify how pagination works or how page_token is obtained, but the schema already provides defaults and limits.

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

Purpose5/5

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

The description clearly states the tool's function: 'List all chats the bot has joined.' This is a specific verb+resource that distinguishes it from sibling tools like list_user_chats or get_chat_info, which have different scopes (user chats vs. bot's chats).

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 provided about when to use this tool versus alternatives. It does not mention that this lists only chats the bot is a member of (though that's in the purpose) or that other tools might be more appropriate for filtering or searching. The agent is left to infer usage context from the sibling list.

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

list_filesB

[Official API] List files in a Drive folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_tokenNoFolder token (empty for root)

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 full responsibility for behavioral disclosure. It does not mention important traits such as recursion depth, pagination, file types included, or permission requirements, leaving significant ambiguity.

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 very concise with a single sentence that front-loads the core purpose. No superfluous text, though it could benefit from slightly more detail without becoming verbose.

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 output schema, the description should explain return values (e.g., list of file objects with properties). It does not, leaving the agent without crucial context for handling results.

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

Parameters3/5

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

The input schema coverage is 100% and includes a clear description for folder_token. The description adds no additional meaning beyond the schema, so baseline score applies.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'files' within a specific context 'Drive folder', distinguishing it from other list tools like list_calendar_events or list_tasks.

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 versus alternatives. With many sibling list tools, it fails to specify context like filtering or prerequisites (e.g., whether folder_token is required or how to obtain it).

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

list_membersC

[Official API] List all members in a group chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesChat ID (oc_xxx)
page_sizeNoItems per page (default 50)
page_tokenNoPagination token

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 disclosing behavior. It only states the purpose and includes '[Official API]' but does not mention pagination behavior, return format, rate limits, or any safety implications. The term 'all members' could mislead since the schema includes page_size/page_token, implying paged results.

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 a single sentence, starting with the action, and is free of unnecessary words. The '[Official API]' prefix adds minimal value but does not harm clarity. It is slightly under-specified but still compact.

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?

While the schema covers parameters, there is no output schema and no annotations. The description does not explain what the response contains, how pagination works (despite the 'all' wording), or any operational context. For a simple list tool, this is a notable gap that could lead to incorrect expectations.

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 clear descriptions for chat_id, page_size, and page_token. The description adds no extra semantic meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('List'), the resource ('members'), and the scope ('in a group chat'). It is concise and unambiguous. However, it does not explicitly differentiate from sibling tools like manage_members or list_chats, 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 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. It does not mention exclusions, prerequisites, or scenarios where another tool (e.g., manage_members) would be more appropriate. The only implied usage is for retrieving group chat members, but no explicit direction is provided.

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

list_okr_periodsA

[Official API + UAT] List OKR periods (quarters / years) defined in the tenant. Use period_ids from this to filter list_user_okrs.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoItems per page (default 10)
page_tokenNoPagination token

TDQS

A4/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 implies read-only behavior via 'List' and reveals that the output contains period_ids. However, it does not describe pagination behavior or the full response structure. For a simple list tool, this is minimal but acceptable.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and followed by a practical usage note. No redundant information. The '[Official API + UAT]' prefix is extraneous but does not detract from clarity.

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?

This is a simple list tool with two optional pagination params and no output schema. The description gives purpose and usage, and hints at an output field (period_ids). It does not fully describe the response shape, but given the tool's simplicity, it is reasonably 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 both page_size and page_token, so the baseline is 3. The description does not add parameter-specific meaning beyond what the schema already provides, but no compensation is needed.

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

Purpose5/5

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

The description clearly states the tool lists OKR periods (quarters/years) defined in the tenant, using a specific verb and resource. It distinguishes from sibling tools like list_user_okrs by explicitly noting that period_ids from this tool are used to filter list_user_okrs.

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 provides explicit usage guidance: 'Use period_ids from this to filter list_user_okrs.' This tells the agent when and why to use this tool. However, it does not mention exclusions or other alternatives beyond that single use case.

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

list_okr_progress_recordsA

[Official API + UAT, v1.3.7] List progress records for an OKR. Feishu has no native list endpoint — this tool calls get_okrs internally and walks the objective_list / kr_list to extract progress_record IDs (with their target_id and target_type). To read a record's full content, you currently need progressRecord.get (not yet wrapped).

ParametersJSON Schema
NameRequiredDescriptionDefault
okr_idYesOKR ID (from list_user_okrs).
user_id_typeNoPass-through to get_okrs (default open_id)

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does exceptionally well. It openly explains the internal behavior: Feishu has no native list endpoint, so the tool calls get_okrs and walks objective_list / kr_list to extract IDs with target_id and target_type. It also discloses the limitation that full content retrieval requires an unwrapped API, providing valuable 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.

Conciseness5/5

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

The description is compact and front-loaded, consisting of two dense sentences. Every part contributes: the version/app context, the exact listing purpose, the non-obvious implementation detail, and the follow-up limitation. No wasted words.

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

Completeness4/5

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

Given there is no output schema, the description adequately explains what the tool returns (progress_record IDs with target_id and target_type). It also notes the need for progressRecord.get for full content. However, it omits details like pagination, error behavior, or the response structure beyond the extracted fields, which would be useful for a tool with no 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 coverage is 100%, so the baseline is 3. The description reinforces that okr_id identifies the OKR and mentions user_id_type as a pass-through to get_okrs, but it adds little beyond the schema. It does not explain parameter nuances such as how user_id_type affects the internal call or possible constraints on okr_id.

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

Purpose5/5

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

The description uses a specific verb-resource pairing ('List progress records for an OKR') and clearly distinguishes this tool from siblings by explaining it extracts progress_record IDs via an internal get_okrs call. It uniquely addresses the lack of a native Feishu list endpoint, making its purpose unmistakable.

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

Usage Guidelines4/5

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

It provides clear context for when to use the tool: to list progress record IDs for an OKR. It also gives a follow-up alternative by noting that full record content requires progressRecord.get (not yet wrapped), which helps agents avoid assuming full content is returned. However, it does not explicitly contrast with sibling tools like create_okr_progress_record or delete_okr_progress_record.

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

list_profilesA

[Plugin] List all available identity profiles (each profile has its own LARK_COOKIE / APP_ID / APP_SECRET / UAT). v1.3.9 SSOT: profiles live in ~/.feishu-user-plugin/credentials.json::profiles. Legacy fallback: LARK_PROFILES_JSON env var. Marks the currently active profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It discloses that the tool 'Marks the currently active profile' and references a specific storage location, adding context about its data source. However, it doesn't explicitly state whether the operation is read-only or has side effects, leaving slight ambiguity.

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 concise but dense, conveying key info in a few sentences with clear structure. The version number and legacy fallback add value, though slightly verbose.

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, no-output-schema tool, the description provides comprehensive context: what profiles are, where they live (with legacy fallback), and that it marks the active profile. It is fully adequate for an agent to select and invoke the tool.

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

Parameters4/5

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

The tool has zero parameters, so the schema is fully covered (100% coverage). The description adds meaningful context about profile attributes and storage, but there are no parameter details to document. Baseline 4 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'List all available identity profiles' and names the resource (identity profiles), clearly distinguishing it from sibling tools like switch_profile which changes the active profile. It also explains what each profile contains, reinforcing its scope.

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 the use case: enumerating available identity profiles and identifying the active one. It provides context about where profiles are stored (SSOT path and legacy fallback), but doesn't explicitly discuss alternatives or exclusions. Clear enough given the tool's simple role.

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

list_tasksA

[Official API + UAT, v1.3.7] List the current user's tasks. Filter by completion or type.

ParametersJSON Schema
NameRequiredDescriptionDefault
completedNotrue → only completed; false → only pending; omit → all
typeNoFilter by task type (optional). E.g. "all" / "personal".
page_sizeNoItems per page (default Feishu default)
page_tokenNoPagination token

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 burden. It implies a read-only list operation via 'List', which is safe. However, it does not disclose pagination behavior, default page size, or any potential limits, which are relevant given page_size and page_token parameters.

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 very concise, with the main purpose front-loaded. The prefix '[Official API + UAT, v1.3.7]' is extra clutter that does not aid the agent, slightly reducing the score from a perfect 5.

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 list tool with good schema coverage, the description covers the essential functionality: listing current user's tasks with filters. It could mention pagination or that it returns a list of tasks, but the schema already handles parameter details. The absence of an output schema means the description could clarify return format, but it's not a major 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?

The input schema already describes all four parameters with 100% coverage. The description only restates 'Filter by completion or type', which adds no new meaning beyond what the schema provides. It does not explain page_size or page_token behavior, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'List the current user's tasks' with a specific verb and resource. It also mentions filtering by completion or type, and the plural 'tasks' distinguishes it from sibling tools like get_task, create_task, etc.

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 clear context by specifying 'current user's tasks' and filter options, implying when to use it. However, it does not explicitly mention alternatives or when not to use it, such as pointing to get_task for a single task or complete_task for updates.

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

list_user_chatsA

[User UAT] List group chats the user is in. Note: only returns groups, not P2P. For P2P chats, use search_contacts → create_p2p_chat → read_p2p_messages. Requires OAuth setup.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoItems per page (default 20)
page_tokenNoPagination token

TDQS

A4.4/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 burden. It adds meaningful behavioral context: the tool only returns groups, excludes P2P chats, and requires OAuth setup. This goes beyond the schema and gives the agent insight into limitations and auth needs. However, it does not mention pagination behavior or return format, which are relevant but not critical for a simple list operation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose, and every sentence adds value: scope, limitation, alternative, and prerequisite. There is no redundancy or filler.

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

Completeness4/5

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

For a simple list tool with 2 optional params and no output schema, the description covers the essential points: what it lists, its limitation, an alternative path, and a prerequisite. Slightly missing is what the returned data looks like (e.g., chat metadata vs. messages), but the name and context make this reasonable. Overall, it is sufficiently complete for an agent to use correctly.

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

Parameters3/5

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

The input schema provides 100% coverage with both 'page_size' and 'page_token' having descriptions. The tool description does not add additional parameter semantics beyond what the schema already documents, so the score matches the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's function: 'List group chats the user is in.' It uses a specific verb and resource, and explicitly distinguishes from P2P chats, which sets it apart from sibling tools like 'list_chats' and 'read_messages'.

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?

Provides explicit when-to-use ('List group chats the user is in'), what it does NOT do ('only returns groups, not P2P'), and a clear alternative workflow for P2P chats ('use search_contacts → create_p2p_chat → read_p2p_messages'). It also notes prerequisite 'Requires OAuth setup.' This is exemplary guidance.

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

list_user_okrsA

[Official API + UAT] List a user's OKRs. Requires the user's open_id (get yours via get_login_status or search_contacts). Filter by period_ids to narrow to a specific quarter.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesTarget user's open_id (or the matching user_id_type)
user_id_typeNoType of user_id (default: open_id)
period_idsNoFilter by OKR period IDs (optional). Get period IDs via list_okr_periods.
offsetNoPagination offset (default 0)
limitNoItems per page (default 10, max 10)
langNoResponse language (optional, e.g. "zh_cn", "en_us")

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It mentions the need for open_id and the optional period_ids filter, but it does not describe the response format, pagination behavior, access permissions, or potential errors. 'Official API + UAT' hints at environment status but is vague. For a list operation, it is adequate but not exhaustive.

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

Conciseness5/5

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

The description is three concise sentences, front-loaded with the core purpose. Each sentence adds value: the first states the function, the second gives a prerequisite and how to fulfill it, and the third explains optional filtering. No fluff or 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?

For a list tool with a fully documented schema, the description covers the primary use case, required input, and filtering. It could be more complete by differentiating from get_okrs or mentioning any output structure (though there is no output schema). The 'UAT' reference is ambiguous but overall the context is sufficient for a typical agent to invoke the tool correctly.

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

Parameters3/5

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

The input schema covers all six parameters with descriptions (100% coverage), so the baseline is 3. The description adds cross-tool guidance by pointing to get_login_status and search_contacts for obtaining user_id, and list_okr_periods for period_ids, which provides additional context beyond the schema. However, it does not add deeper semantics for parameters like limit or offset.

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

Purpose5/5

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

The description clearly states the tool's function: 'List a user's OKRs.' It uses a specific verb and resource, and the mention of 'a user's' distinguishes it from sibling tools like get_okrs (which likely targets the current user) and list_okr_periods. The requirement for open_id further clarifies its scope.

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 provides clear context on how to use the tool: 'Requires the user's open_id (get yours via get_login_status or search_contacts)' and 'Filter by period_ids to narrow to a specific quarter.' It does not explicitly exclude alternatives or state when not to use it, but it gives actionable prerequisites and filtering advice.

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

list_wiki_nodesB

[Official API] List nodes in a Wiki space.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesWiki space ID
parent_node_tokenNoParent node token (optional)

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 must disclose behavioral traits. It only states 'list nodes,' implying a read operation but does not explicitly confirm read-only, rate limits, pagination, or any side effects. The lack of detail forces the agent to assume 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?

The description is very short and front-loaded, but the '[Official API]' prefix is unnecessary noise. It conveys the core purpose concisely but sacrifices detail. Overall, it is efficiently short but not optimally informative.

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 list operation with two parameters and no output schema, the description is incomplete. It omits details about pagination, sorting, response structure, or whether the parent_node_token filters results. The agent lacks sufficient context to use the tool reliably.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter having a basic description in the input schema. The tool description adds no extra meaning beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's action: 'List nodes in a Wiki space.' The verb 'list' and resource 'nodes' are specific, and the scope 'in a Wiki space' differentiates it from sibling tools like 'get_wiki_node' (single node) or 'list_wiki_spaces' (spaces).

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 guidance on when to use this tool versus alternatives. It does not mention that this is for retrieving all nodes in a space versus other operations like creating, updating, or getting a single node. No context about prerequisites or exclusions.

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

list_wiki_spacesB

[Official API] List all accessible Wiki spaces.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits. It only states 'Official API' and 'list all accessible', implying read-only but fails to disclose rate limits, authentication needs, or other constraints.

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 a single concise sentence. The '[Official API]' prefix is slightly redundant but not detrimental. It could be more structured but is 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?

Given no output schema, the description should hint at return structure (e.g., list of spaces with IDs). It does not, leaving the agent uninformed about the output format. However, the tool is simple enough that this may be acceptable.

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

Parameters4/5

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

The input schema has no parameters, so schema coverage is 100%. The description adds no parameter info, which is acceptable since none exist. Baseline for zero parameters is 4.

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

Purpose5/5

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

The description clearly states the tool lists all accessible Wiki spaces, specifying the resource (Wiki spaces) and scope (accessible). It effectively distinguishes from sibling tools like list_wiki_nodes, which list nodes within a space.

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 guidance on when to use this tool versus alternatives, nor any conditions or prerequisites. It lacks explicit context for selection among similar list functions.

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

manage_bitable_appA

[Official API] Manage a Bitable app. action=create (new app, optional wiki_space_id to attach), copy (duplicate an existing app), get_meta (read app metadata).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
app_tokenNoRequired for copy/get_meta. Native token, wiki node, or Feishu URL.
nameNoNew app name. Required for create/copy.
folder_idNoDestination folder token (optional for create/copy; ignored when wiki_space_id is set).
wiki_space_idNoWiki space ID — create the app directly under this space (create only).
wiki_parent_node_tokenNoParent wiki node within the space (optional for create).

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explains what each action does (create new app, duplicate, read metadata) and mentions optional wiki_space_id attachment. However, it does not cover side effects, permissions, or whether operations are asynchronous, leaving some transparency gaps.

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 a single, compact sentence that front-loads the tool's purpose and then lists actions. Every word contributes, with no fluff or redundancy. It is efficiently structured for quick comprehension.

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

Completeness3/5

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

The tool has multiple actions and 6 parameters, but the description is minimal. The schema fully documents parameters, which raises the completeness baseline. Still, the description does not mention return values, error handling, or nuances like copy behavior, leaving some context gaps for a multi-action 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 coverage is 100%, so baseline is 3. The description adds a small amount of meaning by mapping actions to parameters (e.g., wiki_space_id for create) but does not go beyond what the schema already states for most parameters. The added value is marginal.

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 that the tool manages a Bitable app and enumerates the specific actions (create, copy, get_meta) with a brief explanation of each. This distinguishes it from sibling tools like manage_bitable_table, manage_bitable_field, etc., which target different Bitable components.

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 through the action list: create for new apps, copy for duplicates, and get_meta for metadata. However, the description does not explicitly mention when to use this tool instead of related tools (e.g., manage_bitable_table) or any exclusions. The guidance is sufficient for straightforward selection but lacks alternative references.

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

manage_bitable_fieldA

[Official API] Manage fields (columns) inside a Bitable table. action=list, create, update (Feishu requires type even when only renaming), delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
app_tokenYesBitable app token. Accepts native token, wiki node, or Feishu URL.
table_idYesTable ID
field_idNoField ID — required for update/delete.
field_nameNoField display name — required for create, optional for update.
typeNoField type (1=Text, 2=Number, 3=SingleSelect, 4=MultiSelect, 5=DateTime, 7=Checkbox, 11=User, 13=Phone, 15=URL, 17=Attachment, 18=Link, 20=Formula, 21=DuplexLink, 22=Location, 23=GroupChat, 1001=CreateTime, 1002=ModifiedTime, 1003=Creator, 1004=Modifier). Required for create AND update — Feishu API rejects update without it.
propertyNoField-type-specific properties (optional). E.g. SingleSelect: {options:[{name:"A"},{name:"B"}]}.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral transparency. It adds the useful API quirk that `type` is required for update even when only renaming, and labels itself as an official API. However, it does not disclose permissions, deletion consequences, or return/error behavior, leaving significant gaps for a CRUD 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?

The description is a single sentence that includes the resource, action list, and a key caveat in parentheses. Every clause contributes useful information without repetition. It is well-structured and easily scannable.

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

Completeness3/5

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

The tool is a multi-action CRUD API with a nested property object and no output schema. The schema compensates for parameter details, but the description does not explain operational outcomes (e.g., delete irreversibility) or response format. While the type-requirement note provides one behavioral nuance, the overall operational picture is incomplete for an agent to use all actions 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?

All parameters have detailed descriptions in the schema, so the baseline is met. The description's note about `type` for updates duplicates what the schema already states ('Required for create AND update — Feishu API rejects update without it'), so it adds no new semantics. Thus a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly identifies the tool as managing fields/columns in a Bitable table, listing the four actions (list, create, update, delete). This distinguishes it from sibling tools like manage_bitable_table and manage_bitable_record by targeting the column-level resource. The 'Manage' verb is generic but the action enumeration adds specificity.

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's opening phrase 'Manage fields (columns) inside a Bitable table' provides clear context for when to use the tool. It also includes a specific usage note about Feishu requiring `type` for updates, which guides parameter selection. However, it does not explicitly name alternative tools or provide when-not-to-use guidance, so it falls short of the highest bar.

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

manage_bitable_recordA

[Official API] Manage records (rows) inside a Bitable table. action=search, get, create, update, delete. create/update/delete accept arrays — single record or up to 500.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
app_tokenYesBitable app token. Accepts native token, wiki node, or Feishu URL.
table_idYesTable ID
record_idNoRecord ID — required for action=get.
recordsNoRecords to write. For create: [{fields:{field_name:value}}]. For update: [{record_id, fields:{...}}]. Single record or up to 500.
record_idsNoRecord IDs to delete. Single ID or up to 500.
filterNoFilter conditions (search only, optional)
sortNoSort conditions (search only, optional)
page_sizeNoResults per page (search only, default 20)

TDQS

A3.9/5.0
Behavior3/5

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

The description states that create/update/delete accept arrays up to 500 records, which is useful. However, with no annotations, it fails to disclose behavioral traits like idempotency, error handling, or required permissions. The description provides some transparency but is not thorough.

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 short and front-loaded with the tool's purpose. Every sentence is informative and there is no redundant or 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?

Given the tool's complexity (9 parameters, nested objects, no output schema), the description covers the core actions and array limits but lacks details on return values, error handling, or prerequisites beyond what is in the schema. It is adequate but not fully complete.

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

Parameters4/5

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

The input schema has 100% description coverage, so baseline is 3. The description adds value by specifying that create/update/delete accept arrays and the batch limit (up to 500). This provides context beyond the schema's individual parameter descriptions.

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

Purpose5/5

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

The description clearly identifies the tool as managing records in a Bitable table and lists all possible actions (search, get, create, update, delete). This distinguishes it from sibling tools like manage_bitable_field or manage_bitable_table.

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?

The description mentions the actions available but does not provide guidance on when to use each action or when to avoid this tool in favor of others. There is no explicit when-not or alternative tools mentioned, leaving the agent to infer usage context.

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

manage_bitable_tableA

[Official API] Manage a table inside a Bitable app. action=list, create (with optional initial fields), update (rename), delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
app_tokenYesBitable app token (required for all actions). Accepts native token, wiki node, or Feishu URL.
table_idNoTable ID — required for update/delete.
nameNoTable name — required for create, optional for update (rename).
fieldsNoInitial field definitions (create only, optional). Each item: {field_name, type, property?} where type is 1=Text, 2=Number, 3=SingleSelect, 4=MultiSelect, 5=DateTime, 7=Checkbox, 11=User, 13=Phone, 15=URL, 17=Attachment, 18=Link, 20=Formula, 21=DuplexLink, 22=Location, 23=GroupChat, 1001=CreateTime, 1002=ModifiedTime, 1003=Creator, 1004=Modifier.

TDQS

A3.5/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 burden of behavioral disclosure. It does not mention side effects of delete, whether operations require special permissions, rate limits, or what happens on update beyond renaming. The destructive nature of 'delete' is not flagged.

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 a single, densely informative sentence. It front-loads the core purpose ('Manage a table') and efficiently lists the actions without 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 CRUD tool with no output schema and no annotations, the description is somewhat thin. It does not explain return values, prerequisites for delete, or confirm that update only renames (though this is hinted). The schema covers parameter semantics but not 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?

The input schema already covers all parameters with 100% description coverage. The description adds marginal clarifications like 'update (rename)' and 'create (with optional initial fields)', but these are already implied in the schema. No substantial new information is provided.

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 identifies the tool as managing a table inside a Bitable app and enumerates the specific operations (list, create, update, delete). This distinguishes it from sibling tools like manage_bitable_record and manage_bitable_field by explicitly targeting 'table'.

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 list and the resource type ('table'), but there is no explicit guidance on when to use this tool versus alternatives like manage_bitable_record. No exclusions or alternative suggestions are provided.

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

manage_bitable_viewA

[Official API] Manage views inside a Bitable table. action=list, create, delete. (Feishu open API does not expose view update — recreate with a new name to change.)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
app_tokenYesBitable app token. Accepts native token, wiki node, or Feishu URL.
table_idYesTable ID
view_idNoView ID — required for delete.
view_nameNoView name — required for create.
view_typeNoView type for create: grid (default), kanban, gallery, form, gantt, calendar.grid

TDQS

A4/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 of disclosing behavioral traits. It does disclose the notable limitation that the Feishu API does not expose view updates, and suggests a workaround. However, it does not warn about the destructive nature of the 'delete' action or mention any side effects, permissions, or return behavior. The disclosed limitation adds value, but safety-critical aspects of mutation are absent.

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 compact and effectively structured: it opens with the core purpose, lists supported actions, and then highlights the update limitation with a practical workaround. Every sentence carries information, and there is no redundant or distracting content. The '[Official API]' tag is minor but not harmful.

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 tool with 6 parameters, no output schema, and no annotations, this description covers the core function and a key limitation, which is helpful. However, it could be more complete by explicitly noting that delete is irreversible and clarifying which parameters are required for each action (though schema covers this). Overall, the description is quite complete for the complexity.

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 does not add any parameter-specific meaning beyond the schema; it merely lists actions, while the schema already explains each parameter's purpose (e.g., view_id required for delete, view_type options). No additional semantic context is provided, so a baseline score is appropriate.

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

Purpose5/5

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

The description clearly states the tool manages views in a Bitable table and enumerates the supported actions (list, create, delete). It distinguishes this from sibling tools that target other resources (app, table, field, record) by explicitly naming 'views' and the table context.

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 clear context: use this tool for list/create/delete operations on Bitable views. It also provides a valuable workaround for view updates (recreate with a new name), which is practical guidance. However, it does not explicitly mention when to prefer other Manage Bitable tools for non-view operations, so it lacks explicit exclusions or alternative tool references.

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

manage_doc_blockA

[Official API] Manage content blocks in a document. Single tool replaces v1.3.6 create_doc_block / update_doc_block / delete_doc_blocks. action=create — five modes: (A) Generic — pass children array (e.g. [{block_type:2, text:{...}}]). (B) Image from local file — pass image_path; plugin uploads and patches. (C) Image from token — pass image_token (already uploaded). (D) File attachment from local file — pass file_path; plugin handles VIEW-wrap + replace_file. (E) File from token — pass file_token. action=update — generic (pass update_body), image-replace (pass image_token), or file-replace (pass file_token). action=delete — pass parent_block_id + start_index + end_index (range delete). document_id accepts native ID, wiki node token, or Feishu URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
document_idYesDocument ID, wiki node token, or Feishu URL (required for all actions)
block_idNoBlock ID — required for action=update.
parent_block_idNoParent block ID — required for create/delete (use document_id for the doc root).
indexNoInsert position for create (optional, appends to end if omitted).
start_indexNoRange start (inclusive) — required for delete.
end_indexNoRange end (exclusive) — required for delete.
childrenNoGeneric blocks for create mode A. E.g. [{block_type:2, text:{elements:[{text_run:{content:"Hello"}}]}}]
image_pathNoLocal image path — create mode B (mutually exclusive with other create modes).
image_tokenNoPre-uploaded docx image token — create mode C, or update image-replace.
file_pathNoLocal file path — create mode D (mutually exclusive with other create modes).
file_tokenNoPre-uploaded docx file token — create mode E, or update file-replace.
update_bodyNoGeneric update payload for action=update. E.g. {update_text_elements:{elements:[{text_run:{content:"new text"}}]}}.

TDQS

A4/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 of disclosing behavioral traits. It explains the destructive delete action and the various create modes, but does not mention permissions, reversibility, rate limits, or return values. This leaves gaps in transparency for a complex tool.

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 well-structured with a numbered list for create modes, front-loading the main purpose. Each sentence adds value, though it could be slightly more concise. It avoids redundancy with 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?

Given the tool's complexity (3 actions, 5 modes, 13 parameters) and no output schema, the description covers input usage well but lacks details on expected output, error handling, or prerequisites (e.g., authentication). This leaves the user guessing about the return format.

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 baseline is 3. The description adds value by grouping parameters per action/mode (e.g., image_path only for create mode B) and explaining the relationship between parameters, which goes beyond the schema's individual descriptions.

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

Purpose5/5

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

The description clearly states the tool manages content blocks in a document, listing three actions (create, update, delete) with five create modes, and notes it replaces three older tools. This provides a specific verb and resource, distinguishing it from siblings like get_doc_blocks or create_doc.

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

Usage Guidelines4/5

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

The description gives explicit guidance on each action and mode, including required parameters (e.g., parent_block_id for create/delete, block_id for update). It does not explicitly state when not to use the tool, but the detailed action-mode breakdown makes usage clear. Could be improved by contrasting with get_doc_blocks for read-only operations.

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

manage_drive_fileA

[Official API] Manage a Drive file/doc/folder. action=copy (duplicate to a new name + folder), move (relocate, returns task_id), delete (remove, returns task_id). type is always required (Feishu rejects with 1061002 / 1062501 otherwise).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
file_tokenYesFile/folder token to operate on (required for all actions).
typeYesResource type — Feishu requires this to know which API table to look up.
nameNoNew name — required for action=copy.
folder_tokenNoDestination folder token — required for action=move; optional for action=copy (defaults to root).

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses that move and delete return task_id, and that type is always required with specific Feishu error codes (1061002/1062501). However, it does not state whether delete is permanent or whether special permissions are needed.

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 a single sentence that front-loads the purpose and action list. It is compact, but the dense action list may require careful reading. Every clause adds 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?

The tool has three distinct actions and five parameters with no output schema. The description covers the actions and mentions task_id returns for move/delete, but does not specify copy's return value or any constraints like required permissions. Some behavioral gaps remain for a tool of this complexity.

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 baseline is 3. The description adds context that name is needed for copy and that type is always required, but the schema already specifies these. The error codes are useful but not parameter-specific semantics.

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

Purpose5/5

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

The description names the resource (Drive file/doc/folder), the verb (manage), and enumerates the specific actions (copy, move, delete) with their effects, clearly distinguishing this from sibling tools that upload or create resources.

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?

The description implies usage for copy/move/delete operations but does not explicitly state when this tool should be preferred over alternatives like upload_file or create_folder. No exclusions or alternative tool mentions are present.

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

manage_membersA

[Official API] Add or remove members from a group chat. The Feishu API rejects with code 9499 when the IDs in member_ids do not match member_id_type — pass member_id_type explicitly when using union_id or user_id (default: open_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesGroup chat ID (oc_xxx)
member_idsYesArray of member identifiers — IDs must match member_id_type.
actionYesAction to perform
member_id_typeNoFormat of member_ids (default: open_id).open_id

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description takes on the full burden of behavioral disclosure. It reveals a specific error behavior (Feishu rejects with code 9499 on ID type mismatch) and advises explicit member_id_type passing, which adds valuable context beyond the schema. It does not cover permissions or side effects, but the disclosed API rejection behavior is significant.

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, perfectly front-loaded with the primary purpose, followed by a targeted caveat. Every word adds value; no filler or repetition of schema content.

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 tool with no output schema, the description covers the core action, the tricky parameter coupling, and a practical error case. It could mention what a successful response looks like or permissions required, but given the schema richness and focused scope, it is adequately complete.

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. The description adds meaning by explaining the relationship between member_ids and member_id_type, the default open_id, and the consequence of misalignment (error 9499). This goes beyond the schema's individual field descriptions and clarifies how parameters interact.

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

Purpose5/5

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

The description opens with a clear verb+resource: "Add or remove members from a group chat." This immediately identifies the tool's function and differentiates it from sibling tools like list_members (read-only) and manage_task_members (different resource).

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?

The description implies usage (to manage group chat members) but does not explicitly state when to use this tool versus alternatives like list_members or manage_task_members. The warning about member_id_type provides operational guidance, but not a clear when-to-use/when-not-to-use framework.

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

manage_profile_hintsA

[Plugin v1.3.8] Inspect / set / clear profileHints — the resourceKey → profileName cache the auto-switch middleware uses to remember which profile owns each Feishu resource. Useful when a hint goes stale (e.g., a profile lost access to a doc).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYeslist = show all hints; set = upsert one; clear = remove one or all.
resource_keyNoFor set/clear: the resourceKey, e.g. "doc:doccnXXX" or "chat:oc_zzz". Omit on clear to wipe all hints.
profileNoFor set: the profile name to associate with the resource_key.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It explains the tool acts on a cache and implies modifications via set/clear, but doesn't explicitly describe side effects on the auto-switch middleware, persistence, or any risks of clearing all hints. The schema covers some details, but the description is not highly transparent.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the tool's purpose, and defines key terms without any fluff. Every sentence 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 simple management tool with a small schema and no output schema, the description provides sufficient context: what it does, what the cache is, and when to use it. It doesn't cover every edge case but is complete enough for an agent to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter has a clear description. The tool description adds a conceptual model (resourceKey → profileName cache) that aids understanding, but it doesn't add significant detail beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: "Inspect / set / clear profileHints." It also defines what profileHints are (resourceKey → profileName cache), distinguishing it from all sibling tools which handle messaging, documents, calendars, etc.

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 provides a concrete use case: "Useful when a hint goes stale (e.g., a profile lost access to a doc)." While it doesn't explicitly mention alternatives, there are no sibling tools with similar functionality, so the context is clear and sufficient.

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

manage_task_membersB

[Official API + UAT, v1.3.7] Add or remove members on a task. Members are objects {id:"", role:"assignee"|"follower", type?:"user", name?:""}.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesadd or remove
task_guidYesTask GUID
membersYesMembers to add/remove. Each: {id, role, type?, name?}.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure, but it only restates the action and member format without explaining consequences (e.g., whether removal is reversible, permission requirements, or effects on task visibility). It adds little beyond the schema's operation enum, leaving important behavioral traits undisclosed.

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 a single, efficient sentence that conveys the core action and member structure. The version prefix '[Official API + UAT, v1.3.7]' is slightly extraneous but not harmful. Overall, it is well-structured and concise, though not as lean as the best examples.

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

Completeness3/5

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

The schema covers parameter details well, and the description adds the member object structure, making it adequate for a simple tool. However, with no annotations and no output schema, the description does not explain return values, error handling, or operational constraints, leaving some gaps for a mutation 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 the schema already documents all three parameters. The description repeats the member object structure already present in the schema ('{id, role, type?, name?}'), adding no new semantic meaning. Baseline 3 is appropriate given high schema coverage.

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

Purpose5/5

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

The description clearly states the action ('Add or remove members on a task') with a specific verb and resource. It distinguishes itself from sibling tools like manage_members (which might target groups) by explicitly scoping to tasks. The member object structure is also provided, making the tool's function unambiguous.

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?

The description implies usage for task member management but does not explicitly state when to use this tool over alternatives (e.g., manage_members for groups). There are no exclusions or alternative recommendations, so the guidance is only implicit.

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

manage_ws_statusA

[Plugin v1.3.9] Inspect or control the machine-level WS owner. Actions: info (status dump), reconnect (owner-only; restart WS), claim (try become owner; force=true to steal active lock), rotate (owner-only; force events.jsonl rotation), reconfig (owner-only; re-read credentials.json + apply event subscriptions).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
forceNoFor claim only: steal an active owner lock

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does well: it discloses that reconnect restarts WS, claim can 'steal active lock' with force=true, rotate forces log rotation, and reconfig re-reads credentials. These are potentially disruptive behaviors, and the description is upfront about them, including permission constraints.

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 a single, dense sentence with semicolon-separated actions. It is front-loaded and information-rich, though the '[Plugin v1.3.9]' prefix is unnecessary noise. Overall, it earns its place but could be slightly more concise without the version tag.

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

Completeness4/5

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

Given the tool's complexity (5 actions, 2 params), the description covers actions, permissions, and side effects. It lacks explicit return-value or error-condition information, but since no output schema exists and the actions are described sufficiently, it is adequately complete for selection and invocation.

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

Parameters4/5

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

Schema description coverage is 50% (force is described, action is not). The description compensates by explaining each action value in parentheses and clarifying force's role ('force=true to steal active lock'). This adds meaning beyond the schema and helps the agent select correct parameter combinations.

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 'Inspect or control the machine-level WS owner' with a specific verb and resource. It enumerates five distinct actions, making the tool's purpose unambiguous and distinct from any siblings, none of which manage WS owner status.

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 provides action-specific usage guidance, noting that reconnect, rotate, and reconfig are 'owner-only'. It does not explicitly mention alternatives or when-not-to-use, but the actions themselves imply their use cases (e.g., 'try become owner' for claiming). This is clear context without formal exclusions.

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

move_wiki_nodeA

[Official API] Move a Wiki node to a different parent (within the same space) or to a different space. Pass at least one of target_parent_token / target_space_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSource space ID
node_tokenYesWiki node token to move
target_parent_tokenNoNew parent wiki node token (optional)
target_space_idNoNew target space ID (optional; same-space move if omitted)

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 burden. It accurately describes the core behavior (moving a node) and adds the parameter constraint. However, it does not disclose potential side effects such as impact on child nodes, permission changes, or reversibility. With no annotations, this is a moderate level of transparency.

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

Conciseness5/5

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

The description is two concise sentences with the key information front-loaded ('Move a Wiki node'). Every sentence provides necessary context without redundancy, making it highly efficient 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 move operation with four parameters and no output schema, the description covers the essential use case, including the required parameter condition and the two move scenarios. It lacks deeper behavioral context (e.g., permissions, effects on children) but given the moderate complexity, it is reasonably complete.

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 schema already provides descriptions for all 4 parameters (100% coverage). The description adds valuable semantic context beyond the schema by explicitly stating that at least one of the two optional parameters must be provided, clarifying the relationship between target_parent_token and target_space_id. This improves the agent's ability to invoke the tool correctly.

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

Purpose5/5

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

The description clearly states the action ('Move a Wiki node') and specifies the two possible scopes: to a different parent within the same space or to a different space. This distinguishes it from sibling tools like copy_wiki_node or update_wiki_node, which have different purposes.

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 explicitly instructs that at least one of target_parent_token or target_space_id must be passed, giving clear usage guidance. It also defines the two move scenarios, but does not explicitly mention when not to use this tool or point to alternatives, 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.

pin_messageB

[Official API] Pin or unpin a message in a chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID
pinnedNotrue to pin, false to unpin

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It only states the action without mentioning potential side effects, permission requirements, reversibility, or response format. For a mutation tool, this lack of behavioral detail 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 one sentence and front-loaded with the action. However, '[Official API]' is an unnecessary prefix that adds no value and slightly clutters the description. Still, it is concise and to the 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?

Given the tool's simplicity (2 parameters, no output schema, no annotations), the description provides the core purpose but lacks context about return values, error conditions, or permissions. It is minimally adequate but leaves gaps for an AI agent to make fully informed invocation decisions.

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

Parameters3/5

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

The input schema covers 100% of parameters with clear descriptions (e.g., 'true to pin, false to unpin'). The description adds no additional parameter-level detail beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Pin or unpin a message in a chat.' It uses a specific verb ('pin/unpin') and identifies the resource ('a message in a chat'), which distinguishes it from sibling message tools like delete_message or forward_message. The purpose is unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for pinning/unpinning messages but does not explicitly state when to use it versus alternatives or provide exclusions. No sibling comparison or contextual guidance is given, though the tool's unique action makes the intended usage reasonably clear.

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

read_docA

[Official API] Read the raw text content of a Feishu document.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesDocument ID or token

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 must carry the full burden. It states the operation is a 'Read', but does not disclose error handling, authorization requirements, or response format. The behavior is simple, but the description lacks detail beyond the basic 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 a single sentence that conveys the essential purpose. The prefix '[Official API]' is unnecessary boilerplate but does not significantly impair conciseness.

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 with a single parameter and no output schema, the description is minimal but acceptable. It does not explain what 'raw text' entails (e.g., whether it includes formatting, attachments, or limits), leaving some gaps for a completely unknown 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 coverage is 100% and the description adds no additional meaning to the parameter beyond what the schema already documents ('Document ID or token'). Thus, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific action ('Read') and a specific resource ('raw text content of a Feishu document'), distinguishing it from siblings like read_doc_markdown and get_doc_blocks by emphasizing 'raw text'.

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 provides clear context that this tool is for raw text content, which implies when to use it relative to markdown or block-based siblings. However, it does not explicitly name alternatives or state exclusions.

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

read_doc_markdownA

[Plugin v1.3.9] Read a Feishu doc as Markdown (vs get_doc_blocks JSON). Saves ~60% tokens for RAG / digest / summarisation use cases. Accepts native docx token, wiki node token, or full Feishu URL. Embedded images / files appear as feishu://image_token/ placeholders — call download_doc_image for the binary if needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesdocx token / wiki node / full URL

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses that embedded images/files appear as placeholder tokens and that download_doc_image is needed for binaries, which is specific behavioral information. With no annotations provided, the description carries the burden and does a good job of explaining the output format and token savings. It doesn't mention potential errors or permission requirements, but for a read operation this is substantial.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with purpose, followed by token savings, input types, and output placeholder behavior. Every clause adds value, and the dash structure efficiently connects the main functionality to the caveat.

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

Completeness4/5

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

Given the tool has a single parameter and no output schema, the description covers the essential context: what it does, when to use it, input formats, and how to handle embedded media. It could mention potential limitations or error scenarios, but for the tool's complexity, it is quite complete.

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

Parameters3/5

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

The schema already fully describes document_id as 'docx token / wiki node / full URL', and the description repeats this with slightly different wording. The description adds no additional parameter-level details such as examples, format validation, or optional flags, so it meets the baseline but doesn't exceed it.

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

Purpose5/5

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

The description clearly identifies the tool as reading a Feishu doc as Markdown, explicitly contrasting with get_doc_blocks JSON format. The verb 'Read' and resource 'Feishu doc' are specific, and the mention of token savings reinforces the use case.

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 states this is for RAG/digest/summarisation use cases and contrasts with get_doc_blocks, giving clear context for when to use it. It also directs to download_doc_image for embedded binary content. However, it doesn't explicitly list exclusions or when to prefer alternatives beyond the one mention.

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

read_messagesA

[Official API + UAT fallback] Read message history from any group. Accepts oc_xxx ID, numeric ID, or chat name (auto-searched). Auto-falls back to UAT for external groups the bot cannot access. Returns newest messages first by default, with sender names resolved. Auto-expands merge_forward messages into their child messages (with original sender / time / content preserved) by default — disable with expand_merge_forward=false. Text messages have URLs extracted into urls; Feishu doc links are additionally surfaced as feishuDocs so agents can feed them straight into read_doc / get_doc_blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesChat ID (oc_xxx), numeric ID, or chat name (auto-searched via bot groups, im.chat.search, and user contacts)
page_sizeNoMessages to fetch (default 20, max 50)
start_timeNoStart timestamp in seconds (optional)
end_timeNoEnd timestamp in seconds (optional)
sort_typeNoSort order (default: ByCreateTimeDesc = newest first)
expand_merge_forwardNoAuto-expand merge_forward placeholders into their child messages (default true). Children carry parentMessageId; use that id (not the child id) with download_message_resource (kind=image or file).

TDQS

A4/5.0
Behavior5/5

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

Despite no annotations, the description thoroughly discloses behavioral traits: returns newest first, auto-expands merge_forward messages, extracts URLs and Feishu doc links, and auto-falls back to UAT. It also notes defaults and optional disabling, providing full transparency for a read-only 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 description is a single coherent paragraph that front-loads the purpose and adds details. It is fairly concise with no fluff, though slightly dense. A more structured format could improve readability, but it remains effective.

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?

Without an output schema, the description covers key return details (ordering, sender names, merge expansion, URL extraction). It misses error handling or rate limits but is otherwise comprehensive for a read tool with well-documented parameters.

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?

All parameters are described in the schema, but the description adds value by explaining auto-searching for chat_id, default behavior for expand_merge_forward, and the parentMessageId context. This goes beyond the schema's field descriptions.

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 clearly states it reads message history from any group, specifying accepted ID formats and auto-fallback behavior. It distinguishes from sibling tools like read_p2p_messages by focusing on group chats, but does not explicitly differentiate from other read tools.

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?

The description implies this tool is for reading message history, with auto-fallback for external groups. However, it does not provide explicit when-not-to-use guidance or mention alternatives like read_p2p_messages for peer-to-peer chats.

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

read_p2p_messagesA

[User UAT] Read P2P (direct message) chat history using user_access_token. Works for chats the bot cannot access. Returns newest messages first by default. Auto-expands merge_forward messages into their child messages by default — disable with expand_merge_forward=false. Requires OAuth setup.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesChat ID (numeric from create_p2p_chat, or oc_xxx from list_user_chats). Both formats work.
page_sizeNoMessages to fetch (default 20, max 50)
start_timeNoStart timestamp in seconds (optional)
end_timeNoEnd timestamp in seconds (optional)
sort_typeNoSort order (default: ByCreateTimeDesc = newest first)
expand_merge_forwardNoAuto-expand merge_forward placeholders into their child messages (default true). Children carry parentMessageId; use that id (not the child id) with download_message_resource (kind=image or file).

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description reveals key behaviors: returns newest first by default, auto-expands merge_forward messages, and notes how to use child message IDs. However, it omits details on rate limits, pagination, or error states, leaving gaps in full behavioral understanding.

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 compact, covering purpose, usage context, ordering, default behavior, and requirements in a few sentences. It avoids redundancy but could be slightly more structured for easier scanning.

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

Completeness3/5

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

The description explains core functionality and parameter nuances, but lacks details on response format, pagination handling, or how to retrieve all messages beyond a single page. Given no output schema, more completeness would benefit the agent.

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

Parameters4/5

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

Though schema coverage is 100%, the description adds value beyond field names and types. It explains that chat_id can be numeric or oc_xxx from different sources, and clarifies the expand_merge_forward parameter's purpose and follow-up usage with download_message_resource.

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

Purpose5/5

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

The description clearly states 'Read P2P (direct message) chat history using user_access_token', specifying the action, resource, and auth method. It distinguishes itself from bot-accessible chats, implying a different use case from sibling tools like read_messages.

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 explicitly notes that the tool works for chats the bot cannot access and requires OAuth setup. It provides clear context for when to use this tool, but does not explicitly state when to avoid it or mention alternatives.

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

reply_messageA

[Official API] Reply to a specific message by message_id (as bot). Only works for text messages; other types return error 230054.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID to reply to (om_xxx)
textYesReply text

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. It discloses that it operates as a bot, only supports text messages, and will return error 230054 for other types. This provides meaningful behavioral context beyond basic operations.

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 purpose, no redundant text. Every word is informative.

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?

Tool is simple (2 required params, no output schema, no annotations). The description covers purpose and a key limitation; it could optionally mention success return or auth, but is adequate for selection and invocation.

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

Parameters3/5

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

Schema descriptions cover 100% of parameters with 'Reply text' and 'Message ID to reply to (om_xxx)'. The tool description adds no additional parameter detail, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Reply to a specific message by message_id') and specifies the bot context, distinguishing it from sending new messages or editing. It also notes the text-only limitation, which further clarifies scope.

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

Usage Guidelines4/5

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

It implies when to use: to reply to an existing message as a bot. The constraint 'Only works for text messages; other types return error 230054' provides an explicit exclusion for non-text messages, but no alternative tools are suggested.

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

respond_calendar_eventB

[Official API + UAT, v1.3.7] Respond to an event invitation. The current identity must be in the event's attendee list. Requires calendar:calendar.event:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID
event_idYesEvent ID
rsvp_statusYesYour response

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 full burden. It discloses some behavioral traits (identity requirement, scope), but omits details like success/failure responses, irreversibility, or multiple response handling.

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 very concise, with one sentence providing version info and two sentences giving constraints. No unnecessary words.

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?

The description lacks mention of return values or side effects, which is important for a write tool. With no output schema, more context about the response is needed.

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 description adds no extra meaning beyond what the schema provides. The baseline of 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 clearly states the tool's purpose as 'Respond to an event invitation' with a specific verb and resource. It adds identity and scope requirements, but does not differentiate from siblings like update_calendar_event.

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 mentions that the current identity must be in the attendee list and requires a specific scope, implying context. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions.

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

search_contactsA

[User Identity] Search Feishu users, bots, or group chats by name. Returns IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch keyword

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states that IDs are returned and includes a '[User Identity]' prefix, but it does not clarify whether the search is scoped globally, requires specific permissions, or if any side effects exist. This leaves significant behavioral ambiguity.

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 a single sentence of 10 words, tightly packed with essential information. It is front-loaded with the action and resource, and contains no filler or repetition.

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

Completeness3/5

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

The tool has one parameter, no output schema, and no annotations, so the description needs to convey the essential behavior. It explains the search target and the output type (IDs), but does not specify result limits, ordering, or whether the search covers all contacts or is scoped to the current user's identity. This leaves some gaps for a complete understanding.

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

Parameters4/5

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

The input schema provides a generic 'Search keyword' description, and the tool description adds the clarification that the keyword is a 'name', which improves understanding. Since schema coverage is 100%, the added 'by name' context merits a score above baseline.

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

Purpose5/5

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

The description clearly states the tool's function: searching for Feishu users, bots, or group chats by name, and returning IDs. This distinguishes it from other search tools like search_messages or search_docs, and the specific resource (contacts) and output (IDs) are explicit.

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?

The description implies usage when you need to find a contact's ID by name, but it does not provide explicit guidance on when to use this tool versus sibling tools like get_user_info or list_profiles, nor does it mention any exclusions or prerequisites.

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

search_docsA

[Official API] Search Feishu documents by keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch keyword

TDQS

A3.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 bears full responsibility. It only mentions '[Official API]' and the basic search action, but fails to disclose whether it is read-only, requires authentication, or returns specific fields.

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 a single concise sentence that front-loads the core purpose without any unnecessary words or 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 simple search tool with one parameter and no output schema, the description is adequate but lacks context about what content is searched (e.g., titles, body), result format, or any limitations.

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

Parameters3/5

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

The schema already covers the parameter with a description ('Search keyword'), and the tool description adds no additional meaning or context beyond what the schema provides.

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

Purpose5/5

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

The description clearly states that the tool searches Feishu documents by keyword, which is a specific verb+resource combination. It distinguishes from sibling tools like search_contacts and search_wiki.

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?

The description provides no guidance on when to use this tool versus alternatives like search_wiki or search_contacts. It only implies usage context via the name and brief description.

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

search_wikiB

[Official API] Search Wiki nodes by keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch keyword

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only states the operation without disclosing behavioral traits such as authentication needs, rate limits, or what happens with no results.

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 a single concise sentence that is front-loaded with the core action. The '[Official API]' prefix adds minor overhead but does not detract.

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?

The tool has no output schema and no annotations; the description does not cover return format, pagination, or error behavior, leaving the agent with insufficient context 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 coverage is 100%, so the schema already documents the single parameter. The description adds no additional meaning beyond 'Search keyword', meeting the baseline but not exceeding it.

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

Purpose5/5

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

The description 'Search Wiki nodes by keyword' uses a specific verb (Search) and resource (Wiki nodes), clearly distinguishing it from sibling tools like list_wiki_nodes or get_wiki_node.

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?

The description does not provide when to use or when not to use this tool, nor does it mention alternatives. The name implies searching, but no explicit guidance is given.

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

send_as_userA

[User Identity] Send a text message as the logged-in Feishu user. Supports reply threading and real @-mentions (triggers push notifications).

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesTarget chat ID. Numeric (from create_p2p_chat / search) preferred; oc_xxx is auto-resolved via getChatInfo + cookie search since v1.3.7 (C1.4).
textYesMessage text. If `ats` is provided, include the display marker for each @ in this text (default marker is `@<name>`).
atsNoOptional @-mentions. Each entry: {userId: "ou_xxx", name: "DisplayName"}. The text must contain each @<name> marker in order — it gets spliced into a real AT element so the mentioned user receives a notification.
root_idNoThread root message ID (for reply, optional)
parent_idNoParent message ID (for nested reply, optional)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context about @-mentions triggering push notifications and the 'as user' identity aspect. However, it does not mention side effects like message irreversibility, delivery guarantees, or prerequisites such as login status. Some behavioral traits are disclosed, but not comprehensively.

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 a single, information-dense sentence preceded by a useful identity tag. It states the core action first, then qualifying details (reply threading, @-mention behavior). Every word earns its place; there is no fluff or repetition.

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

Completeness3/5

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

The tool has 5 parameters, no output schema, and no annotations. While the description and schema together cover the mechanics, the description lacks guidance on choosing this vs closely related siblings (send_to_user, send_to_group, reply_message) and does not hint at return values or failure conditions. It is adequate for a simple send action but leaves contextual gaps given the tool's position among many similar send variants.

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 parameters (chat_id, text, ats, root_id, parent_id) are already well-documented in the schema. The description adds minimal param value beyond noting that @-mentions are 'real' and trigger notifications, which slightly augments the schema's explanation. Baseline 3 is appropriate given the schema's thoroughness.

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

Purpose5/5

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

The description clearly states the action ('Send a text message') and the actor ('as the logged-in Feishu user'), immediately distinguishing it from bot-send alternatives. Mention of 'text message' and 'real @-mentions' differentiates it from sibling tools like send_post_as_user, send_card_as_user, and send_message_as_bot. The verb+resource structure is specific and unambiguous.

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?

The description implies usage contexts through phrases like 'as the logged-in Feishu user' (vs bot) and 'Supports reply threading' (vs standalone send), but it does not explicitly state when to choose this over alternatives like send_to_user, send_to_group, or reply_message. No exclusions or direct comparisons are provided, leaving the agent to infer selection criteria.

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

send_card_as_userA

[v1.3.9+: bot-only] Send an interactive Feishu card to a chat via bot identity (Official API). User-identity cookie protobuf path is server-side disabled at the auth tier — confirmed by exhaustive brute-force in v1.3.9, see scripts/explore-card-protobuf.js. The "as_user" suffix is historical naming kept for backward compat; the tool always routes through bot. Pass card as a JSON object (Feishu card schema, see https://open.feishu.cn/cardkit).

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesTarget chat_id (oc_xxx) or open_id
cardYesFeishu card JSON. See https://open.feishu.cn/cardkit for the schema; build cards visually then paste the resulting JSON here.

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 full burden of behavioral disclosure. It thoroughly explains the bot identity routing, the historical naming artifact, and the disabled user-identity path, which are the key behavioral traits for this tool. The extra reference to a brute-force script adds credibility but also unnecessary noise, preventing a perfect score.

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 concise and front-loaded with the core purpose. However, the second sentence includes a verbose reference to 'exhaustive brute-force in v1.3.9, see scripts/explore-card-protobuf.js' which is not actionable for an agent and adds unnecessary length. The historical naming explanation is useful but could be more tightly integrated.

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 2-parameter send tool with no annotations and no output schema, the description covers the essential aspects: what it sends, who it sends as, and how to format the card. However, it omits any mention of return values (e.g., message_id, success status) or error/rate-limit behavior, leaving some operational context incomplete for an agent.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value for the `card` parameter by specifying it should be a JSON object, providing a link to the Feishu card schema, and suggesting a workflow (build visually then paste JSON). This goes beyond the schema's terse description and justifies a score above baseline.

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

Purpose5/5

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

The description uses a specific verb ('Send') with a clear direct object ('interactive Feishu card') and explicit routing ('to a chat via bot identity'), making the tool's function unambiguous. It also clarifies the misleading 'as_user' suffix by explaining it's historical naming, distinguishing it from sibling send tools like send_as_user and send_message_as_bot.

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 explicitly states the tool is bot-only and that the user-identity path is server-side disabled, giving clear when-not guidance. It doesn't name alternative sibling tools directly, but the context strongly implies this is the tool to use for card sending via bot, which is sufficient for most agent decisions.

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

send_file_as_userA

[User Identity] Send a file as the logged-in user. Requires file_key (upload via Official API first).

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesTarget chat ID. Numeric preferred; oc_xxx is auto-resolved (v1.3.7 C1.4).
file_keyYesFile key from upload
file_nameYesDisplay file name
root_idNoThread root message ID (optional)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It reveals that the file is sent as the user and requires a pre-uploaded file_key, but it does not discuss potential side effects, permissions, rate limits, or the return value. The prerequisite is useful but the description is otherwise minimal.

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 a single, front-loaded sentence that immediately states the purpose and key requirement. Every word earns its place with no redundancy or filler.

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

Completeness4/5

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

The schema fully explains all parameters, and the description provides the critical prerequisite of uploading the file first. The tool is straightforward, and the information is sufficient for correct invocation, though the lack of output schema means return values are not described.

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 parameters are fully documented in the schema. The description adds a small extra context about file_key needing to come from the Official API, but overall it does not significantly enhance parameter understanding beyond the 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?

The description 'Send a file as the logged-in user' uses a specific verb and resource, clearly indicating the action and recipient identity. It distinguishes this tool from siblings like send_image_as_user, send_post_as_user, and send_message_as_bot by emphasizing 'file' and 'logged-in user'.

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 provides a clear prerequisite: file_key must be obtained via the Official API first. It also clarifies that the action is performed as the logged-in user, which differentiates it from bot-send tools. However, it does not explicitly name alternative tools or exclusion criteria.

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

send_image_as_userA

[User Identity, v1.3.9] Send an image as the logged-in user (NOT bot). Requires image_key from a prior upload_image call. Cookie-protobuf wire format requires both imageKey + thumbnailKey — when no separate thumbnail is provided, plugin defaults thumbnailKey to imageKey (Feishu accepts this for messenger-uploaded images). Width/height/mime/size are optional metadata; Feishu auto-derives display sizing on its side.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesTarget chat ID. Numeric preferred; oc_xxx is auto-resolved (v1.3.7 C1.4).
image_keyYesImage key from upload (img_v2_xxx or img_v3_xxx)
thumbnail_keyNoOptional separate thumbnail image key. Defaults to image_key when omitted.
widthNoOptional image width in pixels.
heightNoOptional image height in pixels.
mimeNoOptional MIME type (e.g. "image/png").
sizeNoOptional file size in bytes.
root_idNoThread root message ID (optional)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full disclosure burden. It reveals important behaviors: sends as logged-in user, needs image_key from upload, requires thumbnailKey in wire format (defaults to imageKey), and that metadata is optional. It does not mention return values or error cases, but covers the critical nuances.

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 and includes essential technical detail. It is slightly verbose with version and wire-format specifics, but each sentence contributes value, making it appropriately sized for the tool's complexity.

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

Completeness4/5

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

Given 8 parameters and no output schema or annotations, the description covers purpose, prerequisites, and key behavioral details. It lacks explicit discussion of return values or when to use alternatives, but the overall context is sufficient for an image-sending tool.

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 baseline is 3. The description adds meaningful context beyond schema: it clarifies the image_key source, explains the thumbnail_key fallback behavior, and notes that width/height/mime/size are optional and auto-derived. This enriches parameter understanding without duplicating schema text.

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 action ('Send an image as the logged-in user') and clearly distinguishes itself from bot messaging with 'NOT bot'. It also specifies the prerequisite (requires image_key from upload_image), making the tool's purpose unmistakable.

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 conveys clear usage context: use this tool to send images as the user, requires a prior upload_image call. It also explicitly contrasts with bot sending, but does not name alternative sibling tools beyond that implicit distinction.

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

send_message_as_botA

[Official API] Send a message as the bot to any chat. Supports text, post, interactive, etc. This is the reliable path for @-mentions: include <at user_id="ou_xxx">Name</at> inline in text content and Feishu resolves it to a real @-notification.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesTarget chat_id (oc_xxx) or open_id
msg_typeYesMessage type: text, post, image, interactive, etc.
contentYesMessage content (string or object, auto-serialized). Plain text: {"text":"hello"}. Text with @-mention: {"text":"<at user_id=\"ou_xxx\">Alice</at> hi"} — the inline tag becomes a real @-notification.

TDQS

A4/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 of behavioral disclosure. It explains the @-mention resolution behavior and confirms the tool sends as the bot. However, it does not disclose potential side effects, permission requirements, rate limits, or error scenarios, which is a notable gap for a mutating operation.

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

Conciseness5/5

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

Two sentences, purpose-first, with no filler. The @-mention tip is valuable and earns its place. Every word contributes to usability.

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

Completeness4/5

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

Given the tool's simplicity and fully described parameters, the description covers the essential details for correct invocation. It could mention prerequisites like authentication scopes or whether 'any chat' includes private chats, but the provided context is sufficient for most use 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 the baseline is 3. The description adds minimal parameter-level details beyond the schema; the @-mention syntax is already in the content parameter description. No new meaning is provided for chat_id or msg_type beyond what the schema already states.

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

Purpose5/5

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

The description clearly states the tool's action: 'Send a message as the bot to any chat.' It also specifies supported message types (text, post, interactive) and highlights the unique @-mention capability, distinguishing it from sibling tools like send_as_user and send_to_user.

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 provides a clear usage context: 'This is the reliable path for @-mentions' indicates when to prefer this tool. It implicitly differentiates from 'send as user' variants by focusing on bot identity. However, it does not explicitly mention exclusions or alternative tools when @-mentions are not needed.

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

send_post_as_userA

[User Identity] Send a rich text (POST) message with title and formatted paragraphs. Supports real @-mentions that trigger notifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesTarget chat ID. Numeric preferred; oc_xxx is auto-resolved (v1.3.7 C1.4).
titleNoPost title (optional)
paragraphsYesArray of paragraphs. Each paragraph is an array of elements: • {tag:"text",text:"..."} — plain text • {tag:"a",href:"https://...",text:"display"} — hyperlink • {tag:"at",userId:"ou_xxx",name:"Display Name"} — real @-mention (triggers notification)
root_idNoThread root message ID (optional)

TDQS

A3.7/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 of behavioral disclosure. It adds useful behavior context by noting that it sends as a user identity and that @-mentions trigger notifications. However, it does not disclose permissions, return value, or other side effects beyond the send action itself.

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 a single, front-loaded sentence that begins with '[User Identity]' to orient the agent and then states the action and key feature. It is concise and contains no filler or redundant 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?

The description plus the detailed input schema adequately define the core sending operation. However, for a tool with no annotations and no output schema, it omits explicit usage exclusions, response shape, and broader guidance on how to choose among the many sibling send-related tools. These are meaningful gaps, though the rich schema mitigates the impact.

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?

All four parameters are fully described in the input schema (100% coverage), including the paragraph element structure for text, links, and @-mentions. The description's mention of 'title and formatted paragraphs' and 'supports real @-mentions' only reiterates schema content, adding minimal semantic value beyond the structured fields.

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 action: 'Send a rich text (POST) message with title and formatted paragraphs.' It clearly identifies the resource (a POST message) and distinguishes it from sibling tools by mentioning real @-mentions that trigger notifications. This is a specific, non-tautological purpose statement.

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?

The description provides implied usage context via '[User Identity]', 'rich text', and 'real @-mentions', suggesting when this tool is appropriate. However, it does not explicitly state when to use it over alternatives, nor does it mention exclusions or name sibling tools.

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

send_to_groupB

[User Identity] Search group by name → send text message. All in one step.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_nameYesGroup chat name
textYesMessage text
atsNoOptional @-mentions that trigger real notifications. Each entry: {userId, name}. Text must contain `@<name>` marker for each entry.

TDQS

B3.2/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 burden of behavioral disclosure. It only states the high-level action (search + send) but omits crucial behaviors: what happens if the group is not found, whether it creates the group, whether there are side effects, or how the 'User Identity' affects the operation. This is a significant gap for a message-sending 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?

The description is a single concise sentence with an arrow indicating the workflow. There is zero wasted text, and the key action is front-loaded. This is an example of efficient, well-structured messaging, even though it sacrifices completeness.

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 tool with no output schema, no annotations, and only three parameters, the description is far too thin. It does not explain return values, error handling, prerequisites, or disambiguation rules. A minimal viable description for a message-sending tool should disclose at least what occurs on failure and whether the operation is reversible.

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

Parameters3/5

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

The schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema; 'Group chat name' and 'Message text' are already explained. It does not clarify parameter formats or edge cases (e.g., exact name matching), so no extra credit is warranted.

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 clear action: 'Search group by name → send text message. All in one step.' It identifies the verb (send), resource (group text message), and the combined search-and-send behavior. It does not explicitly distinguish from sibling tools like send_to_user or batch_send, but the 'all in one step' phrasing hints at a unique combined behavior.

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?

The description implies when to use this tool: when you need to find a group by name and send a text message in one step. However, it provides no explicit guidance on when NOT to use it or which sibling tool to prefer (e.g., send_to_user, send_as_user). The context is present but underdeveloped.

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

send_to_userA

[User Identity] Search user by name → create P2P chat → send text message. All in one step.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_nameYesRecipient name (Chinese or English)
textYesMessage text
atsNoOptional @-mentions. Same format as send_as_user.ats: [{userId, name}]. Text must contain the `@<name>` marker for each entry.

TDQS

A3.9/5.0
Behavior3/5

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

The description transparently discloses the side effect of creating a P2P chat, which is important behavioral context beyond the basic send action. However, with no annotations, it lacks disclosure about error cases (e.g., user not found, multiple matches), return values, or permissions, leaving significant behavioral aspects undocumented.

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 a single sentence that front-loads the primary purpose and flow. Every word earns its place; there is no fluff or repetition.

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

Completeness3/5

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

The tool performs a multi-step operation (search, create chat, send) and is complex enough to warrant more detail about failure handling, message delivery confirmation, and whether existing chats are reused. The description outlines the flow but omits these important operational details, and with no annotations or output schema, the description carries the full burden.

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?

All parameters are fully described in the schema (100% coverage), so the description adds little beyond the pipeline itself. The mention that ats uses 'Same format as send_as_user.ats' provides useful cross-referencing context, but otherwise user_name and text are adequately covered by 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?

The description states a clear multi-step pipeline: 'Search user by name → create P2P chat → send text message.' This is specific about the verb (send), resource (text message to a user), and flow, distinguishing it from siblings like send_to_group and send_as_user by emphasizing the search-and-create behavior in one step.

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 phrase 'All in one step' conveys that this tool is intended when you need to send a message to a user by name without manually creating a chat first. This implies use cases and differentiates from alternatives like create_p2p_chat plus send_message_as_bot, but it does not explicitly name alternative tools or when not to use this.

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

switch_profileA

[Plugin v1.3.9] Switch the active identity profile. Atomically writes credentials.json::active; cached clients in this process are invalidated; cross-process MCPs (Codex / another Claude Code) auto-sync via dispatcher mtime check on next tool call (~10μs). To add a new profile, run npx feishu-user-plugin setup --profile <name> --app-id ... --app-secret ... --cookie ... then npx feishu-user-plugin oauth --profile <name> for UAT.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProfile name. Use "default" for the primary profile; other names come from credentials.json or LARK_PROFILES_JSON.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses atomic writes to credentials.json::active, cache invalidation for clients in the process, and cross-process auto-sync via dispatcher mtime check (~10μs). This is rich, actionable behavioral detail beyond what structured fields could provide.

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 followed by high-value behavioral details. The version prefix '[Plugin v1.3.9]' is extraneous, and the CLI setup instructions are long, but they earn their place by guiding the agent on how to add profiles. Overall compact for the information conveyed.

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

Completeness5/5

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

Given the moderate complexity of side effects (atomic file write, cache invalidation, cross-process sync) and the absence of annotations and output schema, the description is remarkably complete. It explains what happens, when, and even how to handle the related task of adding profiles, leaving no major gaps for an agent selecting and invoking this tool.

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

Parameters3/5

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

The schema covers 100% of the parameter, including 'Use "default" for the primary profile' and source locations. The tool description adds no additional parameter-level semantics beyond the CLI examples for profile setup, which are tangential to the name parameter itself.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Switch the active identity profile.' This clearly distinguishes it from sibling tools like list_profiles and manage_profile_hints by focusing on the active profile switching operation, not listing or managing hints.

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 when to use the tool by stating it switches the active identity profile and separately instructs 'To add a new profile, run...', effectively telling the agent not to use this tool for adding profiles. However, it does not explicitly contrast with list_profiles or manage_profile_hints, so a clear alternative/exclusion is missing.

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

update_calendar_eventA

[Official API + UAT, v1.3.7] Patch fields on an existing calendar event. Pass only the fields you want to change. Requires calendar:calendar.event:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID
event_idYesEvent ID
summaryNoNew title (optional)
descriptionNoNew description (optional)
start_timeNoA time object: {timestamp:"<unix-seconds>", timezone?:"Asia/Shanghai"} OR {date:"YYYY-MM-DD"} for all-day events.
end_timeNoA time object: {timestamp:"<unix-seconds>", timezone?:"Asia/Shanghai"} OR {date:"YYYY-MM-DD"} for all-day events.
locationNoNew location object (optional)
visibilityNo
attendee_abilityNo
free_busy_statusNo
remindersNo
recurrenceNoRRULE string
need_notificationNoWhether to notify attendees of the update

TDQS

A3.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 must fully disclose behavior. It states the patch nature and required scope but omits details about side effects like notifications, validation, or error handling. More transparency is needed 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.

Conciseness5/5

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

The description is concise at two sentences, with no superfluous information. The first sentence states purpose and scope, the second gives usage guidance, making it front-loaded and 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?

Given the tool's complexity (13 parameters, nested objects, no output schema), the description lacks details on return values, error conditions, and what happens to fields not passed. It provides minimal but adequate context for a simple update operation.

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

Parameters3/5

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

The description adds the usage pattern 'Pass only the fields you want to change' but does not provide additional meaning beyond what is already in the input schema. With schema description coverage at 69%, the description does not compensate significantly, so a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Patch fields on an existing calendar event' with a specific verb and resource. It distinguishes this tool from sibling tools like 'create_calendar_event' and 'delete_calendar_event' by focusing on updating an existing event.

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?

The description implies usage through 'Pass only the fields you want to change' and mentions the required scope. However, it does not explicitly state when to use this tool versus alternatives (e.g., when to use create vs update) or provide context about limitations.

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

update_groupB

[Official API] Update group chat name or description.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesChat ID (oc_xxx)
nameNoNew group name (optional)
descriptionNoNew description (optional)

TDQS

B3/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Update group chat name or description.' It does not mention whether the update is permanent, the need for permissions, reversibility, or what the response looks like. This lack of detail is a significant gap 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.

Conciseness5/5

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

The description is a single, efficient sentence that gets straight to the point without any unnecessary words. It is appropriately sized for the tool's simple function and front-loads the essential verb and resource.

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?

Given the lack of annotations and output schema, the description is incomplete. It does not explain the broader context of the update operation, such as side effects, error conditions, or how it interacts with group settings. This is insufficient for an agent to fully understand the tool's behavior in a real workflow.

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

Parameters3/5

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

The input schema has 100% description coverage for all three parameters, including type and optionality. The description itself adds no extra meaning beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states that the tool updates a group chat's name or description, using a specific verb and resource that distinguishes it from siblings like update_message. The scope is precisely defined, leaving no ambiguity about what the tool does.

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 guidance on when to use this tool versus alternatives such as update_message or create_group. There is no mention of suitable contexts, prerequisites, or exclusions, leaving the agent to infer usage solely from the tool name.

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

update_messageA

[Official API] Edit a sent message (bot can only edit its own messages). Feishu supports edit only for text and interactive (card) messages — other types (post, image, file, etc.) are rejected by the API.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage ID (om_xxx)
msg_typeYesMessage type: text or interactive. Other types are not editable per Feishu API.
contentYesNew content. For text: {"text":"updated text"}. For interactive: full card JSON.

TDQS

A4.2/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 full disclosure burden. It explicitly states the bot can only edit its own messages and that other message types are rejected by the API, which are critical behavioral traits. It does not cover authentication or response format, but the key limitations are disclosed.

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

Conciseness5/5

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

The description is two sentences, front-loads the core action, and each sentence adds distinct value: the first states the action and ownership limit, the second details type restrictions. No wasteful words.

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 mutating tool with no annotations and no output schema, the description covers the essential operational context: what it does, who can use it, and which message types are eligible. It lacks information about return values or error behavior, but these are likely standard for an edit API. The strong constraint coverage warrants a 4.

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

Parameters3/5

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

The input schema already provides 100% coverage with structured descriptions for all three parameters. The description adds no extra parameter details beyond restating the type restrictions already in the enum and content description. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly identifies the action as editing a sent message, with the specific verb 'Edit' and resource 'sent message'. It also distinguishes from sibling tools like delete_message by focusing on modification rather than removal.

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 provides clear constraints on when this tool applies (only bot's own messages, only text/interactive types). It implies alternatives (e.g., delete and resend) by noting limitations, though it does not explicitly name other tools.

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

update_taskB

[Official API + UAT, v1.3.7] Patch a task. update_fields is required by Feishu — list which fields to update (e.g. ["summary","due","completed_at"]).

ParametersJSON Schema
NameRequiredDescriptionDefault
task_guidYesTask GUID
update_fieldsYesRequired. Names of fields to update. E.g. ["summary","description","due","completed_at","start","extra","repeat_rule"]. Feishu only patches fields listed here, ignoring other keys in `task`.
taskYesField values. E.g. {summary:"new title", due:{timestamp:"1717939200000"}}.

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 burden of behavioral disclosure, but it only mentions an API version and the update_fields requirement. It does not state whether only listed fields are modified, what response is returned, or any side effects.

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

Conciseness4/5

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

The description is two sentences with the core instruction front-loaded. The '[Official API + UAT, v1.3.7]' prefix is minor noise, but the overall structure is tight and 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?

The description plus schema cover parameter construction well, especially for nested task objects. However, without annotations or an output schema, response behavior and tool-selection context remain under-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%, so the description only needs to add nuance. It contributes the fact that update_fields is required by Feishu and provides an example field list, but this is largely redundant with the schema's own Required flag and examples.

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 'Patch a task' with a specific verb and resource, clearly distinguishing it from sibling tools like create_task, complete_task, delete_task, and get_task. The function is immediately obvious.

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 provided on when to use this tool versus alternatives. The only instruction is that update_fields is required by Feishu, which is a parameter requirement, not a tool-selection guideline. Alternatives like complete_task or manage_task_members are never mentioned.

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

update_wiki_nodeA

[Official API] Rename a Wiki node (only title is updatable via the wiki API; the underlying resource content is edited via docx/bitable/sheet tools).

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesWiki space ID
node_tokenYesWiki node token (wikcnXXX)
titleYesNew title

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 the full burden. It discloses the key behavioral constraint that only 'title' is updatable via the wiki API, and that content edits require different tools. This adds meaningful context beyond the schema, though it does not mention auth requirements or response format, which is acceptable for a simple rename operation.

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

Conciseness5/5

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

The entire description is a single, front-loaded sentence that communicates purpose, constraint, and alternatives in under 30 words. Every part earns its place with no 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?

For a simple 3-parameter tool with no output schema, the description provides enough context about the operation and its constraints. It could mention the expected response status but is not necessary. The description is sufficient for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a description. The tool description adds that only title is updatable, which reinforces the role of the 'title' parameter but does not introduce new syntax or format details. This is the appropriate baseline 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?

The description clearly states the verb 'Rename' with the resource 'Wiki node', and explicitly qualifies that only 'title' is updatable. This distinguishes it from sibling tools like move_wiki_node, copy_wiki_node, and manage_doc_block by defining exactly what scope the update covers.

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 provides clear context for when to use this tool: when renaming a wiki node's title. It also implicitly says not to use it for editing content, pointing to docx/bitable/sheet tools instead. There is no explicit when-not-to-use, but the exclusion is clear enough for an agent.

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

upload_bitable_attachmentA

[Official API] Upload a file as a Bitable attachment (drive/v1/medias/upload_all with parent_type=bitable_image or bitable_file). Returns file_token suitable for writing into a Bitable Attachment-type field via batch_create/update_bitable_records (the field value should be [{file_token}]).

ParametersJSON Schema
NameRequiredDescriptionDefault
app_tokenYesBitable app token (the bascn... or basc... id)
file_pathYesAbsolute path to the file on disk
kindNoWhether the attachment is an image (bitable_image) or a generic file (bitable_file). Default: file.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the return value (file_token), the API endpoint, and the expected field value format, which is essential for correct usage. It does not cover permissions or failure modes, but it provides meaningful behavioral context beyond a simple upload.

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 a single, dense sentence that front-loads the purpose and API source. It compacts a lot of information efficiently, though it is somewhat long and could benefit from splitting into two sentences.

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

Completeness4/5

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

The tool is moderately complex with no output schema, but the description explains the return value (file_token) and downstream usage. It omits error conditions and permissions, but given the schema coverage and the clear return-handling guidance, it is sufficiently complete for selection and basic 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 coverage is 100%, so the baseline is 3. The description adds context by mapping 'kind' to bitable_image or bitable_file and clarifies the file_token format, but it does not significantly extend parameter semantics beyond the 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?

The description clearly states the tool uploads a file as a Bitable attachment, referencing the specific API endpoint and parent_type values. It differentiates from sibling upload tools (upload_file, upload_drive_file, upload_image) by targeting Bitable attachments and returning a file_token for use in record fields.

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 explains that the result is suitable for writing into a Bitable Attachment-type field via batch_create/update_bitable_records, giving a clear use case. It does not explicitly compare to alternatives, but the Bitable-specific scope and token-purpose guidance imply when to use it.

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

upload_drive_fileA

[Official API] Upload a file from disk to a Feishu Drive folder (drive/v1/files/upload_all, parent_type=explorer). Returns file_token + url. If wiki_space_id is provided, the uploaded file is then attached to that Wiki space via move_docs_to_wiki (obj_type=file). UAT-first with app fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the file on disk
folder_tokenYesDestination folder token. Use list_files to find one, or pass the user "我的空间" root token.
wiki_space_idNoOptional. If set, also attach the uploaded file to this Wiki space.
wiki_parent_node_tokenNoOptional. Parent node under which to attach in the Wiki space.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description covers key behavioral aspects: the specific API endpoint, the return types, the conditional Wiki move via move_docs_to_wiki, and the authentication mode (UAT-first with app fallback). This goes beyond a simple 'upload' statement and helps the agent anticipate side effects.

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

Conciseness5/5

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

Three sentences pack all essential information: operation, API endpoint, return values, conditional behavior, and auth mode. No fluff or repetition, front-loaded with the core action.

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

Completeness4/5

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

Given no output schema, the description adequately covers return values (file_token + url) and the optional Wiki flow. It also names the auxiliary tool for folder discovery. Minor gaps include ambiguity about failure handling or permission requirements, but overall it is complete enough for an upload operation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds contextual meaning by explaining the overall flow (upload to Drive, then optionally attach to Wiki), which ties wiki_space_id and wiki_parent_node_token to a concrete behavior. This enriches parameter understanding beyond the 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?

The description clearly states the tool uploads a file from disk to a Feishu Drive folder, specifying the API endpoint and parent_type. It distinguishes itself from siblings like upload_file by explicitly tying to Drive folders and optional Wiki attachment. The return value (file_token + url) is also stated.

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 context: how to find the destination folder token via list_files, and optional behavior when wiki_space_id is given. Does not explicitly mention alternatives or when-not-to-use, but the guidance is actionable and sufficient for selection.

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

upload_fileA

[Official API] Upload a file to Feishu. Returns file_key for use with send_file_as_user.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the file on disk
file_typeNoFile type (default: stream for generic files)
file_nameNoDisplay file name (optional, defaults to basename)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description is the sole source of behavioral context. It discloses the return value and intended downstream use, but omits critical details such as file size limits, upload expiration, permission requirements, and error handling. This is a meaningful gap 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.

Conciseness5/5

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

Two sentences, zero fluff. The core purpose and return value are front-loaded. The '[Official API]' tag is slightly redundant but does not detract from overall 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 simple upload tool with three well-described parameters, the description is adequate. It links to send_file_as_user, giving enough context for invocation. However, it lacks nuance about file lifecycle and how it differs from upload_drive_file, preventing a perfect score.

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 description adds no additional parameter meaning. The schema already documents file_path, file_name, and file_type with defaults and ranges. Baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the action 'Upload a file to Feishu' and specifies the return value (file_key) for use with send_file_as_user. This clearly distinguishes it from sibling tools like upload_drive_file, which serves a different purpose (permanent storage vs. message attachment).

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 when to use: when a file_key is needed for send_file_as_user. It does not explicitly mention alternatives like upload_drive_file for persistent storage, but the contextual signal is strong enough to guide selection for most agents.

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

upload_imageA

[Official API] Upload an image file to Feishu. Returns image_key for use with send_image_as_user.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathYesAbsolute path to the image file on disk
image_typeNoImage usage type (default: message)

TDQS

A3.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 only mentions the outcome (returns image_key) and intended use, but omits any behavioral details such as file size limits, supported formats, authentication requirements, or side effects. For a tool with no annotation coverage, 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.

Conciseness5/5

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

The description is a single concise sentence that front-loads the key information: what it does and what it returns. No unnecessary words or repetition.

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 upload tool, the description effectively communicates purpose and return value. However, it lacks details about constraints like file size or supported image types, which could be expected in a complete description. The complexity is low, so this is near-complete.

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

Parameters3/5

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

The input schema already provides 100% coverage with descriptions for both parameters (image_path and image_type). The tool description adds no additional parameter semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool uploads an image file to Feishu and returns an image_key for use with send_image_as_user. This distinguishes it from sibling tools like upload_file, upload_drive_file, and upload_bitable_attachment.

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 phrase 'for use with send_image_as_user' implies a key usage context and connects to a sibling tool, but it does not explicitly state when not to use this tool or mention alternatives for non-image uploads. This is clear context without exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 84 tool updatesv1.3.10
    • First observedadd_reaction
    • First observedbatch_send
    • First observedcomplete_task
    • First observedcopy_wiki_node
    • First observedcreate_calendar_event
    • First observedcreate_doc
    • First observedcreate_folder
    • First observedcreate_group
    • First observedcreate_okr_progress_record
    • First observedcreate_p2p_chat
    • First observedcreate_task
    • First observedcreate_wiki_node
    • First observeddelete_calendar_event
    • First observeddelete_message
    • First observeddelete_okr_progress_record
    • First observeddelete_reaction
    • First observeddelete_task
    • First observeddelete_wiki_node
    • First observeddownload_doc_image
    • First observeddownload_message_resource
    • First observedforward_message
    • First observedget_calendar_event
    • First observedget_chat_info
    • First observedget_doc_blocks
    • First observedget_freebusy
    • First observedget_login_status
    • First observedget_new_events
    • First observedget_okrs
    • First observedget_task
    • First observedget_user_info
    • First observedget_wiki_node
    • First observedlist_calendar_events
    • First observedlist_calendars
    • First observedlist_chats
    • First observedlist_files
    • First observedlist_members
    • First observedlist_okr_periods
    • First observedlist_okr_progress_records
    • First observedlist_profiles
    • First observedlist_tasks
    • First observedlist_user_chats
    • First observedlist_user_okrs
    • First observedlist_wiki_nodes
    • First observedlist_wiki_spaces
    • First observedmanage_bitable_app
    • First observedmanage_bitable_field
    • First observedmanage_bitable_record
    • First observedmanage_bitable_table
    • First observedmanage_bitable_view
    • First observedmanage_doc_block
    • First observedmanage_drive_file
    • First observedmanage_members
    • First observedmanage_profile_hints
    • First observedmanage_task_members
    • First observedmanage_ws_status
    • First observedmove_wiki_node
    • First observedpin_message
    • First observedread_doc
    • First observedread_doc_markdown
    • First observedread_messages
    • First observedread_p2p_messages
    • First observedreply_message
    • First observedrespond_calendar_event
    • First observedsearch_contacts
    • First observedsearch_docs
    • First observedsearch_wiki
    • First observedsend_as_user
    • First observedsend_card_as_user
    • First observedsend_file_as_user
    • First observedsend_image_as_user
    • First observedsend_message_as_bot
    • First observedsend_post_as_user
    • First observedsend_to_group
    • First observedsend_to_user
    • First observedswitch_profile
    • First observedupdate_calendar_event
    • First observedupdate_group
    • First observedupdate_message
    • First observedupdate_task
    • First observedupdate_wiki_node
    • First observedupload_bitable_attachment
    • First observedupload_drive_file
    • First observedupload_file
    • First observedupload_image

TDQS

B3.4/5.0

Scored across 84 tools

Disambiguation3/5

While most tools target distinct resource-action pairs, there is notable overlap among send tools (e.g., send_as_user, send_message_as_bot, send_to_group) and some wrapper tools that combine search+send, creating ambiguity for an agent.

Naming Consistency4/5

Tool names mostly follow a consistent verb_noun snake_case pattern, with minor exceptions like 'send_card_as_user' and 'send_message_as_bot' that deviate slightly from the pattern but remain readable.

Tool Count2/5

84 tools is far beyond the typical well-scoped range of 3-15. While the server covers a broad domain, the sheer number makes it heavy and harder for an agent to navigate efficiently.

Completeness5/5

The server offers comprehensive coverage of Feishu's API surface, including messaging, calendar, tasks, wiki, bitable, drive, docs, OKRs, and profiles with full CRUD operations and no obvious gaps for common workflows.

Maintenance

ActivityStale
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A tool designed to help users connect AI Agents with the Feishu/Lark platform, encapsulating Feishu/Lark Open Platform API interfaces as MCP tools for document processing, conversation management, calendar scheduling and more.
    7,954
    -
  • A
    license
    B
    quality
    F
    maintenance
    An MCP server that exposes Feishu/Lark capabilities as function tools to MCP-compatible agents like Hermes and Claude Desktop. It provides 57 tools for messaging, document management, calendar operations, and task management through both hand-written fallback tools and bridged OpenClaw SDK functionality.
    53
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Feishu/Lark API integration, enabling AI agents to send messages, manage groups, create and edit documents and spreadsheets, and search knowledge bases.
    MIT