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_reactionB

[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

B3.3/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 but only states the basic action. It does not disclose idempotency, required permissions, or side effects like overwriting existing reactions.

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 directly states the purpose with no unnecessary words or fluff, making it optimally concise.

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

Completeness3/5

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

The description is adequate for a simple tool but lacks behavioral context (e.g., idempotency, error handling) that would help an agent use it correctly, especially given the presence of a sibling delete_reaction.

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 baseline is 3. The description adds no additional parameter meaning beyond the schema, which already defines message_id and emoji_type with 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 'Add an emoji reaction to a message' clearly states the verb (add), resource (emoji reaction), and target (message), distinguishing it from siblings like delete_reaction.

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 usage guidelines provided; the description does not indicate when to use this tool vs alternatives, such as whether it should be used only for specific emoji types or contexts.

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.1/5.0
Behavior4/5

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

Describes sequential dispatch with anti-rate-limit delay and per-target success/error reporting. Also clarifies identity source. No annotations exist, so the description carries the full burden and meets it well, though it could mention partial failure behavior more explicitly.

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?

Three sentences, efficient and front-loaded with purpose. Could be more structured but no unnecessary 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?

Covers behavioral aspects like sequential sending, delay, and per-target reporting. No output schema exists, but description hints at return structure. Lacks explicit limits or total time, but adequate for a batch tool of moderate 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 3. The description reiterates the via='bot' routing already in the schema description but adds no significant new semantic meaning 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 the tool sends content to multiple targets in one call, distinguishing it from single-target siblings like send_to_user and send_to_group. The verb 'send' and resource 'multiple targets' 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 Guidelines4/5

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

Explicitly says 'Use for broadcast / fan-out scenarios' and mentions identity handling (cookie user vs bot). It implies when to use but does not explicitly state when not to use or provide alternatives, though the sibling set makes this clear.

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.3/5.0
Behavior4/5

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

With no annotations, the description provides key behavioral details: uses Date.now() for completion, sets completed_at to '0' for uncompletion. This goes beyond the schema. However, it omits potential side effects (e.g., notifications) or error conditions, but for a simple wrapper it's 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?

Two concise sentences, front-loaded with API context, no redundancy. Every sentence serves a purpose: identifying the tool and clarifying the boolean parameter behavior.

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 simplicity of the tool (no output schema, two simple params, no annotations), the description is complete. It covers the essential behavior, default, and relationship to update_task. No significant gaps remain.

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 already cover parameters, but the description adds value by explaining the behavior of true ('uses Date.now()') and false ('sets completed_at to "0"'), and defaults. This enhances understanding beyond the schema's basic 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?

Clearly states the verb ('mark a task complete or uncomplete') and resource ('task'), and distinguishes itself as a convenience wrapper around update_task. 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 toggling completion status but does not explicitly state when to use versus alternatives like update_task. No exclusions or when-not-to-use guidance is provided.

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

A4/5.0
Behavior3/5

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

States 'deep-copy' and 'duplicated' indicating non-destructive copy. No annotations, so description carries burden. Could disclose permissions or limits but 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?

Single concise sentence with 'Official API' prefix. No unnecessary text; every word adds value.

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

Completeness4/5

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

No output schema, but operation is simple. Covers source, destination, and optional title. Could mention that parent tokens refer to wiki nodes, but context is sufficient.

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

Parameters3/5

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

Schema covers all 5 parameters with descriptions (100% coverage). Description adds no extra param info beyond 'deep-copy' context. 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?

Clear verb 'deep-copy' and resource 'Wiki node', with destination scope. Distinguishes from move_wiki_node (move vs copy) and create_wiki_node (copy vs create) among 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?

Implies use when a duplicate is needed. Contrasts with move implicitly. Lacks explicit 'when not to use' but sufficient for typical scenarios.

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.1/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden. It discloses the dual behavior (drive creation + wiki attachment), but lacks details on return values, error conditions, authorization requirements, 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.

Conciseness5/5

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

The description is two sentences, concise and front-loaded with the authoritative 'Official API' marker. Every sentence provides essential information 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?

Given 4 parameters, no output schema, and no annotations, the description covers the main workflow and parameter usage but omits details about the return value (e.g., doc token) and prerequisites. It is adequate but leaves gaps in the overall picture.

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 description adds meaning beyond the schema by clarifying the relationship between folder_id and wiki_space_id (folder_id ignored when wiki_space_id is set) and explaining wiki_parent_node_token for nested placement. Schema coverage is 100%, but the description enriches the context.

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 'Create' and the resource 'Feishu document', and distinguishes from siblings by explaining the optional wiki placement. It specifies that the doc is created in drive and attached as a Wiki node, differentiating from tools like create_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 Guidelines4/5

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

The description explains when to use wiki parameters for placement in a Wiki space, providing clear context. However, it does not explicitly state when not to use this tool or mention alternative tools for other doc-related operations.

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

create_folderB

[Official API] Create a new folder in Drive.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name
parent_tokenNoParent folder token (optional)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It fails to mention any side effects, permissions required, or behavior for invalid parent_token. The single sentence provides 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 concise with a single sentence. The '[Official API]' prefix is slightly extraneous but does not detract significantly. It is front-loaded with key 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 creation tool with full schema coverage, the description is adequate but minimal. It lacks details on return values, error handling, or idempotency. Could be improved with more context.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already documented. The description adds no additional meaning beyond 'Folder name' and 'Parent folder token (optional)'. 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 the action ('Create') and the resource ('a new folder in Drive'). This distinguishes it from sibling tools like create_doc or create_calendar_event, which target different resources.

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 usage guidance is provided. The description does not indicate when to use this tool over alternatives like manage_drive_file or upload_drive_file, nor does it mention prerequisites or limitations.

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

create_groupA

[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

A3.5/5.0
Behavior2/5

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

Without annotations, the description carries full burden. It only states 'Create a new group chat' and 'as bot', but omits details on permissions, side effects, or error conditions. The bot-specific behavior is unclear.

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 extremely concise, one sentence plus a clause, with no redundant information. It front-loads the main action.

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 creation tool with 3 parameters and no output schema, the description adequately covers the core purpose and optional initial members. However, it lacks details on return value, errors, or group limits, making it 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 parameters are already documented. The description adds 'Can add initial members' which aligns with user_ids but doesn't add new 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?

The description clearly states the verb 'Create' and the resource 'group chat (as bot)', distinguishing it from siblings like create_p2p_chat. It also mentions adding initial members, adding specificity.

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?

No explicit when-to-use or when-not-to-use guidance. The phrase 'as bot' implies a specific context but doesn't compare with alternatives like create_p2p_chat or send_to_group.

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.2/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It mentions auto-wrapping of content_text and defaults for source_title and source_url. However, it does not cover side effects, authentication needs, or error handling, leaving some gaps for a parameter-heavy 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 two sentences, the first stating the purpose and the second explaining requirements and options. It is concise and front-loaded with essential information, with no unnecessary 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 the tool has 11 parameters and no output schema, the description covers the key points: purpose, required params, Feishu requirements, and the simple vs rich content distinction. It could mention return values or error handling, but overall it is fairly complete for the complexity.

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 value by explaining Feishu requirements (source_title, source_url, block-structured content) and the auto-wrapping behavior for content_text, which goes beyond the schema 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 adds a progress note to an OKR objective or key result. It distinguishes itself from sibling tools like delete_okr_progress_record and list_okr_progress_records by explicitly saying 'Add a progress note'.

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 when to use the tool and gives instructions for required fields and auto-wrapping. It also advises using the `content` parameter for richer formatting. However, it does not explicitly state when not to use this tool versus alternatives, though the context is clear.

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

create_p2p_chatC

[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

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries the full burden. It mentions 'create or get' implying idempotency, but does not disclose permissions, side effects, or whether the operation is read-only or destructive. For a chat creation tool, more behavioral context is expected.

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 extremely concise, with one sentence that is front-loaded. However, it may be overly terse; a bit more detail on usage or behavior would improve it without hurting conciseness.

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 simplicity (1 param, no output schema, no annotations), the description is minimal but lacks sufficient context for an AI agent. It does not explain the 'create or get' logic, how to handle duplicates, or when to use this over sibling tools. More information is needed for effective 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?

The only parameter 'user_id' is already well-documented in the input schema ('Target user ID from search_contacts'). The description adds no additional meaning or context about the parameter beyond the schema.

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

Purpose4/5

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

The description clearly states it creates or gets a P2P direct message chat and returns a numeric chat_id. This is specific and distinguishes from general chat tools, though it does not explicitly differentiate from siblings like 'list_chats' or '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 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 (e.g., 'send_to_user' for sending messages, 'list_chats' for viewing chats). No prerequisites or exclusions mentioned. The description merely states the function.

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

create_taskC

[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

C2.9/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose side effects, permissions, or behavioral traits. For a creation tool, this is insufficient.

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?

Single sentence with no unnecessary information. Front-loaded with the version tag and core action. 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?

Moderate complexity (6 params, nested objects, no output schema) but description lacks return value info, constraints, or behavioral details. Incomplete for an agent to fully understand the tool's effects.

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 repeats the required/optional nature of parameters but adds no extra 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.

Purpose4/5

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

Description states 'Create a new task', which is a clear verb+resource. It distinguishes from sibling tools like update_task and delete_task, but lacks specifics on scope (e.g., current user context).

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 like complete_task or update_task. The description only notes required/optional parameters without usage context.

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

create_wiki_nodeC

[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

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds minimal context beyond the schema, mentioning 'UAT-first' (meaning unclear) and ownership. It fails to disclose side effects, required permissions, or error conditions.

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 with two sentences, front-loading the main action. However, the second sentence introduces jargon ('UAT-first') which may confuse. Overall, it is efficiently written.

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 and no annotations, the description is somewhat complete for a creation tool but lacks details on return values, required space existence, or error scenarios. It covers the core action and key parameters but leaves behavioral 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%, so all parameters are described in the schema. The description adds no extra meaning beyond stating that obj_type picks the resource, which is already in the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states 'Create a new Wiki node inside a space' with a specific verb and resource. It mentions the key parameter 'obj_type' that determines the underlying resource. However, it does not explicitly differentiate from sibling tools like create_doc or create_folder, which have overlapping functionality.

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 explicit guidance on when to use this tool versus alternatives. It mentions 'UAT-first' which is unclear, and does not state when not to use it or suggest alternative tools for similar tasks.

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

A4.2/5.0
Behavior4/5

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

No annotations provided, so description must disclose behavior. It does so by stating the deletion action and the ownership restriction. Could add more detail on reversibility or effects, but the key behavioral trait is covered.

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?

Single sentence with no extraneous information. Every word serves a purpose, explicit about identity (official API) and the constraint.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema, the description is adequate. It explains the action and the key limitation. Could mention return value or consequences, but not necessary for basic usage.

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 has 100% coverage with description 'Message ID (om_xxx)', so baseline is 3. The tool description adds no additional parameter meaning 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?

Description clearly states verb 'delete' and resource 'message', with additional constraint 'bot can only delete its own messages', distinguishing it from sibling delete tools like delete_task or delete_reaction.

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

Usage Guidelines4/5

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

Explicitly states when to use (delete a message) and includes the limitation that bot can only delete its own messages, implying when not to use. However, no explicit alternatives or when-not scenarios are mentioned beyond the 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.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It correctly identifies a destructive action but lacks details on permanence, cascading effects, or authorization requirements.

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

Conciseness5/5

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

The description is a single sentence with version info, conveying the essential information without superfluous 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 simple delete operation with one parameter and no output schema, the description is adequate, though it could mention error handling or idempotency.

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 minimal value beyond the schema, only mentioning the source list tool without expanding on parameter meaning or format.

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) and the resource (OKR progress record), and specifies the identifier (progress_id) with a source hint (from list_okr_progress_records), distinguishing it from other delete 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 hints that the progress_id comes from list_okr_progress_records, but does not explicitly state when to use this tool or provide alternatives or exclusions.

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/5.0
Behavior1/5

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

No annotations provided, and the description fails to disclose side effects (e.g., destructive action), idempotency, or error behavior when 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?

Very concise (one sentence, 9 words), appropriate for a simple tool, though no structural formatting is used.

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?

Minimal description covers basic purpose and required parameters, but omits details like user ownership, permissions, and reversibility, which are relevant given 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?

Input schema has 100% coverage with clear field descriptions; the description adds no extra 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?

The description clearly states the action ('Remove') and the target resource ('emoji reaction from a message'), distinguishing it from its sibling 'add_reaction'.

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 (e.g., add_reaction) or any prerequisites (e.g., user must own the reaction).

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

delete_taskB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_guidYesTask GUID

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 behaviors. It only says 'permanently delete', which implies irreversibility, but lacks details on required permissions 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?

The description has two sentences, but the first sentence ('Official API + UAT, v1.3.7') is version metadata that does not aid tool selection. It could be more concise.

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 only one parameter with full schema coverage and no output schema, the description is minimal. For a delete operation, more context (irreversibility, auth) would improve completeness.

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 parameter 'task_guid' described as 'Task GUID'. The description does not add further meaning, so 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 'Permanently delete a task', which is a specific verb+resource. It distinguishes from sibling tools like create_task, update_task, and complete_task.

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 vs alternatives (e.g., complete_task). The description does not mention prerequisites or conditions.

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/5.0
Behavior5/5

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

With no annotations, the description fully discloses that the call uses raw REST, the UAT-first and bot fallback behavior, and the critical fact that the drive resource is unaffected.

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?

Multiple sentences but each adds value; front-loaded with main purpose. Slightly longer than necessary but still well-structured.

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 delete operation with no output schema, the description covers the key behavioral aspects and follow-up steps. Could mention expected response, but sufficient for agent decision-making.

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?

Input schema has 100% coverage, so baseline 3. The description does not add further meaning to the parameters 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?

Clearly states the tool deletes a Wiki node, specifies the HTTP endpoint, and importantly distinguishes that the underlying drive resource is NOT deleted, differentiating from sibling tools like manage_drive_file.

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

Usage Guidelines5/5

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

Explicitly tells the agent that the underlying resource is not deleted and provides explicit follow-up instructions using manage_drive_file, offering a clear when-to-use and alternative.

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?

Without annotations, the description carries the burden of behavioral disclosure. It reveals a size constraint (payloads > 2 MiB require save_path) and implies the image is returned for the model to see, but does not specify the output format, authentication requirements, 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.

Conciseness4/5

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

The description is concise, with three sentences that front-load the core purpose and then add key usage details. It avoids unnecessary fluff, though the 'UAT-first' part is unclear and could be removed.

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 does not specify the return value (e.g., binary data, file path) or error conditions. While it explains the size cap, it could be more complete regarding what the agent can 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?

The input schema has 100% coverage, meaning each parameter has a description. The description adds value by explaining the origin of image_token (from get_doc_blocks), the purpose of doc_token (permission scoping), and the condition for save_path (payload > 2 MiB). This goes beyond the schema's own 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 downloads an image embedded in a docx document, with a specific verb ('download') and resource ('image from docx'). It distinguishes itself from siblings like 'download_message_resource' by specifying the source (docx) and the context (get_doc_blocks).

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 instructions on how to use the tool: pass the image_token from get_doc_blocks and optionally the doc/wiki/URL token for permission scoping. It also mentions a size cap and required save_path. However, it does not explicitly state when not to use this tool or compare with alternatives.

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.9/5.0
Behavior5/5

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

Discloses behavioral traits: images get inline content block, files get base64 truncated + optional save_path write, size cap rationale, and merge_forward quirk. No annotations provided, so description fully covers 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?

Well-structured with purpose first, then details, then warnings. Slightly long but every sentence earned its place; no redundancy.

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?

Complete for a complex tool: covers image vs file handling, size cap, merge_forward edge case. No output schema but return behavior is described (inline image block, base64, save_path).

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

Parameters5/5

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

Adds meaning beyond schema: explains message_id for merge_forward, key format (img_xxx vs file_key), save_path requirement when >2 MiB. Schema coverage is 100%, but description enriches context.

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?

Clearly states it downloads an image or file attached to a message, with specific references to 'see / store it'. Distinguishes from sibling 'download_doc_image' by focusing on message attachments.

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 guidance: when to use (model needs to see/store), size cap (>2 MiB requires save_path), merge_forward children use parentMessageId, and fallback behavior ('UAT-first, falls back to app').

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

forward_messageB

[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

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only explains ID format and types, but omits important traits like whether the original message is copied or moved, permission requirements, or any limitations.

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 with 60 words, front-loaded with the core purpose. No extraneous information. Efficient structure.

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 ID type handling and defaults, but lacks information about return values or error handling. Since no output schema is provided, the agent is left guessing what the tool returns upon success or failure.

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 three parameters are described in the input schema (100% coverage). The description adds minimal value beyond the schema, reiterating ID types and default behavior. The schema already covers the same information.

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 verb 'Forward' and the resource 'a message to another chat or user'. It distinguishes the tool as an official API for forwarding messages, but does not explicitly differentiate it from sibling tools like send_message_as_bot or reply_message.

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 vs alternatives. It explains ID types and defaults but does not provide context for choosing this over other messaging tools like send_to_group or send_to_user.

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?

The description clearly states this is a retrieval operation ('Get details') and lists the output fields, indicating no destructive side effects. However, it does not explicitly declare the tool as read-only or mention any prerequisites (e.g., access permissions), which would be helpful given the lack of 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 a single, front-loaded sentence that immediately conveys the purpose and scope. It efficiently includes environment notes and a list of returned details without redundancy.

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 simple retrieval tool with no output schema, the description sufficiently explains what will be returned by listing the major fields. No critical information is missing given the tool's straightforward nature.

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 both parameters (calendar_id and event_id) with 100% coverage. The description adds context by noting that event_id comes from list_calendar_events, but does not elaborate further on parameter semantics. This meets 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 specifies the tool's action: 'Get full details of a single calendar event'. It enumerates the included fields (summary, description, start/end, attendees, location, attachments, meeting link), distinguishing it from sibling tools like list_calendar_events (which returns multiple events with less detail) and create/update/delete variants.

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 retrieving full event details but lacks explicit guidance on when to prefer this over siblings like list_calendar_events or update_calendar_event. No exclusion criteria or alternatives are 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.

get_chat_infoB

[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

B3.4/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like authentication requirements, error handling, or rate limits. It only hints at fallback but does not explain implications 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.

Conciseness4/5

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

The description is a single concise sentence with key details front-loaded. It could benefit from structuring (e.g., listing returned fields) 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 one parameter, no output schema, and no annotations, the description covers the basic purpose and returned fields. However, it omits error handling, permissions, and ID format specifics.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'chat_id' parameter, and the description only repeats the supported formats. No additional semantic value 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 it retrieves chat details (name, description, member count, owner) and explicitly supports two ID formats, distinguishing it from sibling tools like get_user_info.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like list_chats or get_user_info. The context of 'Official API + User Identity fallback' is implied but not actionable.

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.5/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. Discloses it queries windows and requires a scope, but does not specify response format (e.g., list of time ranges per user), default behavior (free+busy vs only busy), or error handling. Minimal 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?

Short 2-sentence description is mostly concise. The leading bracketed version info '[Official API + UAT, v1.3.7]' adds some noise but does not severely impact readability.

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?

Tool has 6 parameters (3 required) and no output schema. Description does not explain the response structure (e.g., array of time ranges, per user/room), nor how to interpret results for scheduling. Incomplete for an AI agent to reliably use.

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 already covers all 6 parameters with descriptions (100% coverage). Tool description adds no extra parameter information beyond what is in schema. 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?

Clear verb 'Query' and resource 'freebusy windows for one or more users in a time range'. Distinct from siblings like list_calendar_events which return events, not free/busy blocks. Use case 'find a meeting slot' further clarifies purpose.

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

Usage Guidelines4/5

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

Explicitly states 'Use to find a meeting slot', providing a clear usage context. Mentions required permission but does not give explicit when-not-to-use or alternative tools.

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

A4.1/5.0
Behavior3/5

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

Discloses session refresh side effect, but lacks details on return value or implications of the check. No annotations to supplement, so description only partially fulfills 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?

Two concise sentences, front-loaded with main purpose, no extraneous information. 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?

Adequate for a parameterless tool, but lacks response format or behavioral implications. Additional context on typical use or safety 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?

No parameters defined; schema coverage is 100%. Baseline score of 4 applies as description adds no parameter semantics but none are 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?

Clearly states it checks cookie session validity and app credentials status, with an additional refresh action. Unambiguous verb-resource pairing, distinct from sibling tools.

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

Usage Guidelines4/5

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

Explicitly describes the tool's purpose and mentions session refresh, providing clear context for use. No alternative tools or when-not-to-use guidance, but purpose is sufficiently clear.

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

get_new_eventsB

[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

B3.4/5.0
Behavior3/5

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

The description reveals cross-process deduplication via a global cursor and mentions default profile filtering. However, it does not clarify if the tool is destructive (draining may consume/delete events), nor does it discuss rate limits or auth requirements. Annotations are absent, so description carries full burden but leaves 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 two sentences, front-loading key info. Version history could be omitted or shortened, but overall efficient.

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

Completeness2/5

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

With 7 parameters, no output schema, and no annotations, the description is incomplete. It does not explain what events are, how since_seconds works, what peek does, or return format. Agent lacks sufficient info to use the tool 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?

Schema coverage is 14% (only profile described). The description adds context only for profile, not for other 6 parameters (event_type, event_types, chat_id, since_seconds, max_events, peek). With low schema coverage, description should compensate but fails.

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 it drains real-time events from a machine-level shared event log, distinguishes from version v1.3.8, and mentions default profile behavior. It differentiates itself from sibling tools by focusing on real-time event draining rather than CRUD operations.

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 real-time events and hints at profile filtering ('pass profile="*" to see all'), but does not explicitly state when to use this tool vs alternatives like read_messages or list_*. No exclusion criteria or context of non-use.

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

get_okrsA

[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

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 discloses the data returned but does not mention any side effects, auth needs, rate limits, or error handling, which is acceptable for a read-only tool but could be more 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 a single, front-loaded sentence with no redundancy. The bracketed prefix adds context without clutter.

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 batch-fetch tool with 3 self-documenting parameters and no output schema, the description covers the essentials (what is fetched, by what). It could mention pagination or error handling, but overall complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all parameters. The description adds context like max 10 IDs and the source (list_user_okrs), but this is incremental; 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 uses a specific verb ('batch-fetch') and resource ('full OKR details') and lists the included components (objectives, key results, progress, alignments), clearly distinguishing from sibling tools like 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 implies usage when OKR IDs are available (e.g., from list_user_okrs) and specifies a batch operation, providing clear context for when to use this tool, but lacks explicit when-not or alternatives.

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

get_taskB

[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

B3.1/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only states 'get full details' but does not mention permissions, rate limits, side effects, or what 'full details' includes. The read-only nature is implicit but insufficient.

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 purpose. However, the environment tag '[Official API + UAT, v1.3.7]' adds unnecessary length for an agent, though it may be useful context for developers. Still, it is efficient overall.

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 get-by-GUID tool with no output schema, the description lacks details on return format, error cases, or any limitations. An agent cannot fully predict the response without additional information.

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 parameter description already explains the GUID source. The tool description adds minimal extra meaning ('by GUID'), so it meets baseline but does not improve 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 verb 'Get' and the resource 'full details of a single task by GUID', distinguishing it from siblings like list_tasks (multiple tasks) and create_task/delete_task/update_task (mutations). It specifies the identifier type (GUID), making the 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 on when to use this tool versus alternatives (e.g., list_tasks to find GUIDs, update_task after reading). The parameter description hints at sources of GUID but does not explain when to prefer this tool over others.

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.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 cover behavioral traits. It indicates a read operation but does not mention permissions, error behavior (e.g., if user not found), or any side effects. For a simple lookup, the transparency is adequate but not fully detailed.

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 extremely concise: two short sentences with a front-loaded tag [User Identity]. Every word serves a purpose, and there is no unnecessary 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 simple lookup tool without an output schema, the description sufficiently conveys the input and outcome. It does not detail the return format, but given the tool's simplicity and common pattern, it is mostly 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%, with both parameters described. The description adds minimal value beyond the schema: it reinforces the user_id parameter by saying 'by user ID' but does not clarify the optional chat_id parameter further. 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 tool's purpose: looking up a user's display name by user ID. The verb 'look up' and resource 'user's display name' are specific, and the tool is distinct from sibling tools like get_chat_info or get_login_status.

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 simple user lookups but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The context is clear but the guidelines are missing.

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.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses input flexibility, fallback mechanism, and return values. It implies a read-only operation but does not detail auth or rate limits, nor explicitly state side-effect-free behavior. Still, it provides substantial 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 two sentences, front-loaded with the primary purpose, and every phrase adds value. No redundancy or irrelevant details.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description explains return values and input flexibility. It lacks error handling or prerequisites, but is largely complete for typical usage.

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

Parameters5/5

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

Schema coverage is 100% but the description adds rich semantics: accepted token formats, fallback to synthesized node-shape, and the ability to accept URLs. This significantly enhances understanding beyond the schema's minimal 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 tool resolves a wiki node token to its underlying object (docx, bitable, etc.), specific verb and resource, and includes return fields (obj_type, obj_token, space_id). This distinguishes it from sibling tools like list_wiki_nodes or 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 Guidelines4/5

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

The description explains the various input formats accepted (bare token, obj_token, URL) and the fallback behavior, giving clear context on when to use it. However, it does not explicitly state when not to use it or mention alternatives like search_wiki.

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

A3.9/5.0
Behavior3/5

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

No annotations provided; the description adds context about Unix seconds for time range and typical usage, but does not disclose pagination behavior, rate limits, or limits on time range scope.

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 succinct sentences that first state the core function and then provide a practical usage example. No wasted words, information is front-loaded.

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

Completeness3/5

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

With no output schema, the description lacks details on return value structure, pagination behavior, and sync token usage. It covers the workflow but misses completeness for a list tool with multiple optional parameters.

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% (all parameters described in schema), baseline 3. The description adds slight extra meaning (e.g., Unix seconds, typical usage pattern) but does not significantly improve 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 'List events in a calendar within an optional time range' and provides typical usage linking to list_calendars, differentiating it from sibling tools like get_calendar_event or create_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 a typical workflow (first list_calendars, then list events) and an example time range [now, now+7d], but does not explicitly state when not to use this tool (e.g., for a single event, use get_calendar_event).

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.4/5.0
Behavior4/5

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

As no annotations are provided, the description carries the full burden. It discloses important behavioral traits such as authentication requirements, authorization scope, and the fact that app identity only sees calendars it was invited to.

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 consists of two concise sentences that front-load the tool's purpose and essential usage constraints. Every sentence adds value, with no redundancy or unnecessary 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 no output schema, the description adequately explains what the tool returns ('calendars list') and covers pagination. It could be slightly improved by mentioning the response structure, but is sufficiently complete for a list 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 input schema has 100% description coverage for all three parameters. The description adds extra context by noting that 'page_size' must be at least 50 due to Feishu's endpoint rejection, which goes 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 'List the current user's calendars (primary + shared + subscribed)' with a specific verb and resource scope, distinguishing it from sibling tools like 'list_calendar_events'.

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 context about required authentication (UAT, app identity limitations) and OAuth scope, giving clear guidance on when the tool can be used. However, it does not explicitly state when to avoid using 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.

list_chatsB

[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

B3.3/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 behavior. It states the tool lists chats and returns specific fields, but omits details about pagination, rate limits, or authentication requirements.

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 effectively communicates the tool's purpose and return fields. It could be slightly more structured, but it is efficient.

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

Completeness4/5

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

For a simple list tool with no output schema, the description adequately states the return fields and scope. It covers the essential context needed for an agent to use it 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%, with clear descriptions for page_size and page_token. The tool description adds no additional parameter context 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 states 'List all chats the bot has joined,' specifying the verb, resource, and scope. It distinguishes from siblings like 'list_user_chats' by focusing on bot-joined 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 on when to use this tool versus alternatives (e.g., 'list_user_chats'). The description does not mention when not to use it or provide context for selection.

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_membersA

[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

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It's straightforward but lacks disclosure on rate limits, authorization, or error cases. Acceptable for a simple read operation.

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

Conciseness5/5

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

Single sentence, front-loaded with purpose, no wasted words. Efficient and clear.

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?

Lacks output schema but operation is simple. Does not address pagination behavior or potential issues like large groups. Adequate 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 covers all parameters (100% coverage), so description need not add much. No param info in description, but baseline of 3 is appropriate as schema provides meaning.

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 verb 'List' and resource 'members' with context 'in a group chat'. Distinguishes from siblings like 'manage_members' (modification) and 'list_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 on when to use or not use this tool. Does not mention alternatives or prerequisites, leaving the agent to infer from context.

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

A3.8/5.0
Behavior2/5

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

No annotations provided; description lacks behavioral details like read-only nature, auth requirements, or side effects. Only mentions '[Official API + UAT]' which is environment info.

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, each serving a distinct purpose: purpose and usage guidance. 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 simple list tool with pagination params and no output schema, the description adequately covers purpose and integration point. Slightly lacking output format details but acceptable.

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 descriptions for page_size and page_token. Description adds no extra parameter context beyond schema, so baseline 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 'List OKR periods (quarters / years)' and explicitly connects to filtering list_user_okrs, distinguishing it from sibling tools.

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 to 'Use period_ids from this to filter list_user_okrs', indicating when to use this tool. No exclusions but clear enough.

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
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the internal mechanism (calls get_okrs and walks lists) and the limitation that full content is not available. However, it does not discuss error handling (e.g., invalid OKR) or return format details, which 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 two sentences long, front-loading the purpose, followed by technical details. No unnecessary words or repetition, making it efficient 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?

Given the simple parameters and lack of output schema, the description provides a clear purpose and internal logic. It mentions the output (IDs with target_id and target_type) but does not fully specify the return structure (e.g., list, pagination). Sufficient 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.

Parameters4/5

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

The input schema has 100% coverage with basic descriptions. The tool description adds value by explaining the okr_id source (from list_user_okrs) and that user_id_type is a pass-through to get_okrs, providing context 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 lists progress records for an OKR, with a specific verb and resource. It distinguishes itself from siblings like get_okrs and create_okr_progress_record by explaining it is a workaround due to the lack of a native endpoint, and it extracts only IDs, not full content.

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 this tool by noting it extracts IDs and that full content requires progressRecord.get, which is not yet wrapped. This provides useful context but lacks explicit when-to-use or when-not-to-use statements compared to alternatives like get_okrs.

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.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 burden. It discloses the data source (file and env var) and that it marks the active profile, providing good transparency. Could mention that it is read-only and non-destructive.

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 concise sentences, front-loaded with purpose, technical details, and a note about active profile. No unnecessary words.

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 no-parameter, read-only list tool, the description is complete. It explains what it does, where data comes from, and that it identifies the active profile. Return format is implicitly a list of profiles with the mentioned fields.

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?

No parameters, so baseline is 4. Description adds context about data sources and marking active profile, which is helpful beyond the empty 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?

Clearly states it lists all available identity profiles, specifying the credentials each profile has. Distinguishes from siblings like switch_profile and manage_profile_hints.

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?

Does not explicitly state when to use this tool versus alternatives. The description implies listing profiles for selection, but lacks explicit guidance on when not to use or comparisons with siblings.

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

list_tasksB

[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

B3.4/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It includes version info but lacks details on side effects, permissions, or rate limits. However, as a read operation, behavioral risks are low.

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?

Single sentence with version info is efficient, though the version label '[Official API + UAT, v1.3.7]' may be unnecessary noise for an AI agent.

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?

No output schema exists, and the description does not explain return values or pagination behavior. While it covers parameter usage, it lacks completeness for a list operation with multiple parameters.

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%, providing clear parameter descriptions. The description adds a brief summary ('Filter by completion or type') but does not substantially enhance 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 'List the current user's tasks' which is a specific verb+resource. It distinguishes from sibling tools like get_task (single task) and complete_task (action on a task).

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 on when to use this tool versus alternatives. Siblings like get_task, complete_task, manage_task_members exist, but the description does not mention them or provide exclusions.

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.5/5.0
Behavior4/5

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

Discloses key behavioral traits: only returns groups, requires OAuth. With no annotations, this adds value, though could mention pagination behavior or error cases. Still good for a list 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?

Three concise sentences, front-loaded with purpose, then scope clarification, then usage guidance. Every sentence adds value without redundancy.

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 simple list tool with no output schema, description sufficiently covers purpose, scope, prerequisites, and alternatives. No gaps identified.

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 covers 100% of parameters with descriptions, so description adds no extra meaning beyond the input 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?

Description clearly states the tool lists group chats the user is in, and specifies it only returns groups, not P2P. This differentiates it from sibling tools like list_chats or P2P-related tools.

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 alternative workflow for P2P chats and mentions OAuth setup requirement, guiding the agent on when to use this tool vs. alternatives.

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

A3.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 must disclose behavioral traits. It only states the tool lists OKRs and gives usage hints, but does not mention side effects, rate limits, authorization requirements (beyond needing an open_id), or if it is idempotent. This is insufficient for a 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 two sentences, front-loading the purpose and then adding key requirements. Every sentence is necessary and concise, with 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?

The description covers the core purpose and filtering but does not describe the response format or pagination behavior. Since there is no output schema, the agent is left guessing what fields are returned. Still, for a listing tool with 6 params, it is minimally adequate.

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%, and the description adds value by explaining that user_id is the open_id and that period_ids can be obtained via list_okr_periods. This goes beyond the schema descriptions, providing actionable guidance.

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 a user's OKRs, specifies the required user identifier (open_id), and mentions filtering by period IDs. This distinguishes it from siblings like 'get_okrs' (likely for self) and 'list_okr_periods'.

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 context on where to obtain the user's open_id (get_login_status or search_contacts) and how to filter by period_ids using list_okr_periods. It does not explicitly contrast with alternatives like get_okrs, but the context is clear.

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.9/5.0
Behavior3/5

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

No annotations provided; description covers the three actions but lacks details on side effects, permissions, or limits of creating/copying apps. For a mutation tool, more behavioral context would be beneficial.

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?

Single sentence effectively summarizes the tool's actions and key parameter dependencies. Could be slightly more structured (e.g., bullet points) but remains concise and front-loaded.

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 6 parameters and no output schema, the description provides sufficient context for the three distinct operations. It could mention return types or error scenarios, but is adequate for actionable use.

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?

Description adds value beyond schema by noting that folder_id is optional and ignored when wiki_space_id is set, and that app_token can be a native token, wiki node, or Feishu URL. With 100% schema coverage, this is a good addition.

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 manages a Bitable app and lists three specific actions (create, copy, get_meta), making its purpose distinct from sibling tools like manage_bitable_record 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?

Description lists actions and some parameter conditions (e.g., app_token required for copy/get_meta) but does not explicitly state when to use this tool versus alternatives, such as when to use manage_bitable_record for record-level operations.

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

A4.1/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It discloses the API quirk about update requiring type, but does not mention authentication needs, rate limits, or side effects. Behavioral transparency is adequate but not rich.

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

Conciseness4/5

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

The description is a single sentence with a parenthetical note, which is very concise. However, the structure could be improved (e.g., bullet points for actions) to enhance scanability.

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 main purpose and a behavioral note, but does not explain return values for each action. Given the tool has 7 parameters and 4 actions, more context (e.g., what each action returns) would improve completeness.

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

Parameters5/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 significant value by explaining that app_token accepts various formats, enumerating field type numbers, and giving an example for SingleSelect property. This goes well beyond the schema 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 it manages fields (columns) inside a Bitable table with four specific actions (list, create, update, delete). This directly distinguishes it from sibling tools like manage_bitable_record 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 Guidelines4/5

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

The description provides a critical usage note: Feishu requires 'type' even when only renaming during update. This is explicit guidance for a specific scenario. However, it lacks general guidance on when to use this tool vs alternatives.

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?

No annotations are provided, so the description carries full burden. It mentions actions and that update is for rename, but lacks details on side effects (e.g., irreversibility of delete), required permissions, or rate limits. For a CRUD tool, more behavioral context would be beneficial.

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 concisely states the purpose and actions. It is front-loaded with '[Official API]' and avoids unnecessary details.

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 main actions but lacks details on prerequisites, error handling, and return values (no output schema). For a tool with 5 parameters and multiple actions, additional context would improve completeness.

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 parameters are fully described in the schema. The description adds minimal context (e.g., 'with optional initial fields' for create, 'rename' for update). Given high schema coverage, 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 tool manages tables in a Bitable app with clear actions (list, create, update, delete). It distinguishes from sibling tools like manage_bitable_field and manage_bitable_record by focusing on table-level operations.

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 table management but does not provide explicit guidance on when to use this tool versus other bitable management tools (e.g., manage_bitable_field). No 'when not to use' or alternative recommendations are given.

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

A3.8/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose authorization needs, rate limits, or side effects of operations like deletion. The only behavioral insight is that update is not exposed, which is useful but limited.

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 provide the essential purpose and a key limitation. No unnecessary words; every part 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?

Sufficient for a tool with clear actions and parameters. Missing details about return format or behavior for list action, but overall complete enough 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?

Schema coverage is 100% with descriptions for all 6 parameters. The description adds no extra detail beyond listing actions, so it does not improve 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?

Clearly states 'Manage views inside a Bitable table' and enumerates three actions (list, create, delete). Differentiates from sibling tools like manage_bitable_field or manage_bitable_record by specifying the resource (views).

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 actions and notes that update is not exposed in the Feishu API, advising to recreate with a new name to change. Offers clear context for when to use actions, though does not mention alternatives explicitly.

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

A4.2/5.0
Behavior4/5

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

With no annotations, the description discloses behavioral traits: actions return task_id for move/delete, type field is required with specific error codes. This provides useful transparency, though it could mention if operations are synchronous or destructive.

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, front-loaded with purpose, then breaks down actions in one sentence each. Every word adds value—no 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?

Given no output schema, the description describes return values for move/delete (task_id) but omits copy's return. It covers required fields and error conditions, satisfying most contextual needs for a 5-param 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%, but the description adds context beyond enum labels: explains why type is always required (Feishu API table), and clarifies parameter conditions (name required for copy, folder_token for move).

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 Drive files with three specific actions (copy, move, delete), each with a brief explanation. This distinguishes it from sibling tools like upload_drive_file or delete_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 important requirements (type is always required) and error codes, but lacks explicit guidance on when to use this tool versus alternatives like move_wiki_node or create_doc. Usage is implied but not contrasted.

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

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry the full transparency burden. It discloses the API error behavior and the default parameter logic, adding value. However, it does not disclose idempotency, rate limits, or effects of duplicate requests, which are important for an agent to understand.

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 with no wasted words. The purpose is front-loaded, and the critical usage note about parameter matching follows immediately. Every sentence adds value.

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 core functionality and a key error case. Given the schema is complete and no output schema exists, it provides sufficient context for an agent to use the tool. However, it could explicitly state that the tool supports adding or removing multiple members at once (implied by array parameter).

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, but the description adds essential context about the member_id_type mismatch error and explains why the default (open_id) may need override. This goes beyond the schema descriptions, providing practical guidance for correct usage.

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 adds or removes members from a group chat. It specifies the resource (group chat members) and the actions (add, remove). However, it does not explicitly mention that the operation can be performed in bulk via the member_ids array, which is a minor clarity gap.

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 guidance on a common error (code 9499) and recommends passing member_id_type explicitly when using union_id or user_id. This helps agents use the tool correctly. However, it does not mention when to use this tool versus alternative tools like list_members or manage_task_members.

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.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 must disclose behaviors. It explains the tool manages a cache for auto-switch middleware and gives an example of staleness. However, it does not detail side effects (e.g., impact on routing) or permissions needed. It provides 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.

Conciseness5/5

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

Two sentences: first explains what it does and the underlying data structure, second gives usage guidance. No wasted words, front-loaded with the most important information.

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

Completeness4/5

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

Given no output schema and moderate complexity (3 params, no nested objects), the description covers purpose, when to use, and basic parameter roles. It could mention error cases or what happens after clearing, but it is sufficiently complete for a cache management 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?

Input schema covers all three parameters with descriptions (100% coverage). The description adds value by explaining the 'resourceKey → profileName' mapping and the concept of hints, which goes 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 inspects, sets, or clears profileHints, which is a specific cache. It explicitly names the resource (resourceKey → profileName cache) and the verb (inspect/set/clear). No sibling tool has a similar purpose, so it is well-differentiated.

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

Usage Guidelines4/5

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

The description gives a clear use case: 'Useful when a hint goes stale (e.g., a profile lost access to a doc).' It does not explicitly state when not to use or list alternatives, but the context is clear enough for agents to decide.

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.2/5.0
Behavior2/5

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

No annotations are provided so the description carries full burden. It discloses the mutation action and member format but lacks details on side effects, permissions, error conditions, or what happens if the task doesn't exist. The version notation adds little behavioral insight.

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

Conciseness4/5

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

The description is short and front-loaded with purpose. However, the version string '[Official API + UAT, v1.3.7]' may be unnecessary for an AI agent. Still, it is efficient overall.

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

Completeness3/5

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

For a mutation tool with 3 parameters and no output schema, the description covers the basic operation and member structure but omits expected return values or confirmation. 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.

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 reinforces the member object format already in the schema. It does not add significant new meaning beyond what the schema's descriptions provide.

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 purpose: 'Add or remove members on a task.' It specifies the verb (add/remove) and resource (task), and distinguishes from sibling 'manage_members' by explicitly mentioning 'on a task'. The member object structure is also provided.

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 does not provide any guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions. For example, sibling 'manage_members' likely handles different resources but no differentiation is given.

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.4/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 behavioral traits: actions that require ownership, potential side effects (restart WS, rotate events.jsonl, re-read credentials), and the ability to steal an active lock via force=true. This covers important behaviors beyond the schema, though it omits error handling or auth details beyond owner-only status.

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 a list, front-loaded with version and purpose. Every word is functional; no fluff. The structured list of actions makes scanning easy. This is an excellent example of concise, informative documentation.

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 lack of annotations and output schema, the description provides sufficient context for using the tool: it explains each action, flags ownership requirements, and notes side effects. However, it does not describe return values or error conditions, which would be helpful for a tool with multiple permission-sensitive actions. Still, it covers the most critical aspects.

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 has 50% coverage (force parameter described). The description compensates by explaining each action enum value: info = status dump, reconnect = restart WS, claim = try become owner, rotate = force rotation, reconfig = re-read credentials. For the force parameter, the description matches the schema. Overall, the description adds meaningful context beyond the enum listing.

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: 'Inspect or control the machine-level WS owner.' It then lists five specific actions (info, reconnect, claim, rotate, reconfig) with brief explanations. This provides a distinct and precise purpose that differentiates it from sibling tools, which are mostly CRUD for entities like messages, documents, and tasks.

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 each action and notes ownership restrictions ('owner-only' for reconnect, rotate, reconfig; force flag for claim). However, it does not explicitly state when to prefer this tool over alternatives. Given no obviously similar sibling tools, the guidance is adequate but could be more explicit about prerequisites and contexts.

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.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions scope (same space vs different) and parameter requirements, but does not disclose potential side effects on children, permissions, or revision history.

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 purpose, and contains no wasted words. Every sentence is necessary.

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

Completeness3/5

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

With 4 parameters, no output schema, and no annotations, the description is adequate but not rich. It covers the core intent but omits return value, error scenarios, and behavioral details beyond what is absolutely necessary.

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 the schema already documents each parameter. The description adds valuable semantic constraint: 'Pass at least one of target_parent_token / target_space_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 clearly states the action (move) and the resource (Wiki node), specifying the two possible destinations (different parent within same space or different space). It distinguishes from siblings like copy_wiki_node or delete_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 Guidelines4/5

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

The description provides guidance on which parameters to include ('Pass at least one of target_parent_token / target_space_id'), helping agents use the tool correctly. However, it does not explicitly contrast with alternatives when to move vs copy.

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.3/5.0
Behavior2/5

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

No annotations provided. The description only states the basic action (pin/unpin) without disclosing behavioral traits like what happens if the message is already pinned, or whether permission checks are performed. A mutation tool should provide more 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?

Single sentence, no fluff. Efficiently communicates the tool's purpose.

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 and a simple 2-parameter tool, the description is adequate but could mention return value or error handling. Lacks completeness for a mutation tool with no annotations.

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

Parameters3/5

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

Input schema covers both parameters with clear descriptions (message_id and pinned with default). The description adds no extra meaning beyond the schema, so 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 action (pin or unpin) and the resource (message in a chat). It distinguishes from sibling tools like delete_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 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, or any prerequisites. For example, it doesn't mention if the user must be a member of the chat or if there are limits on pinned messages.

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.5/5.0
Behavior2/5

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

With no annotations, description only says 'Read raw text'. Lacks details on output format, limits, authentication needs, or side effects. Minimal disclosure.

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?

Single sentence, no unnecessary words. Front-loaded with the verb and resource.

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

Completeness3/5

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

For a simple read tool with one parameter and no output schema, description is adequate but could include more context (e.g., returns plain text, limits). Lacks completeness for a novice agent.

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 already describes the sole parameter (document_id). Description adds no extra meaning beyond the schema. Coverage is 100%, so 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?

Description clearly states the action (Read), resource (raw text content), and source (Feishu document). It distinguishes from siblings like read_doc_markdown, which implies different output format.

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?

No explicit guidance on when to use vs alternatives (e.g., read_doc_markdown, get_doc_blocks). Use case is implied but not stated.

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.3/5.0
Behavior4/5

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

Describes key behaviors: reads as Markdown, accepts multiple ID formats, and handles embedded images/files as placeholders with a note to call another tool. Without annotations, this adds sufficient transparency for safe usage.

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 concise sentences with front-loaded main purpose. No redundant information; each sentence adds value.

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 read operation with one parameter and no output schema, the description covers output format, input variations, and side effects (image placeholders). No gaps identified.

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 of document_id adds no new meaning beyond the input schema, which already describes it thoroughly. Baseline score of 3 applies given 100% 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?

Clearly states the tool reads a Feishu doc as Markdown, contrasting with get_doc_blocks JSON. It specifies the use case (RAG/digest/summarisation) and token savings, making the purpose distinct and actionable.

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 context for when to use (Markdown vs JSON) and token savings, and lists accepted input types. However, it doesn't explicitly state when not to use or exclude alternatives like get_doc_blocks, though the contrast implies it.

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

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. It discloses key constraints (only text, as bot, error for other types) but does not mention permissions, rate limits, irreversibility, or response format. It is adequate but could provide more 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 a single, front-loaded sentence with no fluff. It efficiently conveys purpose, constraints, and error condition. Every word serves a purpose.

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 2-parameter tool with no output schema, the description covers core purpose and constraints. It lacks response details or comparison with siblings, but overall is fairly complete.

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

Parameters3/5

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

Schema coverage is 100%, with clear descriptions for both parameters. The description adds minimal extra meaning (bot context, text-only limit). Baseline 3 is appropriate as 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 tool replies to a specific message by message_id, as a bot, and only works for text messages. This distinguishes it from siblings like send_message_as_bot (sends new message) or forward_message, and includes a specific constraint (only text).

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 text messages only, with error 230054 for other types. However, it does not specify when not to use this tool or suggest alternatives (e.g., for non-text replies). The guidance is implied but not explicit.

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_contactsB

[User Identity] Search Feishu users, bots, or group chats by name. Returns IDs.

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, so the description bears full responsibility. It only states it searches and returns IDs, lacking details on pagination, rate limits, authorization, or result format beyond IDs. This is insufficient for safe agent invocation.

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 with no redundant information. It is front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness3/5

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

For a simple one-parameter tool with no output schema, the description is adequate but incomplete. It mentions searching multiple entity types and outputting IDs, but fails to specify the format or structure of the returned IDs. Additional information on search behavior or result handling would improve completeness.

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 single parameter 'query' has a schema description 'Search keyword', and the description adds little extra meaning. With 100% schema coverage, a baseline of 3 is appropriate as it meets the minimum but does not enrich the 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 verb 'Search', the resources 'Feishu users, bots, or group chats', and the output 'Returns IDs'. It effectively distinguishes from sibling tools that list or retrieve specific entities.

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 guidelines on when to use this tool versus alternatives like list_chats, get_user_info, or other search tools. The description does not mention preferred contexts, prerequisites, or exclusions.

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
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 mentions sending as the user and push notifications for mentions, but omits important details like permissions required, rate limits, message length limits, and side effects such as message visibility, leaving significant gaps 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 with two clauses, front-loaded with '[User Identity]', and contains no unnecessary 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?

The tool is relatively straightforward, but the description lacks coverage of error conditions, prerequisites (e.g., login status), and how replies work. Given no output schema or annotations, it is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds minimal value beyond the schema (e.g., mentions reply threading and @-mentions, which are already detailed in parameter descriptions), 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 the verb 'Send a text message as the logged-in Feishu user' and specifies capabilities (reply threading, @-mentions with notifications), distinguishing it from sibling tools like send_card_as_user, send_file_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 implies use for text messages as the current user and mentions reply threading and @-mentions, but does not explicitly state when to use this tool vs. alternatives (e.g., send_post_as_user, send_to_user) or when not to use it.

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

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.3/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It discloses the bot-only nature, the disabled user-identity path, and version requirement. It does not mention side effects or return behavior, but the mutation intent is clear and non-destructive.

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 with two sentences, though it includes some technical detail (e.g., script reference). It front-loads the key purpose and version requirement, making it efficient.

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

Completeness4/5

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

For a simple send action, the description covers input format, identity constraints, and version info. It does not describe output or error handling, but with no output schema, this is acceptable. It is sufficient for an agent to use 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%, and the description adds value by specifying that 'card' must be a JSON object following Feishu card schema with a link, and that 'chat_id' can be oc_xxx or open_id. This goes beyond the schema 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 explicitly states the tool sends an interactive Feishu card via bot identity, with clear verb and resource. It differentiates from siblings by noting the 'as_user' suffix is historical and the tool always routes through 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 clearly indicates bot-only usage and explains the historical naming, implying when to use this tool (for card sending with bot identity) and when not to (if user identity needed). It lacks explicit alternatives but provides sufficient context.

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

send_file_as_userB

[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

B3.1/5.0
Behavior2/5

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

With no annotations, the description must bear the full behavioral disclosure burden. It states the tool acts as the logged-in user, but does not disclose side effects, permissions, or reversibility. Minimal 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?

Two short, front-loaded sentences with no redundancy. Every word earns its place, providing essential information efficiently.

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 and full schema documentation, the description covers the core action and prerequisite. However, it lacks details about expected behavior (e.g., message visibility, confirmation) that could aid a model, especially 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 description coverage is 100%, so the schema already documents all parameters. The description adds no additional semantic meaning beyond restating the file_key prerequisite. Baseline score 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 ('Send a file as the logged-in user'), distinguishing it from siblings like 'send_image_as_user' or 'send_card_as_user'. However, it omits that the file is sent to a chat (implied by 'chat_id' parameter), which slightly reduces clarity.

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 mentions a prerequisite ('Requires file_key (upload via Official API first)') but provides no guidance on when to use this tool versus alternatives like 'send_image_as_user' or 'forward_message'. No explicit context for selection.

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.1/5.0
Behavior4/5

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

Discloses internal wire format and auto-deriving of display sizing; no annotations present, so description carries burden. Doesn't cover permissions or error cases, but adds technical detail beyond schema.

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

Conciseness3/5

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

Three sentences with version header; front-loaded with identity but includes internal details. Could be trimmed slightly without losing meaning.

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?

No output schema, and description does not mention return values or success/error indicators. Adequate for usage but missing post-call behavior.

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?

Adds context: chat_id numeric preferred, thumbnail defaults to image_key, width/height/mime/size optional metadata. All parameters have schema descriptions, but description enriches them.

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 'Send an image as the logged-in user (NOT bot)' with specific verb and resource, and distinguishes from sending messages as bot or other file types.

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

Usage Guidelines4/5

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

Explicitly requires image_key from a prior upload_image call, and explains thumbnail key defaulting. Does not explicitly list when not to use, but context implies user vs bot distinction via sibling tool names.

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.2/5.0
Behavior3/5

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

With no annotations, the description bears full behavioral transparency burden. It accurately describes the sending action and the @-mention resolution behavior, but omits details on permissions, rate limits, or whether the bot must be in the chat. 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?

Two sentences with zero wasted words. The critical @-mention guidance is front-loaded after the general purpose, making it scanable. 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?

Given no output schema and a relatively simple send action, the description covers the essential information: what it does, where it sends, and the key nuance of @-mentions. It 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.

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 content parameter's auto-serialization and providing a clear example of @-mention syntax with inline <at> tags, going beyond the schema's basic 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 tool sends a message as the bot to any chat, supporting various message types (text, post, interactive, etc.) and highlights the key @-mention behavior. This verb+resource+specialty distinguishes it from sibling tools like send_as_user or send_card_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 positions this as the reliable path for @-mentions, implying it should be used over alternatives when @-mentions are needed. However, it does not provide explicit when-not-to-use instructions or compare directly with other send tools.

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

send_post_as_userC

[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

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 full burden. It mentions that @-mentions trigger notifications, but omits behavioral traits like idempotency, authentication requirements, or potential side effects beyond creating a message.

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?

Extremely concise, with one sentence that front-loads the user identity and purpose. Every word 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?

Given no output schema and moderate complexity (nested paragraphs), the description lacks information about return values, error handling, or success indicators. It also fails to contextualize when this tool is appropriate among many send-related siblings.

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 briefly mentions 'title and formatted paragraphs' but does not add meaningful context beyond what the schema already provides, such as parameter format or constraints.

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 sends a rich text POST message with title and paragraphs, and supports @-mentions. However, it does not distinguish from sibling tools like 'send_as_user' or 'send_card_as_user', which may lead to confusion about when to use this specific tool.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. With many sibling messaging tools, the lack of usage context or exclusions makes it hard for an AI agent to decide which tool to invoke.

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.3/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 for behavioral disclosure. It mentions the core action but omits critical details: authentication needs, side effects (message creation), failure modes (group not found), and whether the operation is reversible. This lack of disclosure makes it hard for an agent to anticipate consequences.

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 clearly communicates the tool's purpose. It is front-loaded and contains no extraneous information. However, a slightly more structured format (e.g., listing prerequisites) could improve readability without adding much length.

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 tool has three parameters, no output schema, and no annotations, the description is insufficient. It fails to explain prerequisites (e.g., user must have access to the group), what happens on success or error, or how the @-mention feature works. The context signals indicate moderate complexity, so more detail 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 coverage is 100% with clear descriptions for all three parameters. The description adds no extra meaning beyond the schema; it merely restates the send action. The ats parameter is not mentioned in the description, but the schema already provides adequate documentation.

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: search group by name and send text message, all in one step. It distinguishes itself from siblings like send_to_user (individual) and send_message_as_bot (bot) by focusing on group search and immediate send.

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 sending text to a group when the group name is known, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., searching separately or using other send methods). No exclusions or when-not-to-use are mentioned.

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.6/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 carry the full burden of behavioral disclosure. It omits crucial details: whether the tool reuses existing chats, behavior on user not found, error handling, and permission requirements. The lack of such information makes it less 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 extremely concise—one sentence with a clear step-by-step flow. No unnecessary words, and the most important information is front-loaded.

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 tool's complexity (multi-step operation combining search, chat creation, and messaging) and the absence of an output schema, the description is too sparse. It does not cover potential failure modes, chat reuse behavior, or guidance on when to use this tool versus alternatives like 'send_message' when a chat ID is known.

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 parameters with 100% coverage. The description adds no extra meaning beyond what the schema provides, so it meets the baseline but does not elevate 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 states the tool's function: it searches a user by name, creates a P2P chat, and sends a text message in one step. This distinctly differentiates it from siblings like 'send_as_user' or '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 implies the usage scenario: when you want to send a message to a user identified by name rather than ID. It does not explicitly state when not to use it or recommend alternatives, but the purpose is clear enough for selection.

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.3/5.0
Behavior4/5

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

With no annotations, the description takes full burden. It discloses atomic writes, cache invalidation, and cross-process sync. It does not mention potential failures or permissions, but the behavioral traits are well covered.

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

Conciseness4/5

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

The description is concise with three sentences, but includes setup instructions that are tangential to the tool's immediate action. The key point is front-loaded, making it mostly efficient.

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

Completeness4/5

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

Given the tool's simplicity and the lack of output schema, the description covers input semantics, behavioral details, and prerequisites. It does not specify return values or error states, but overall it is complete enough for a profile switch 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 input schema already describes the 'name' parameter with 100% coverage. The description adds value by explaining that 'default' is for the primary profile and that other names come from credentials.json or LARK_PROFILES_JSON, enriching the meaning.

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 'Switch the active identity profile,' using a specific verb and resource. It distinguishes itself from sibling tools like list_profiles by detailing the atomic write and caching behavior.

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, including the prerequisites ('To add a new profile, run...') and the context of auto-sync. It does not explicitly list alternatives or when not to use, 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.

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_groupA

[Official API] Update group chat name or description.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesChat ID (oc_xxx)
nameNoNew group name (optional)
descriptionNoNew description (optional)

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as required permissions, reversibility, or side effects. The agent is left without crucial context about the operation's implications.

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?

Single sentence with no extraneous information. The purpose is front-loaded and clear. Every word earns its place.

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 update tool with no output schema and no annotations, the description is minimal. It lacks guidance on return values, error conditions, or usage prerequisites, leaving the agent with insufficient 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?

Input schema has 100% coverage on parameter descriptions. The description reiterates 'name or description' but adds no new meaning beyond confirming the schema. 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?

Description clearly states the verb (Update), the resource (group chat), and the specific fields (name or description). It distinguishes itself from sibling tools like create_group and delete_message by specifying the update action on group properties.

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 changing group chat name or description. It does not explicitly state when not to use it or list alternatives, but the context is clear enough given the sibling ecosystem.

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/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that only text and interactive messages are editable and that the bot can only edit its own messages. However, it omits details on error handling, rate limits, or authentication requirements, which are important 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 with a parenthetical clarification, efficiently conveying all necessary information 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?

Given the lack of annotations and output schema, the description covers the essential purpose, constraints, and type limitations. It is mostly complete for a straightforward update tool, though it could mention potential error scenarios.

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 already well-documented in the schema. The description reiterates the content format examples but does not add significant new meaning 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?

Description clearly states 'Edit a sent message' with the verb 'edit' and resource 'sent message'. It also specifies that the bot can only edit its own messages, setting clear boundaries. This distinguishes it from sibling tools like delete_message or reply_message.

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?

Description provides explicit context on when to use (editing sent messages) and when not (message types other than text or interactive will be rejected). It implies the bot's own message limitation but does not explicitly name alternatives like delete_message for non-editable types.

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

update_taskA

[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

A3.6/5.0
Behavior3/5

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

Description reveals important behavioral detail: 'update_fields is required by Feishu' and explains the effect. No annotations provided, so burden is on description. Missing disclosure of permissions, side effects, or output, making it moderately 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?

Two sentences with no wasted words. Front-loaded with purpose, then critical context on the required parameter. Excellent efficiency.

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 and no annotations, description covers core purpose and a key parameter quirk. Lacks details on return values, error conditions, or prerequisites. Adequate but not comprehensive.

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%, baseline 3. Description adds value by explaining that 'update_fields' lists fields to update and that Feishu ignores other keys in 'task'. This clarifies usage beyond schema alone.

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?

Description clearly states 'Patch a task' with specific verb and resource. However, it does not differentiate from sibling tools like 'complete_task' or 'delete_task', which limits clarity for selection.

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?

Implied usage: use when updating a task. No explicit guidance on when not to use or alternatives. The description mentions the Feishu requirement, which aids correct invocation but not context of use.

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.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that only title is updatable via this API and points to other tools for content editing, adding significant behavioral context beyond a simple 'update'.

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?

Single sentence, efficient and front-loaded with '[Official API]', zero 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 simple parameters and no output schema, description is nearly complete. Could mention response behavior, but the essential information is provided.

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?

Input schema covers all 3 parameters with descriptions. Description adds meaning by stating that only title is updatable, reinforcing the role of space_id and node_token as identifiers.

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 verb 'Rename' and resource 'Wiki node', specifies that only title is updatable, and distinguishes it from sibling tools like create, delete, move, copy 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 Guidelines5/5

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

Explicitly says when to use (rename a wiki node) and when not to (for content editing, use docx/bitable/sheet tools), providing clear alternatives.

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/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the API call and return value but omits details such as permission requirements, rate limits, or file size constraints. Some behavioral context is present but not comprehensive.

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 no filler. It front-loads the official API designation and then clearly states functionality and usage context.

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 explains the return value and how to use it in Bitable record operations. Without an output schema, this is valuable. However, it lacks details on file limitations or asynchronous behavior, but overall is fairly complete for a simple upload 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 the baseline is 3. The description adds minimal extra meaning beyond the schema (e.g., mapping the 'kind' parameter to parent_type values). It does not significantly 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 uploads a file as a Bitable attachment, specifying the API and the returned file_token. It distinguishes from sibling upload tools by its Bitable-specific context and the intended use for attachment 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?

It explicitly states the result (file_token) and when it's suitable (for writing into Bitable Attachment fields). While it doesn't list alternatives, the purpose is clear enough to guide usage.

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

A3.9/5.0
Behavior3/5

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

With no annotations, the description discloses the API origin, return values (file_token+url), and optional Wiki integration. However, it omits rate limits, authentication requirements, and file size 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?

Two concise sentences cover main upload and optional Wiki behavior. Includes technical details (API version, parent_type) that slightly reduce conciseness but remain efficient.

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

Completeness4/5

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

Describes return values and optional Wiki behavior, compensating for missing output schema. Lacks error handling and file limits but is sufficiently complete for a straightforward upload 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%, but the description adds valuable context: 'folder_token' can be the personal space root token, and 'wiki_space_id' enables Wiki attachment. It also notes 'UAT-first with app fallback' for authentication order.

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 to a Feishu Drive folder, including the API endpoint and optional Wiki attachment. It distinguishes from siblings like 'upload_file' and 'upload_image' by specifying the target and additional functionality.

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 Drive folder uploads with optional Wiki attachment but does not explicitly contrast with similar tools like 'upload_file' or 'upload_bitable_attachment', nor provide when-not scenarios.

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

A3.8/5.0
Behavior3/5

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

With no annotations, description indicates a write operation but lacks details on side effects (e.g., overwrite behavior), permissions, or size limits. Basic but not insufficient.

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 with front-loaded purpose; 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 no output schema or annotations, description covers key output (file_key) and links to downstream usage. Missing details like file size limits or authentication, but acceptable for a straightforward upload.

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 3. Description adds no extra parameter meaning beyond what's already in 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 'Upload a file to Feishu' with verb and resource, and distinguishes from sibling upload tools by specifying the return of file_key for use with send_file_as_user.

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?

No explicit guidance on when to use this tool versus alternatives like upload_drive_file or upload_image; the link to send_file_as_user provides implicit context but not enough.

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

upload_imageB

[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

B3.4/5.0
Behavior2/5

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

No annotations provided; description lacks details on file size limits, supported formats, permissions required, or side effects beyond returning an image_key.

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?

Single sentence is concise, front-loaded with purpose and output, and contains no wasted 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?

With 2 parameters and no output schema, description fails to explain image_type behavior, format requirements, error handling, or constraints; incomplete for robust agent 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 covers 100% of parameters with descriptions; description does not add significant meaning beyond schema for 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?

Description clearly states the action 'Upload an image file to Feishu' and the output 'image_key for use with send_image_as_user', distinguishing it from other upload 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?

Description implies usage for sending images via send_image_as_user but provides no explicit when/why to choose this over alternative upload tools like upload_file or upload_drive_file.

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. Dates show when Glama detected each change.

  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
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

ActivitySlowing
ResponsivenessSyncing

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.
    8,845
    -
  • 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
    B
    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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EthanQC/feishu-user-plugin'

If you have feedback or need assistance with the MCP directory API, please join our Discord server