Skip to main content
Glama
adamzhang1987

kingdee-k3cloud-mcp

金蝶MCP Server(Kingdee K3Cloud MCP)

English | 中文

金蝶MCP 官网 | GitHub | PyPI

PyPI version Downloads Python License CI

金蝶MCP Server(Kingdee K3Cloud MCP)面向金蝶云星空 ERP,让 AI 助手(Claude Desktop、Claude Code、Cursor、Windsurf、Cline、Continue、Cherry Studio 等任意支持 MCP 协议的客户端)通过自然语言查询和操作金蝶 ERP 系统。标准 PyPI 包,pip installuvx 均可直接运行,无需绑定特定包管理器。

提示:通过 Openclaw 等支持 MCP 的 Agent 平台接入后,可在其支持的 IM 渠道(如微信、Telegram)中用自然语言查库存、查单据,无需打开金蝶网页端。支持 Skill 机制的 AI Agent(Claude Code、Openclaw 等)还可配合 kingdee-k3cloud-skill 获得更佳体验——Skill 为 Agent 注入金蝶表单字段、常用查询模式和工作流知识,大幅减少试错次数,但并非必需,MCP Server 本身即可独立配合任意 MCP 客户端使用全部工具。

┌─────────────────────┐    ┌─────────────────────┐    ┌──────────────────┐
│  kingdee-k3cloud    │───▶│  kingdee-k3cloud    │───▶│  K3Cloud Web API │
│  -skill             │    │  -mcp               │    │  (金蝶云星空)     │
│  知识库 / 工作流     │    │  执行引擎 / MCP工具  │    │                  │
└─────────────────────┘    └─────────────────────┘    └──────────────────┘
      支持 Skill 的 Agent          所有 MCP 客户端通用

MCP Server for Kingdee K3Cloud ERP. Connect AI assistants to your ERP system via the Model Context Protocol.

功能特性

  • 15 个 MCP 工具:覆盖查询、大数据量导出、新增、提交、审核、反审核、删除、下推等核心操作

  • 通用接口设计:单一 form_id 参数支持物料、客户、销售订单、采购订单等所有表单,无需为每种业务单独配置

  • 高阶查询原语query_bill_all(自动翻页)、query_bill_to_file(流式落盘)、query_bill_range(日期分片),彻底消除模型手动循环的负担

  • 只读/读写模式:可限制 AI 只能查询,防止误操作

  • 认证失败诊断:启动即校验凭据,凭据/授权配置错误会返回可操作的修复指引,而不是金蝶那句误导的「会话信息已丢失」

  • 多传输协议:支持 stdio(本地)、SSE、streamable-http(远程共享)

  • 标准 Python 包pip install 即可安装,仅需 Python 3.10+,无强制包管理器依赖

  • 类型安全的入参校验:所有工具入参基于类型注解,由 FastMCP 在调用时自动做 Pydantic 运行时校验,参数结构错误会在到达金蝶 API 之前被拦截

Related MCP server: yt-mcp-server-odoo

5 分钟快速开始

  1. 安装:pip install kingdee-k3cloud-mcp(或用 uvx kingdee-k3cloud-mcp 免安装直接跑)

  2. 在金蝶云星空「第三方系统登录授权」中申请应用 ID/密钥,拿到 5 个必填环境变量(见下方配置

  3. 把变量填进你的 MCP 客户端配置(见下方客户端配置),保存重启

  4. 直接用自然语言提问,例如:

    • 「查一下上周已审核的销售订单,按金额排序」

    • 「XX 物料现在各仓库库存分别是多少」

    • 「把 3 月份所有销售出库单导出成 csv」

快速开始

方式一:pip 安装(推荐,无需 uv)

pip install kingdee-k3cloud-mcp
kingdee-k3cloud-mcp

标准 PyPI 包,仅需 Python 3.10+,不依赖 uv注意:服务启动时必须提供 5 个必填环境变量(KD_SERVER_URLKD_ACCT_IDKD_USERNAMEKD_APP_IDKD_APP_SEC),否则会报错退出。

在 MCP 客户端中使用(推荐,见下方"客户端配置"章节):通过客户端配置的 env 字段传入。

手动测试时,可通过以下任一方式提供环境变量:

# 方式 A:在当前目录创建 .env 文件(服务启动时自动加载)
cp .env.example .env   # 填写真实值后再运行
kingdee-k3cloud-mcp

# 方式 B:在命令行临时导出
export KD_SERVER_URL=https://your-server/k3cloud/
export KD_ACCT_ID=your_acct_id
export KD_USERNAME=your_username
export KD_APP_ID=your_app_id
export KD_APP_SEC=your_app_secret
kingdee-k3cloud-mcp

方式二:uvx 直接运行(免安装)

无需 pip installuvx 会自动创建隔离环境并运行,用法与上面完全一致,把 kingdee-k3cloud-mcp 换成 uvx kingdee-k3cloud-mcp 即可:

cp .env.example .env
uvx kingdee-k3cloud-mcp

方式三:从源码运行

git clone https://github.com/adamzhang1987/kingdee-k3cloud-mcp.git
cd kingdee-k3cloud-mcp
uv sync
uv run kingdee-k3cloud-mcp

配置

复制环境变量模板并填写:

cp .env.example .env

环境变量

说明

示例

KD_SERVER_URL

金蝶服务器地址(必须以 /k3cloud/ 结尾)

https://your-server/k3cloud/

KD_ACCT_ID

账套 ID

your_acct_id

KD_USERNAME

集成用户账号

your_username

KD_APP_ID

应用 ID

your_app_id

KD_APP_SEC

应用密钥

your_app_secret

KD_LCID

语言(默认 2052 中文)

2052

KD_ORG_NUM

组织编码(可选)

KD_STARTUP_CHECK

启动时是否校验凭据(默认开启,0 关闭)

1

KD_STARTUP_CHECK_TIMEOUT

启动自检的超时秒数(默认 5)

5

第三方应用 ID 和密钥需在金蝶云星空管理端的「第三方系统登录授权」中申请。

环境变量配置说明

在金蝶云星空产品中配置第三方系统集成,需按以下步骤获取 5 个环境变量:

1. 登录金蝶云星空管理后台

  1. 使用管理员账号登录金蝶云星空系统,进入「系统管理」菜单下的「第三方系统登录授权」。

  2. 点击新增按钮,进入新增第三方系统登录授权功能页面。

  3. 点击”获取应用 ID”按钮,根据提示跳转到 Open 网站 的第三方系统登录授权页面,点击“新增授权”。

  4. Open 网站用户根据自身信息进行表单填写。

  5. 提交成功后会生成应用信息,复制应用信息填入金蝶云星空产品 - 第三方系统登录授权 - 获取应用 ID - 应用信息框中,点击“确认”按钮。

  6. 配置集成用户。

  7. 点击“保存”按钮,保存成功后点击“生成测试链接”,测试链接是否成功。

注意:当前数据库中心 ID(即账套 ID)可以通过生成测试链接弹出的信息中获取。

2. 获取 KD_SERVER_URL

金蝶服务器地址,格式为 https://your-server/k3cloud/,其中:

  • your-server 为金蝶云星空服务器的域名或 IP 地址

  • 一般以 /k3cloud/ 结尾

  • 示例:https://erp.company.com/k3cloud/

3. 获取 KD_ACCT_ID - 账套 ID

4. 获取 KD_USERNAME - 集成用户账号

使用具有相关模块操作权限的账号,不建议使用管理员账号。建议新建一个专门的集成用户账号,并为其分配所需的模块操作权限。

5. 获取 KD_APP_ID - 应用 ID 和 KD_APP_SEC - 应用密钥

注意:如需查看 APP_SECRET,可随时在应用详情中查看;如遗失,也可通过「重置」功能重新生成。

6. 验证配置

配置完成后,可通过以下命令验证连接:

cd kingdee-k3cloud-mcp
cp .env.example .env
# 编辑 .env 填写上述 5 个环境变量
uvx kingdee-k3cloud-mcp

如看到「MCP Server running」或类似输出,表示配置成功。


参考文档:金蝶云星空第三方系统集成配置指南

客户端配置

以下所有客户端配置都用 "command": "uvx" 免安装启动;若已 pip install kingdee-k3cloud-mcp,把 "command": "uvx" 改成 "command": "kingdee-k3cloud-mcp" 并删掉 "args" 中的包名(保留其余参数如 --mode readonly)即可,两种方式效果完全一致。

Claude Desktop

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

{
  "mcpServers": {
    "kingdee-k3cloud": {
      "command": "uvx",
      "args": ["kingdee-k3cloud-mcp"],
      "env": {
        "KD_SERVER_URL": "https://your-server/k3cloud/",
        "KD_ACCT_ID": "your_acct_id",
        "KD_USERNAME": "your_username",
        "KD_APP_ID": "your_app_id",
        "KD_APP_SEC": "your_app_secret",
        "KD_LCID": "2052"
      }
    }
  }
}

Claude Code

在项目目录下创建 .mcp.json

{
  "mcpServers": {
    "kingdee-k3cloud": {
      "command": "uvx",
      "args": ["kingdee-k3cloud-mcp"],
      "env": {
        "KD_SERVER_URL": "https://your-server/k3cloud/",
        "KD_ACCT_ID": "your_acct_id",
        "KD_USERNAME": "your_username",
        "KD_APP_ID": "your_app_id",
        "KD_APP_SEC": "your_app_secret",
        "KD_LCID": "2052"
      }
    }
  }
}

Cursor / Windsurf

Cursor:Settings → MCP → Add new MCP Server;Windsurf:编辑 ~/.codeium/windsurf/mcp_config.json。两者配置格式与 Claude Desktop 一致:

{
  "mcpServers": {
    "kingdee-k3cloud": {
      "command": "uvx",
      "args": ["kingdee-k3cloud-mcp"],
      "env": {
        "KD_SERVER_URL": "https://your-server/k3cloud/",
        "KD_ACCT_ID": "your_acct_id",
        "KD_USERNAME": "your_username",
        "KD_APP_ID": "your_app_id",
        "KD_APP_SEC": "your_app_secret",
        "KD_LCID": "2052"
      }
    }
  }
}

Cline / Continue / Cherry Studio 及其他 MCP 客户端

配置结构与上面完全一致——command + args + env,填入相同的 uvx kingdee-k3cloud-mcp 与 5 个环境变量即可。具体填写位置参考各客户端自己的 MCP 配置文档:

  • Cline(VS Code 插件):MCP Servers 面板 → Configure MCP Servers

  • Continue:~/.continue/config.jsonmcpServers 字段

  • Cherry Studio:设置 → MCP 服务器 → 添加服务器

Openclaw(IM / 移动端接入)

Openclaw 是支持 Skill 机制的 Agent 平台,可将本 MCP Server 接入其支持的 IM 渠道(如微信、Telegram),实现"发一句话查金蝶库存/单据"。配置方式同样是标准 MCP Server 声明(command/args/env),具体接入步骤参考 Openclaw 官方文档;配合 kingdee-k3cloud-skill 使用可进一步减少字段试错。IM 渠道的具体支持范围由 Openclaw 平台决定。

SSE 模式(远程共享)

如需多人共用同一个服务实例:

# 启动 SSE 服务(默认端口 8000)
FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=8080 uvx kingdee-k3cloud-mcp --transport sse

客户端连接地址:http://your-server:8080/sse

可通过 MCP_API_KEY 环境变量启用 Bearer Token 鉴权。

可用工具

查询工具(只读模式下可用)

工具

说明

query_bill

查询单据数据(返回二维数组)

query_bill_json

查询单据数据(返回 JSON,字段名作为 key)

count_bill

估算查询结果行数,用于大数据量查询前的探测

query_bill_all

自动翻页查询直到拉完或达到安全上限,返回合并结果

query_bill_to_file

自动翻页并流式写入本地文件(ndjson / csv),适合万行以上导出

query_bill_range

按日期自动分片(月/周/日)+ 翻页,适合跨月/跨年查询,支持落盘

view_bill

查看单条记录完整详情

query_metadata

查询表单字段结构(元数据)

写入工具(读写模式下可用)

工具

说明

save_bill

保存/新增单据

submit_bill

提交单据

audit_bill

审核单据

unaudit_bill

反审核单据

delete_bill

删除单据

execute_operation

执行自定义操作(禁用、反禁用等)

push_bill

下推单据(如销售订单→发货通知单)

所有工具通过 form_id 参数支持任意表单(物料、客户、供应商、销售订单、采购订单等)。

只读模式

通过 --mode readonlyMCP_MODE=readonly 限制服务器只暴露 8 个查询工具,防止 AI 误操作写入数据。

"args": ["kingdee-k3cloud-mcp", "--mode", "readonly"]

或:

"env": {
  "MCP_MODE": "readonly",
  ...
}

数据权限

MCP Server 本身不实现数据权限模型——它以「第三方系统登录授权」方式接入金蝶云星空,身份固定为 .env 中的 KD_ACCT_ID(账套)+ KD_USERNAME(集成用户)+ KD_ORG_NUM(组织,默认 0)。所有工具调用共享这一个身份,不支持按调用方切换用户,因此 AI 能看到什么数据,完全由这个集成用户在星空里的权限配置决定

在星空侧配置

  1. 使用专用集成用户(参见上文「不建议使用管理员账号」),进入「系统管理」→ 用户管理 → 用户授权

  2. 分配功能权限:允许访问的表单(如 SAL_SaleOrder)+ 允许的操作(查询/新增/提交/审核)

  3. 分配数据权限:可访问的组织范围、数据规则(按客户/部门/业务员等过滤)、字段权限

  4. 如需将查询默认限定在单一组织,可设置 KD_ORG_NUM

MCP 侧的两道补充闸门

这两者是权限的补充,不能替代星空侧的权限配置:

  • --mode readonly / MCP_MODE=readonly:全局禁用所有写入工具

  • MCP_API_KEY:SSE / streamable-http 传输下的连接鉴权(stdio 模式不涉及)

排查:权限问题的两种表现

现象

原因

处理

报错 500,错误信息原样透传

功能权限不足

在星空给集成用户补齐对应表单/操作权限

查询不报错,但行数偏少或为空

数据规则静默过滤

用同一集成用户账号登录星空 Web 端,跑同样的查询条件对比行数,确认是否被权限过滤

⚠️ 第二种情况容易被误判为"该时间段确实没有数据"——count_bill / query_bill* 拿到的是权限过滤后的结果,本身无法区分"真没数据"和"被权限挡了"。

调试

使用 MCP Inspector 可视化调试工具:

uvx mcp dev src/kingdee_k3cloud_mcp/server.py

架构说明

AI 助手(Claude Desktop / Claude Code / Cursor / Cline / Openclaw 等)
        │  MCP 协议
        ▼
kingdee-k3cloud-mcp(本项目)
        │  Kingdee Web API SDK
        ▼
金蝶云星空 K3Cloud

本项目使用官方金蝶 Python SDK(kingdee-cdp-webapi-sdk)与 K3Cloud API 通信,并通过 FastMCP 将其封装为标准 MCP 工具。

适用场景

金蝶 ERP 的 MCP 集成方案不止一种,各有侧重。本项目更适合以下场景:

  • 需要长期稳定运行的生产环境 AI Agent--mode readonly 提供只读边界;启动时自动校验凭据,配置错误在启动日志里就能看到,不必等到第一次工具调用;认证失败会返回明确的诊断而非误导文案,排障不靠猜

  • 数据量较大的查询/导出需求query_bill_all(自动翻页)、query_bill_to_file(流式落盘)、query_bill_range(日期分片)三个高阶原语专门处理万行级数据,避免让模型手写翻页循环

  • 有自定义字段 / 二次开发的金蝶部署query_metadata 工具可让 AI 在查询前自行发现表单的实际字段结构,不依赖预置字段表;配合 kingdee-k3cloud-skill 还可把企业专属的表单/字段/审批流封装成可复用的知识

  • 需要多种接入方式共存:同一个 Server 支持 stdio(本地 IDE)、SSE、streamable-http(远程共享部署),也可作为 Openclaw 工具接入 IM 渠道

如果你的场景是个人轻量试用、追求几分钟内跑通第一次查询,本项目同样支持 pip install 一步安装、开箱即用;具体选哪个方案,取决于你更看重「装上就能用」还是「长期在生产环境里稳定跑」。

为什么选择 MCP 而非直接调用?

让 AI 直接通过 Skill 构造 HTTP 请求访问 ERP,技术上可行,但会引入一系列安全隐患。MCP 的进程隔离模型从根本上解决了这些问题。

凭证不进入 LLM 上下文

MCP Server 以独立进程运行,凭证(KD_APP_SEC、服务器地址、账套 ID)通过环境变量注入,模型永远看不到这些信息。如果改用 Skill 直接调用,凭证必须出现在提示词或对话上下文中,一旦对话日志被导出、上下文被截图,或模型意外将其输出,机密就泄露了。

强制权限边界,而非依赖提示词约束

Skill 是"建议"——模型可能理解有误,也可能被精心构造的输入绕过。MCP Server 的 --mode readonly 则是物理限制:写入工具根本不存在于工具列表中,模型想用也用不了。这是"告诉实习生不要删数据"和"实习生根本没有 DELETE 权限"之间的本质区别。

网络隔离

MCP Server 部署在企业内网(或本机),可直接访问内部 ERP;LLM 运行在云端,从不直接接触内部网络。使用 stdio 传输时,所有 ERP 流量都在本机进程间流转,不经过任何外部网络。

完整的审计链路

每一次工具调用都经过 MCP Server,可在此统一记录操作类型、参数、时间戳和调用来源。直接调用方式下,AI 的每次请求对企业安全团队来说是不可见的黑盒。

最小权限原则

集成用户(KD_USERNAME)可在金蝶系统内被限制为特定模块、只读权限。MCP Server 继承并传递这些限制,LLM 无需感知权限边界,权限边界自然生效。

个人见解

将 LLM 视为不可信的外部调用方(而非可信的内部系统)是正确的零信任设计思路。MCP 层的存在,使 Skill 和 MCP 的职责分离清晰:Skill 负责"什么时候用、怎么用"(策略),MCP 负责"能做什么"(机制)。即使未来模型能力更强,或出现提示词注入攻击,最坏情况下的爆炸半径也被 MCP Server 的权限模型所限定,而不是依赖模型的"自觉"。


配套 Skill(支持 Skill 的 Agent)

kingdee-k3cloud-skill 是面向支持 Skill 机制的 AI Agent(Claude Code、openclaw、hermes 等)的配套 Skill,提供:

  • 常用表单 ID 速查表(BD_MATERIAL、SAL_SaleOrder 等)

  • 已验证字段名列表(避免字段名错误导致 500)

  • 日报、客户查询、销售分析、库存分析、订单追踪等完整工作流

安装后 Agent 可自动掌握金蝶 ERP 的正确查询方式,无需反复试错。

开发

git clone https://github.com/adamzhang1987/kingdee-k3cloud-mcp.git
cd kingdee-k3cloud-mcp
uv sync --dev

make test    # 运行测试(覆盖率报告)
make lint    # ruff check + mypy
make format  # ruff format + fix
make build   # uv build + twine check

安装 pre-commit hooks(可选,与 CI 保持一致):

uv run pre-commit install

贡献者

Made with contrib.rocks.

许可证

Apache License 2.0 — 详见 LICENSE

Available Tools

15 tools
audit_billB

审核金蝶云星空单据。

Args: form_id: 表单ID。如 BD_MATERIAL、SAL_SaleOrder 等 numbers: 单据编号,多个用逗号分隔。如 "MAT001,MAT002" ids: 单据内码ID,多个用逗号分隔(numbers 和 ids 二选一)

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
form_idYes
numbersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 responsibility for behavioral disclosure. It fails to mention that this is a mutating operation that changes document approval status, nor does it address permissions, reversibility, or side effects. The only behavioral note is the mutual exclusivity of numbers and ids, which is more of a parameter constraint than a behavioral trait.

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, consisting of a single purpose sentence followed by an Args list. It is front-loaded with the main action and avoids wasted words. However, it is very terse and could include a brief usage note without sacrificing clarity.

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 covers purpose and parameters but omits usage guidelines, behavioral impact, and system context. For a mutation tool with no annotations, this leaves significant gaps. The presence of an output schema lessens the need for return-value details but does not compensate for missing safety and usage information.

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 0%, so the description must compensate, and it does. It explains each parameter: form_id with concrete examples, numbers with comma-separated format, and ids with format and the explicit mutually exclusive relationship to numbers. This adds meaningful semantics beyond the raw 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 uses the specific verb '审核' (audit/approve) with the resource '单据' (documents), clearly indicating the action. It distinguishes from sibling tools like unaudit_bill and query_bill by focusing on the approval operation. Parameter examples like BD_MATERIAL and SAL_SaleOrder further clarify the scope.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as submit_bill or unaudit_bill. The description simply states the action and parameter details, leaving the agent reliant on sibling names to infer the appropriate context.

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

count_billA

估算某查询条件下的数据行数(不返回数据内容)。用于大数据量查询前的探测。

返回 JSON 格式: {"estimated_rows": N, "is_exact": true/false, "hint": "..."} 当 is_exact=false 时,实际行数 ≥ estimated_rows,建议按月/周分片查询。

Args: form_id: 表单ID。如 SAL_SaleOrder、PUR_PurchaseOrder、BD_MATERIAL 等 filter_string: 过滤条件。如 "FDate >= '2025-01-01' AND FDate < '2026-01-01'"

ParametersJSON Schema
NameRequiredDescriptionDefault
form_idYes
filter_stringNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses the return format including estimated_rows, is_exact, and hint, and explains the implication of is_exact=false (actual rows >= estimated). It also states that no data content is returned, which is a key behavioral trait. Given no annotations, this covers the main behavioral aspects.

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 organized with a clear purpose, usage, return format, and attributes. Each section provides useful info without unnecessary fluff, though it is somewhat verbose for a simple count tool.

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?

The tool has 2 parameters (both explained), an output schema, and the description covers the return fields, the estimation caveat, and usage guidance. Considering the moderate complexity, the description is fully sufficient.

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?

The input schema provides no descriptions (coverage 0%), but the description gives concrete examples for both form_id (e.g., SAL_SaleOrder) and filter_string (e.g., FDate condition), adding essential 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 it estimates the number of rows for a query condition (估算某查询条件下的数据行数) and explicitly notes it does not return data content (不返回数据内容), distinguishing it from sibling query 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?

It explicitly states the intended use as probing before large data volume queries (用于大数据量查询前的探测) and advises monthly/weekly sharding when the estimate is not exact (建议按月/周分片查询). It does not name alternatives explicitly but provides clear context for when to use this tool.

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

delete_billA

删除金蝶云星空单据。

Args: form_id: 表单ID。如 BD_MATERIAL、SAL_SaleOrder 等 numbers: 单据编号,多个用逗号分隔。如 "MAT001,MAT002" ids: 单据内码ID,多个用逗号分隔(numbers 和 ids 二选一)

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
form_idYes
numbersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'delete' but does not disclose that the operation is likely irreversible, whether it is a soft or hard delete, or whether audited bills can be deleted. This lack of warning is a significant gap for a destructive 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 and front-loaded: one primary purpose sentence followed by a compact parameter list. Every sentence earns its place, including the mutual-exclusion note. 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?

For a destructive tool with no annotations and no schema descriptions, the description is incomplete. It omits return values, error behavior, and critical constraints (e.g., cannot delete audited documents). The output schema may define the return shape, but the description does not cover operational context needed for safe 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?

The description adds valuable meaning beyond the bare schema: it provides examples for form_id (e.g., BD_MATERIAL, SAL_SaleOrder), clarifies comma-separated formats for numbers and ids, and explicitly states that numbers and ids are mutually exclusive. This compensates well for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states '删除金蝶云星空单据' (Delete Kingdee Cloud Galaxy document), which identifies the verb 'delete' and the resource type 'bill/document'. This unambiguously distinguishes it from sibling tools like audit_bill or save_bill, making the purpose specific and clear.

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 explicitly say when to use this tool versus alternatives. The purpose implies it is for deleting bills, but no guidance is given on prerequisites (e.g., bill must be unapproved) or exclusions. Usage is implied rather than stated, so it meets the minimum viable level.

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

execute_operationA

执行金蝶云星空单据操作(禁用、反禁用等)。

Args: form_id: 表单ID。如 BD_MATERIAL、SAL_SaleOrder 等 op_number: 操作类型。常用值:Forbid(禁用)、Enable(反禁用) numbers: 单据编号,多个用逗号分隔 ids: 单据内码ID,多个用逗号分隔(numbers 和 ids 二选一)

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
form_idYes
numbersNo
op_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must disclose effects, permissions, and reversibility, but it only lists parameters. It mentions operation types (禁用/反禁用) but does not explain what happens to the document, whether it requires authorization, or whether the operation can be undone.

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

Conciseness5/5

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

The description is compact: a one-line summary followed by a structured Args list. Each parameter line conveys necessary details with no redundant text.

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

Completeness2/5

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

The tool is an action-oriented operation with no annotations and only minimal context; the description lacks usage conditions, side effects, and error behavior. While the output schema exists and parameters are covered, the agent is not equipped to understand when this operation is appropriate or what consequences it carries.

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?

Despite 0% schema description coverage, the description comprehensively documents all four parameters with examples (form_id like BD_MATERIAL), common op_number values, and the split/selection rule for numbers vs ids. This adds essential meaning beyond the bare 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 opens with a clear action: '执行金蝶云星空单据操作(禁用、反禁用等)', specifying the resource (Kingdee Cloud Star documents) and concrete operation types. This distinguishes it from sibling tools like audit_bill/delete_bill, as execute_operation is a generic dispatch for operations such as Forbid/Enable, not covered by those specialized names.

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 choose execute_operation over sibling tools; there are no alternatives mentioned or exclusions. The description only explains parameter values, leaving the agent to infer applicability from examples like Forbid/Enable.

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

push_billA

下推金蝶云星空单据(如销售订单下推发货通知单)。

Args: form_id: 源单表单ID。如 SAL_SaleOrder、PUR_PurchaseOrder 等 numbers: 源单编号,多个用逗号分隔 ids: 源单内码ID,多个用逗号分隔(numbers 和 ids 二选一) rule_id: 转换规则ID(不填则用默认规则) target_form_id: 目标单据表单ID(不填则由规则决定) target_org_id: 目标组织ID,默认"0" target_bill_type_id: 目标单据类型ID(不填则用默认) is_enable_default_rule: 是否启用默认转换规则,默认"true" custom_params: 自定义参数JSON字符串。如 '{"FDATE":"2024-01-01"}'(不填则不传)

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
form_idYes
numbersNo
rule_idNo
custom_paramsNo
target_org_idNo0
target_form_idNo
target_bill_type_idNo
is_enable_default_ruleNotrue

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only lists parameters and examples, but does not disclose side effects, prerequisites, error behavior, or whether the operation is irreversible. 'Push' implies creating a downstream document, but no details are provided.

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 well-structured docstring with a short purpose line and an Args list. Each parameter is one line, making it easy to scan. Slightly verbose but not excessive; it 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?

The description covers all 9 parameters effectively, and an output schema exists so return values are not needed. However, it lacks usage context and behavioral side effects (e.g., what happens on error, whether it creates a new document or updates). Given the tool's complexity, more context is needed for full 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?

The schema has no parameter descriptions (coverage 0%), but the description thoroughly explains every parameter, including examples (form_id: SAL_SaleOrder), relationships (numbers and ids are mutually exclusive), and JSON formatting for custom_params. This fully compensates for the schema gap.

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 pushes Kingdee Cloud Star documents (e.g., sales order to delivery notice), with a specific verb and resource. This distinguishes it from sibling tools like query_bill or save_bill.

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. The description only explains parameters like '不填则用默认规则' (use default rule if not filled) but does not mention when to prefer this over related operations such as save_bill or execute_operation.

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

query_billA

查询金蝶云星空单据数据(返回二维数组)。

Args: form_id: 表单ID。常用值: BD_MATERIAL(物料)、BD_Customer(客户)、BD_Supplier(供应商)、 SAL_SaleOrder(销售订单)、PUR_PurchaseOrder(采购订单)、 STK_InStock(入库单)、STK_OutStock(出库单)、GL_VOUCHER(凭证) field_keys: 查询字段,逗号分隔。如 "FName,FNumber" filter_string: 过滤条件。如 "FNumber like 'MAT%'" order_string: 排序字段。如 "FNumber ASC" top_count: 本次最多返回行数,默认100。映射到金蝶 TopRowCount(绝对终止行号 = start_row + top_count), 同时作为金蝶 Limit(单次页大小)。设为 0 表示不限制行数(仅靠 limit 控制)。 start_row: 起始行号,默认0。翻页时传入上一次返回的 next_start_row。 limit: 仅在 top_count=0 时生效,作为金蝶 Limit 页大小上限,默认2000。 top_count>0 时此参数被忽略(页大小由 top_count 决定)。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
form_idYes
start_rowNo
top_countNo
field_keysYes
order_stringNo
filter_stringNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Absent annotations, the description reveals essential behavior: top_count maps to TopRowCount and also acts as page size; limit is only honored when top_count=0; start_row supports pagination via next_start_row. It also states the return type. It does not mention authentication or side effects, but 'query' implies 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?

Structured as an Args docstring, it front-loads function purpose and uses compact bullet-like entries for each parameter with examples. It is slightly long but every sentence contributes to clarification.

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?

Covers all 7 parameters with semantics and interaction rules, and specifies return format. Since an output schema exists, return values are handled there. The only significant absence is sibling-tool usage guidance, which is already penalized in usage_guidelines.

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 provides only property names with zero descriptions. The description compensates by explaining form_id common values, field_keys comma-separated format, filter_string and order_string examples, top_count semantics including Kingdee TopRowCount/Limit interaction, start_row pagination, and limit condition.

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

Purpose5/5

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

The description states '查询金蝶云星空单据数据(返回二维数组)' clearly identifying the operation (query), resource (Kingdee Cloud Star documents), and return format (2D array). It differentiates from siblings like query_bill_json (JSON output) and count_bill (count).

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?

Despite thorough parameter explanations, the description never mentions when to prefer query_bill over other sibling tools such as query_bill_json, view_bill, or query_bill_all. There is no alternative guidance or exclusion criteria.

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

query_bill_allA

自动翻页查询直到拉完或达到 max_rows 安全上限。

适合估算 ≤ 数千行的场景。大数据量(> 5000 行)请用 query_bill_to_file(落盘) 或 query_bill_range(日期分片),避免超过 MCP 1 MB 返回限制。

返回格式: {"rows": [...], "row_count": N, "exhausted": true/false, "next_start_row": N, # 仅 exhausted=false 时 "hint": "..."} # 仅 exhausted=false 时

Args: form_id: 表单ID。如 SAL_SaleOrder、PUR_PurchaseOrder、BD_MATERIAL 等 field_keys: 查询字段,逗号分隔。如 "FBillNo,FDate,FAmount" filter_string: 过滤条件。如 "FDate >= '2025-01-01'" order_string: 排序字段。如 "FDate ASC" max_rows: 安全上限,默认 20000;超过则提前终止并返回 exhausted=false page_size: 每页行数,默认 2000,建议不超过 2000

ParametersJSON Schema
NameRequiredDescriptionDefault
form_idYes
max_rowsNo
page_sizeNo
field_keysYes
order_stringNo
filter_stringNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/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 pagination loop, early termination via max_rows, exhausted flag semantics, next_start_row continuation, and the MCP response limit rationale. This is rich behavioral context beyond a simple 'query' operation.

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

Conciseness5/5

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

The description is well-structured with clear sections: purpose, usage guidance, return format, and parameter breakdown. It is front-loaded with the core behavior, and every line adds value with no filler content. The use of bullets and examples enhances readability.

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?

The tool has moderate complexity (auto-pagination), but the description covers all aspects: purpose, when to use, parameter semantics, return format, and edge cases (exhausted=false, next_start_row). It is self-contained and sufficient for a correct invocation, especially given the absent annotations and schema descriptions.

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 0%, but the description thoroughly explains all 6 parameters with concrete examples (e.g., form_id: SAL_SaleOrder, field_keys: FBillNo,FDate,FAmount, filter_string: FDate >= '2025-01-01'). It also clarifies default values and constraints for max_rows and page_size, fully compensating for the lack of 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 performs auto-paginated queries until all records are fetched or max_rows is reached. It distinguishes itself from siblings by explicitly naming alternatives for large datasets (query_bill_to_file, query_bill_range) and defines the exact resource (bills) and operation (query).

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?

The description explicitly states that this tool is suitable for estimating ≤ 5000 rows and directs users to query_bill_to_file or query_bill_range for larger datasets, citing the MCP 1 MB return limit. This provides clear when-to-use and when-not-to-use guidance with alternatives.

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

query_bill_jsonA

查询金蝶云星空单据数据(返回JSON格式,字段名作为key)。

与 query_bill 的区别:返回结果是JSON对象数组,每条记录的字段名作为key,更易读。

Args: form_id: 表单ID。常用值: BD_MATERIAL(物料)、BD_Customer(客户)、BD_Supplier(供应商)、 SAL_SaleOrder(销售订单)、PUR_PurchaseOrder(采购订单)、 STK_InStock(入库单)、STK_OutStock(出库单)、GL_VOUCHER(凭证) field_keys: 查询字段,逗号分隔。如 "FName,FNumber,FCreateOrgId,FUseOrgId" filter_string: 过滤条件。如 "FNumber like 'MAT%'" order_string: 排序字段。如 "FNumber ASC" top_count: 本次最多返回行数,默认100。映射到金蝶 TopRowCount(绝对终止行号 = start_row + top_count), 同时作为金蝶 Limit(单次页大小)。设为 0 表示不限制行数(仅靠 limit 控制)。 start_row: 起始行号,默认0。翻页时传入上一次返回的 next_start_row。 limit: 仅在 top_count=0 时生效,作为金蝶 Limit 页大小上限,默认2000。 top_count>0 时此参数被忽略(页大小由 top_count 决定)。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
form_idYes
start_rowNo
top_countNo
field_keysYes
order_stringNo
filter_stringNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility. It thoroughly explains pagination via start_row and next_start_row, the dual role of top_count (TopRowCount and page size), and the conditional behavior of limit. This exceeds typical transparency for a query 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 well-structured: a one-sentence purpose, a one-sentence distinction, then a clear Args list. Each sentence earns its place, and the parameter details are dense but readable. No filler or 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 7-parameter tool with no annotations and no schema descriptions, this description is unusually complete. It covers return format, pagination, parameter semantics, and sibling differentiation. The presence of an output schema means the return structure doesn't need further explanation, so the description is sufficient.

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 0%, but the description compensates fully. Every parameter is explained with concrete examples: form_id lists common values, field_keys shows a sample, top_count explains its Kingdee mapping and edge cases, and limit's conditional behavior is clarified. This goes far beyond what the bare schema properties 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 tool queries Kingdee Cloud document data and returns JSON format with field names as keys. It explicitly differentiates from the sibling query_bill by highlighting the output format difference, making the purpose specific and distinct.

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 contrasts with query_bill, explaining when the JSON format is preferable. However, it does not list all alternative tools or provide explicit exclusions for when not to use this tool, so it stops short of full usage guidance.

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

query_bill_rangeA

按日期自动切片 + 翻页,适合跨月/跨年查询。

将 [date_from, date_to) 按 chunk 切成 N 段,每段独立翻页拉取。 output_path 为空时内联返回(受 MCP 1 MB 限制,适合小跨度); 非空时流式落盘,适合大跨度(年级)查询。

返回格式(内联): {"rows": [...], "row_count": N, "chunks": K, "exhausted": true} 返回格式(落盘): {"path": "...", "row_count": N, "bytes": M, "chunks": K, "format": "ndjson"} 若中途出错:{"error": "...", "path": "...", "row_count": <已写入>, "bytes": M}

Args: form_id: 表单ID。如 SAL_SaleOrder、PUR_PurchaseOrder 等 field_keys: 查询字段,逗号分隔 date_field: 日期字段名。通常是 FDate 或 FCreateDate date_from: 起始日期(含),YYYY-MM-DD date_to: 结束日期(不含),YYYY-MM-DD extra_filter: 额外过滤条件(与日期条件 AND 拼接) chunk: 切片粒度,month(默认)/ week / day output_path: 落盘路径(绝对路径)。空=内联返回 page_size: 每页行数,默认 2000

ParametersJSON Schema
NameRequiredDescriptionDefault
chunkNomonth
date_toYes
form_idYes
date_fromYes
page_sizeNo
date_fieldYes
field_keysYes
output_pathNo
extra_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses key behaviors: automatic date slicing, independent pagination per chunk, the 1 MB inline limit, streaming write behavior when output_path is set, and error handling with partial row counts. This is exceptionally transparent.

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 one-line summary, behavior explanation, output format examples, and a parameter list. It is slightly long but every section earns its place. The return format examples are slightly redundant given the output schema exists, but they provide valuable concrete context.

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 complex tool with 9 parameters and chunking logic, the description is complete. It covers all parameters, behavioral nuances, output modes, error handling, and format details. An agent can confidently select and invoke this tool correctly based on this description alone.

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?

The input schema has zero description coverage, but the description compensates fully. Every parameter is explained with meaning and examples: form_id (e.g., SAL_SaleOrder), field_keys (comma-separated), date_field (e.g., FDate), date_from/to (inclusive/exclusive), extra_filter (AND-combined), chunk (month/week/day), output_path (empty vs absolute path), and page_size (default 2000).

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 automatically slices a date range into chunks and paginates through each chunk, making it suitable for cross-month/year queries. This distinguishes it from siblings like query_bill (likely single-range) and query_bill_all (likely without chunking).

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 specifies that it is suited for cross-month/year queries and explains the trade-off between inline return (MCP 1 MB limit) and streaming to file for large spans. It does not explicitly name alternative tools, but the context is clear enough for an agent to decide when to use it.

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

query_bill_to_fileA

自动翻页并流式写入本地文件,适合大数据量导出(万行以上)。

不在内存中累积数据,写入完成后返回文件路径和统计信息。 文件可用 Read 工具抽检,或交由 pandas/polars 处理。

返回格式: {"path": "...", "row_count": N, "bytes": M, "format": "ndjson"} 若中途出错:{"error": "...", "path": "...", "row_count": <已写入>, "bytes": M}

Args: form_id: 表单ID。如 SAL_SaleOrder、PUR_PurchaseOrder、BD_MATERIAL 等 field_keys: 查询字段,逗号分隔。如 "FBillNo,FDate,FAmount" filter_string: 过滤条件。如 "FDate >= '2025-01-01'" output_path: 输出文件绝对路径。如 "/tmp/orders.ndjson" format: 输出格式,ndjson(每行一个 JSON 对象)或 csv,默认 ndjson page_size: 每页行数,默认 2000 max_rows: 最大写入行数,默认 500000;超过则截断并正常返回

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNondjson
form_idYes
max_rowsNo
page_sizeNo
field_keysYes
output_pathNo
filter_stringNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility. It discloses auto-pagination, streaming writes, no in-memory accumulation, return format with row_count/bytes, error behavior with partial rows, and max_rows truncation—all beyond what the schema shows.

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

Conciseness5/5

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

The description is front-loaded with purpose and use case, followed by a concise return-format spec and a clearly structured Args list. Every section earns its place given the tool's complexity (7 parameters and rich 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 output schema is included in the description (@return/error shape) and the parameters are fully documented, the description covers the entire invocation lifecycle: when to use, how to call, and what to expect on success/failure. No major gaps remain.

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 description coverage is 0%, so the description must compensate fully. It explains every parameter with concrete examples (e.g., form_id like 'SAL_SaleOrder', filter_string like "FDate >= '2025-01-01'"), defaults, and the output_path example. This is exemplary.

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

Purpose5/5

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

The description opens with a specific verb+resource+outcome: '自动翻页并流式写入本地文件' (auto-paginate and stream-write to local file). It clearly distinguishes from siblings like query_bill and view_bill by emphasizing file output for large exports.

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 suitability for large data exports ('适合大数据量导出(万行以上)') and explains the streaming/no-memory-accumulation advantage. It mentions the file can be read by Read tool or pandas/polars, but does not explicitly state when to avoid this tool or name alternatives.

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

query_metadataA

查询金蝶云星空表单的元数据(字段结构信息)。

用于获取某个表单有哪些字段、字段类型等信息,便于构造查询和保存参数。

Args: form_id: 表单ID。如 SAL_SaleOrder、PUR_PurchaseOrder、BD_MATERIAL 等

ParametersJSON Schema
NameRequiredDescriptionDefault
form_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It clearly indicates this is a read-only metadata query ('查询元数据') and explains what information it retrieves (field names, types). It does not go into permissions or side effects, but the query nature is evident and the purpose is well specified.

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 and well-structured: a clear first sentence stating the purpose, a second sentence giving the use case, and a brief Args section. Every sentence earns its place, and the structure is front-loaded with the key 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 the tool's simplicity (one parameter, no annotations) and the existence of an output schema, the description is quite complete. It explains what the tool does, why it is useful, and defines the parameter. It lacks mention of limitations or alternatives, but these are not critical for this straightforward metadata query.

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 one required parameter 'form_id' with no description, but the tool description compensates by explaining that it is the form ID and providing examples such as SAL_SaleOrder, PUR_PurchaseOrder, BD_MATERIAL. This adds significant 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 that the tool queries metadata (field structure information) for Kingdee Cloud Star forms. It specifies the verb '查询' (query) and the resource '元数据' (metadata), distinguishing it from sibling tools that operate on bill data directly.

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 the context of use: to obtain field information for constructing query and save parameters. This makes the tool's use case clear, though it does not explicitly mention alternatives or when not to use it. It is more than implied usage, but lacks explicit exclusions.

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

save_billA

保存金蝶云星空单据(新增或更新)。

Args: form_id: 表单ID。如 BD_MATERIAL、SAL_SaleOrder 等 model_data: JSON格式的单据数据。示例(保存物料): {"Model": {"FCreateOrgId": {"FNumber": "100"}, "FNumber": "MAT001", "FName": "物料名称"}} 如果传入的JSON中没有"Model"键,会自动包装。

ParametersJSON Schema
NameRequiredDescriptionDefault
form_idYes
model_dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full behavioral disclosure burden. It does mention the auto-wrap behavior for Model keys, which is a positive detail, but it does not disclose permissions, side effects of overwriting data, or error handling. For a mutation 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?

The description is compact: a clear one-sentence purpose followed by a two-item Args list. Each line adds value, from the purpose to the examples and the auto-wrap note. It is front-loaded and free of unnecessary filler.

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

Completeness4/5

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

The description covers both parameters with examples and explains the create/update nature. With an output schema present, not detailing return values is acceptable. However, it lacks mention of prerequisites (e.g., existing form IDs) or failure modes, leaving minor context gaps.

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?

The input schema has no parameter descriptions (0% coverage). The description compensates thoroughly by explaining both form_id and model_data, providing a concrete JSON example, and noting the automatic wrapping of data without a Model key. This goes far beyond the bare schema type declarations.

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 '保存金蝶云星空单据(新增或更新)' (save Kingdee Cloud documents, create or update), which specifies the verb and resource. It includes concrete examples of form IDs (BD_MATERIAL, SAL_SaleOrder), distinguishing this from sibling tools like query_bill and submit_bill.

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

Usage Guidelines3/5

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

The description implies usage for creating or updating documents but provides no explicit guidance on when to use alternatives like submit_bill or audit_bill. It lacks exclusion conditions or scenarios where this tool should not be used, relying instead on the tool name and basic context.

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

submit_billB

提交金蝶云星空单据。

Args: form_id: 表单ID。如 BD_MATERIAL、SAL_SaleOrder 等 numbers: 单据编号,多个用逗号分隔。如 "MAT001,MAT002" ids: 单据内码ID,多个用逗号分隔(numbers 和 ids 二选一)

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
form_idYes
numbersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It merely says 'submit' without mentioning preconditions, whether it's a write operation, potential irreversibility, required permissions, or what state the document transitions to. The lack of behavioral context is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is compact and well-structured, with a one-line purpose followed by a clear Args list. It avoids fluff. However, it is quite terse and could benefit from a usage sentence, though that is more a completeness issue than a conciseness one.

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 is a mutation operation with no annotations and an output schema, the description should explain the submission lifecycle, required prior states, and effects. It does not. For an ERP tool, this is insufficient for an agent to make an informed invocation, despite the output schema covering return values.

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 0% description coverage, but the description adds meaningful context: form_id is given with concrete examples, numbers is explained with format and examples, and ids is clarified, including the important constraint that numbers and ids are mutually exclusive. This goes well beyond the bare schema.

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

Purpose4/5

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

The description states a specific verb ('提交' = submit) and resource ('金蝶云星空单据' = Kingdee Cloud documents). This clearly distinguishes it from sibling tools like audit, save, or delete. However, it doesn't explicitly differentiate 'submit' from 'submit for approval' or describe the exact workflow state change, leaving some ambiguity for non-domain users.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as audit_bill or save_bill. The description only states what it does, not when to choose it. No exclusion criteria or alternative scenarios are mentioned.

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

unaudit_billA

反审核金蝶云星空单据。

Args: form_id: 表单ID。如 BD_MATERIAL、SAL_SaleOrder 等 numbers: 单据编号,多个用逗号分隔。如 "MAT001,MAT002" ids: 单据内码ID,多个用逗号分隔(numbers 和 ids 二选一)

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
form_idYes
numbersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It merely states the action (unaudit) without explaining side effects (e.g., that this is a state-changing operation, requires certain permissions, may fail if already un-audited, or is irreversible). It does not describe the outcome or return value. The parameter constraint about numbers/ids is helpful but does not cover the tool's behavioral impact.

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 and well-structured: a single sentence stating the purpose, followed by a formatted Args section. No unnecessary detail or fluff. The parameter documentation is organized with clear examples and constraints, making it easy to scan and understand.

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?

Although an output schema exists (so return value explanation is not required), the description lacks critical context for a mutation tool. It does not differentiate from sibling tools, does not explain when to use it, and does not disclose side effects or prerequisites. For a tool that alters document state, this is a significant gap. The description covers parameters well but omits the broader operational context users need.

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?

The schema has 0% description coverage, so the description's Args section carries the full burden. It clearly explains each parameter: form_id provides examples (BD_MATERIAL, SAL_SaleOrder), numbers is described as document numbers with comma-separated examples, and ids as internal IDs. It also explicitly states that numbers and ids are mutually exclusive (二选一), which is crucial operational semantics beyond the schema's property definitions.

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: '反审核金蝶云星空单据' (unaudit Kingdee Cloud Starry Sky documents). It uses a specific verb ('unaudit') and resource (Kingdee Cloud documents), distinguishing it from sibling tools like audit_bill, delete_bill, and submit_bill. The purpose is immediately understandable.

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 does not mention that audit_bill is the inverse operation, nor does it explain scenarios where unaudit_bill is preferred over delete_bill or push_bill. The only usage hint is the parameter constraint that numbers and ids are mutually exclusive (二选一), which is parameter-level rather than tool-level guidance.

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

view_billA

查看金蝶云星空单条记录的完整详情。

通过编号或内码查看单条记录的所有字段信息。

Args: form_id: 表单ID。如 BD_MATERIAL、SAL_SaleOrder 等 number: 单据编号。如 "MATERIAL001"(number 和 bill_id 二选一) bill_id: 单据内码ID(number 和 bill_id 二选一)

ParametersJSON Schema
NameRequiredDescriptionDefault
numberNo
bill_idNo
form_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It explicitly states '查看' (view), indicating a read-only behavior, and promises '所有字段信息' (all field information), describing what the agent can expect. No side effects or prerequisites are mentioned, but for a straightforward view operation this is reasonable 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 concise and structured. The main purpose is stated in two brief sentences, followed by a compact parameter list with examples. Every sentence contributes value and there is no redundant 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?

The description covers purpose, usage, and all parameters effectively. Since an output schema exists, the absence of return-value explanations is acceptable. The only notable gap is the lack of explicit sibling differentiation, but the 'single record' focus already suggests the tool's niche, making it fairly complete.

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 description coverage is 0%, but the description fully compensates. It defines form_id with examples (BD_MATERIAL, SAL_SaleOrder), explains number as the document number with an example, and clarifies bill_id as the internal ID, plus the mutual exclusivity rule. This adds substantial semantic meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's function: '查看金蝶云星空单条记录的完整详情' (view complete details of a single record). It specifies a precise verb (view), a resource (bill record), and a scope (single record), which distinguishes it from sibling tools like query_bill that likely handle lists or broader queries.

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 how to use the tool: by number or internal ID, with the constraint that number and bill_id are mutually exclusive. It implies the appropriate context (when you need complete details of one specific record) but does not explicitly name alternatives or state when not to use it, so it falls slightly short of full exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv1.3.2
    • First observedaudit_bill
    • First observedcount_bill
    • First observeddelete_bill
    • First observedexecute_operation
    • First observedpush_bill
    • First observedquery_bill
    • First observedquery_bill_all
    • First observedquery_bill_json
    • First observedquery_bill_range
    • First observedquery_bill_to_file
    • First observedquery_metadata
    • First observedsave_bill
    • First observedsubmit_bill
    • First observedunaudit_bill
    • First observedview_bill

TDQS

A3.9/5.0

Scored across 15 tools

Disambiguation3/5

Multiple query tools (query_bill, query_bill_json, query_bill_all, query_bill_to_file, query_bill_range) overlap in purpose; an agent must read descriptions to choose correctly. The non-query tools are distinctly scoped, but the query cluster creates ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (query_bill, save_bill, delete_bill, audit_bill), making them predictable and easy to navigate.

Tool Count5/5

15 tools is within the ideal range for an ERP-focused server, covering all major operations without unnecessary bloat or trivial additions.

Completeness5/5

The set covers the full bill lifecycle (save, submit, audit, unaudit, delete), query/selection variants, metadata exploration, and file export, leaving no critical gaps for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that enables AI assistants like Claude to interact with Odoo ERP systems through natural language, allowing users to search, create, update, and manage business data in their Odoo instance.
    384
    Mozilla Public 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI assistants to interact with Odoo ERP, allowing natural language queries, record creation, updates, and deletions.
    LGPL 3.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for KingBase (PostgreSQL-compatible) databases, enabling AI assistants to query and manage database schemas, tables, and data with configurable access control.
    11
    19
    5
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to operate Kingdee Cloud Star ERP via natural language, including querying, creating, submitting, auditing, and deleting business documents.
    81
    76
    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/adamzhang1987/kingdee-k3cloud-mcp'

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