Skip to main content
Glama

玄上画布插件(xuanshang-canvas)

让 Claude Code、Codex 等 AI 工具,用同一套规则操作你电脑上正在运行的「玄上无限画布」(也支持玄上内部版):新建项目和认证分组、查项目、上传认证图片和参考视频、把素材放到画布上、建 Seedance 视频节点、提交生成、样片转成片、查进度。

  • 不用每次启动:在 AI 工具里装一次,以后打开 AI 工具就会在后台自动启动插件,插件再自己去找开着的画布。

  • 不碰你的密钥:插件不读取、不保存任何 API Key。所有请求都经过你本机的画布,用的是画布里登录的账号和积分。

  • 只在你下指令时花积分:提交生成、转成片只在你明确说要生成时才执行,不会自己主动提交。


一、安装:让 AI 帮你装

准备:Windows 电脑,装好并能正常打开「玄上无限画布」,在画布里登录自己的账号;装好 Claude Code 或 Codex。

把下面这段话原样发给 Claude Code 或 Codex,它会自己把插件装好:

请帮我安装玄上画布插件:按 https://github.com/pencil102411-cell/xuanshang-canvas 这个仓库 README 里「给 AI 的安装步骤」操作,装完运行自检,把结果告诉我。

安装过程中 AI 可能会请你批准运行命令,点允许就行。装好以后:

  • Claude Code:新开一个会话;

  • Codex:重启 Codex。

然后说一句「用 canvas_status 看看画布连上了没有」,看到「已连接」和画布名字,就装好了。


Related MCP server: Seedance MCP

二、给 AI 的安装步骤

这一节是写给 AI 看的,使用者不用自己操作。所有命令都在普通权限的 PowerShell 里运行。插件仓库:https://github.com/pencil102411-cell/xuanshang-canvas

第 1 步:确认电脑上有 uv

插件靠 uv(Python 环境管理工具)运行。先检查:

@((Get-Command uv.exe -ErrorAction SilentlyContinue).Source, "$env:USERPROFILE\.local\bin\uv.exe", "$env:LOCALAPPDATA\Microsoft\WinGet\Links\uv.exe") | Where-Object { $_ -and (Test-Path $_) }

什么都没输出就是没装,运行 winget install --id=astral-sh.uv -e 安装;winget 不可用时改用 powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"。装完不用重启:插件的启动脚本会自己去这些位置找 uv。

第 2 步(Claude Code):用插件市场安装

claude plugin marketplace add https://github.com/pencil102411-cell/xuanshang-canvas
claude plugin install xuanshang-canvas@xuanshang-tools

然后运行自检,顺便把依赖提前装到插件的数据目录(第一次要一两分钟):

$root = (Get-ChildItem "$env:USERPROFILE\.claude\plugins\cache\xuanshang-tools\xuanshang-canvas" -Directory | Sort-Object LastWriteTime -Descending | Select-Object -First 1).FullName
$env:UV_PROJECT_ENVIRONMENT = "$env:USERPROFILE\.claude\plugins\data\xuanshang-canvas-xuanshang-tools\venv"
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\scripts\start-mcp.ps1" --check

画布开着时会显示「已连接」;画布没开会提示先打开画布,这也说明插件本身装好了。最后告诉用户新开一个会话。插件自带规则说明(技能 xuanshang-canvas),不用另外放规则文件。

可选:用户同意的话,把 adapters/claude-code/permissions.json 里 plugin 那组的 permissions 合并到 ~/.claude/settings.json(所有插件工具直接放行,不再逐个弹出批准)。

第 2 步(Codex):下载插件文件夹并登记

  1. 下载插件到 %USERPROFILE%\xuanshang-canvas(不需要 git)。升级时先删掉旧文件夹:

    $zip = "$env:TEMP\xuanshang-canvas.zip"; $tmp = "$env:TEMP\xuanshang-canvas-unzip"
    Invoke-WebRequest https://github.com/pencil102411-cell/xuanshang-canvas/archive/refs/heads/main.zip -OutFile $zip
    Remove-Item $tmp -Recurse -Force -ErrorAction SilentlyContinue; Expand-Archive $zip $tmp
    Move-Item "$tmp\xuanshang-canvas-main" "$env:USERPROFILE\xuanshang-canvas"
  2. 自检并提前装好依赖:

    powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\xuanshang-canvas\scripts\start-mcp.ps1" --check
  3. 把 adapters/codex/config.toml 的内容加到 %USERPROFILE%\.codex\config.toml 末尾,把里面的 C:/Users/你的用户名/xuanshang-canvas 换成实际路径(用正斜杠)。已经有 [mcp_servers.xuanshang-canvas] 这一段时,替换掉旧的。这段配置把等待时间调长了(Codex 默认启动只等 10 秒、每次调用只等 60 秒,不够用)。旧版配置里如果有 [mcp_servers.xuanshang-canvas.tools.submit_generation]、[mcp_servers.xuanshang-canvas.tools.create_final_video] 这两小段,一起删掉。

  4. 把 adapters/codex/skills/xuanshang-canvas 整个文件夹复制到 %USERPROFILE%\.agents\skills\(没有就新建)。这是给 Codex 的规则说明。

  5. 告诉用户重启 Codex。

第 2 步(其他 MCP 工具:Cursor、Claude Desktop、Gemini CLI、VS Code 等)

按 Codex 的第 1、2 步下载并自检,再照 adapters/generic/ 里的示例添加配置(VS Code 用 vscode-mcp.json,其他用 mcp.json),把路径换成实际位置。这些工具没有专门的规则文件,规则主要靠插件代码强制执行和工具说明。


三、日常怎么用

直接用中文跟 AI 说要做什么,例如:

  • 「新建一个项目,叫『第09集-场12』」

  • 「在第09集-场12 这个项目里建三个认证分组:人物、场景、参考视频」

  • 「看看 16-20 测试这个项目里有哪些视频节点」

  • 「把 D:\素材\司徒陌-面部.png 传到 16-20 测试项目的人物分组,认证完放到画布上」

  • 「把 D:\预演\镜127.mp4 作为参考视频上传认证,放到画布上」

  • 「新建一个视频节点,叫『镜127』,接司徒陌两张图和刚才的参考视频,提示词是……」

  • 「提交镜127」(直接提交,会花积分)

  • 「镜127 的样片好了没有?」「把这个样片转成片」

AI 会按插件的规则来做,做完会告诉你结果、核对情况和需要注意的地方。


四、插件会替你守住的规则(摘要)

完整规则见 rules/RULES.md,这里说最常碰到的几条:

规则

说明

只加不改不删

只新增节点和连线;要改就新建一个,重名自动加 -v2、-v3,旧的保留

引用写法跟画布一致

统一写成半角 (图片1)、(视频1),和画布界面保存后的样子一样;@图片1、全角 (图片1) 会自动转过来

每一处引用都带括号

正文里写「背景采用图片11」画布认不出,必须写 (图片11);「图片7、8」「图片1—8」这类省略写法也要展开。插件会逐处检查,指出第几行哪一处

引用和素材对得上

编号不能超过接入的素材数,接入的每个素材都要被引用,否则拒绝创建

原质量上传

按原文件上传并核对大小和尺寸;长边超过 6000px 的图照样上传,画布会自动缩到长边 5800px,结果里会写清楚缩到了多大

参考视频要认证

本地参考视频先上传认证;画布上已经生成好的视频可以直接当参考

只在你下指令时花积分

提交生成、转成片只在你明确要求时执行;同一节点已有任务在跑时拒绝,避免重复扣积分

提交后不盯进度

你问进度时才去查


五、配置项(可选)

不配置也能用。要改默认参数,新建 C:\Users\你的用户名\AppData\Roaming\xuanshang-canvas\config.json,只写要改的项:

{
  "video_defaults": {
    "model": "Doubao-Seedance-2.5",
    "seedanceMode": "multimodal",
    "resolution": "draft",
    "ratio": "21:9",
    "seed": 1,
    "outputFormat": "mp4",
    "webSearch": false,
    "duration": 5
  },
  "certify_wait_seconds": 50,
  "size_tolerance": 0.05
}

配置项

意思

默认

video_defaults

新建视频节点时没指定的参数用这些

见上

canvas_port

写死画布端口(一般不用,插件会自己找)

不写

certify_wait_seconds

上传后最多等认证多少秒

50

size_tolerance

上传后大小差多少以内只提示不报错

0.05(5%)

也可以用环境变量:CANVAS_PORT、XUANSHANG_CERTIFY_WAIT_SECONDS;配置文件位置可用 XUANSHANG_CANVAS_CONFIG 指定。

等待时间要比 AI 工具自己的等待上限短。Codex 按上面的配置是 300 秒;如果你把 Codex 的 tool_timeout_sec 调得更长,这里也可以跟着调长。


六、常见问题

提示「请先打开玄上无限画布」:画布没开,或者刚开还没启动完。打开画布、等界面出来后再试。

提示「同时开着 2 个画布」:比如无限画布和内部版都开着。告诉 AI 用哪个,它会带上端口号选定;只开一个就不会问。

上传后说「认证中」:玄上那边认证慢,插件最多等 50 秒就先返回。过一会儿让 AI 用 list_certified_groups 查,变成「已认证」后再放到画布上。

结果里写着「公共图床」:玄上存储上传失败时,画布会自动改传到公共图床,文件会在公网上。是否继续用这个素材由你决定。

参考视频上传或生成时报错:Seedance 对参考视频有格式、时长、大小、分辨率限制,具体数值还没查清。插件会把画布的原始报错原样给你,照着报错改视频即可。

提示「画布版本和插件不兼容」:画布升级后内部接口变了。把报错发给插件维护者。

Claude Code / Codex 说插件启动失败(比如 Connection closed):跟 AI 说「按玄上画布插件 README 里给 AI 的安装步骤,重新检查 uv 并运行自检」。自检会把依赖装好并显示具体报错。第一次启动要下载依赖,网络慢时可能超时,自检通过后再新开会话试一次。


七、已验证的画布版本

程序

构建号

状态

玄上内部版

20260923203739

已实测:读取、建项目、上传认证、放节点、建视频节点

玄上无限画布

20260923203516

和内部版同一套接口,待实测

canvas_status 会显示当前画布的构建号和是否实测过。


八、给维护者

xuanshang-canvas/
├── .claude-plugin/          # Claude Code 插件清单和插件市场清单(仓库根目录就是插件)
├── .mcp.json                # Claude Code 插件启动 MCP 服务的配置
├── skills/xuanshang-canvas/ # Claude Code 规则文件(自动生成)
├── src/xuanshang_canvas/
│   ├── core/                # 核心库:连接画布 + 统一规则,所有写入都经过这里
│   └── mcp_server/          # MCP 服务(所有 AI 工具共用)
├── rules/RULES.md           # 规则源文件(唯一来源)
├── docs/api-notes.md        # 画布内部接口记录
├── adapters/
│   ├── claude-code/         # 权限建议
│   ├── codex/               # config.toml 片段、规则文件(自动生成)
│   └── generic/             # 其他 MCP 工具的配置示例
├── scripts/                 # start-mcp.ps1 启动插件;build_adapters.py 生成规则文件
├── pyproject.toml           # 直接依赖,固定版本
└── uv.lock                  # 全部间接依赖的固定版本
  • 改规则只改 rules/RULES.md,然后运行 python scripts/build_adapters.py 重新生成各家的规则文件;--check 只检查是否一致。MCP 服务的使用说明直接读 RULES.md。

  • 所有 AI 工具都通过 scripts/start-mcp.ps1 启动插件。它自己去 uv 的常见安装位置找 uv,再运行 uv run --frozen --quiet --no-editable --project <插件目录> python -m xuanshang_canvas.mcp_server.server。不直接写 uv,是因为 Windows 上刚装好 uv 时,已经开着的程序(包括 Claude 应用)看不到新的 PATH,会报 Connection closed。

  • 为什么 Claude Code 插件放在仓库根目录而不是 adapters/claude-code/:启动脚本要从插件自己的文件夹运行,插件目录里必须有 Python 源码。

  • 依赖目录按版本分开:Claude Code 给的基础位置是 ${CLAUDE_PLUGIN_DATA}/venv,启动脚本实际用 venv-<版本号>。升级时旧版本的会话可能还开着、占用着旧目录里的文件(Windows 会报「另一个程序正在使用此文件」),分开后互不影响。旧版本目录由启动脚本自动删除,但只删「没有任何正在运行的程序来自这个目录」的(用进程列表判断;改名试探不可靠,Windows 上正在用的目录也可能改名成功)。比较路径前先统一格式,因为 Claude Code 传进来的是正斜杠路径。服务用 python -m 启动,而不是 venv 里的 exe,同样是为了不锁住需要更新的文件。

  • 为什么用 uv run --frozen --project 而不是 uvx --from:在开着 Windows Defender 的电脑上实测,uvx 在临时目录里装依赖时会被 Defender 锁住 pywin32 的文件而失败(os error 32);装到固定目录(uv run、uv tool install)没有这个问题。--frozen 按 uv.lock 装,所有间接依赖的版本也是固定的。

  • start-mcp.ps1 要保存成带 BOM 的 UTF-8,否则 Windows PowerShell 5.1 读中文会乱码。

  • 用 --no-editable 把插件代码复制进依赖目录:默认的「可编辑安装」靠一个 .pth 文件记源码路径,中文版 Windows 上的 Python 3.12 及更早版本用 GBK 读这个文件,路径里有中文就读成乱码、找不到代码。pyproject.toml 里的 [tool.uv] cache-keys 让源码一改就重新打包。

  • 依赖升级:改 pyproject.toml 后运行 uv lock,测完再发布。

  • 本地调试:powershell -NoProfile -ExecutionPolicy Bypass -File scripts\start-mcp.ps1 --check;或在 Claude Code 里 claude --plugin-dir . 临时加载。

  • 发新版:改 .claude-plugin/plugin.json、pyproject.toml、src/xuanshang_canvas/__init__.py 里的版本号,运行 uv lock,推到 GitHub。已安装的用户运行 claude plugin marketplace update xuanshang-tools 再 claude plugin update xuanshang-canvas@xuanshang-tools。

  • 画布接口细节见 docs/api-notes.md。画布升级后先跑 canvas_status 看兼容性检查。

Available Tools

13 tools
add_certified_asset_nodeA

把已认证的素材(图片或视频)放到画布上,自动找空位,排成一列。只接受「已认证」的素材。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes项目名称或项目 ID(用 list_projects 查)
asset_idsYes要放到画布上的认证素材 ID 列表(图片、视频都行)
display_namesNo和 asset_ids 一一对应的显示名;不填就用上传时记下的原始中文名
allow_duplicateNo画布上已经有这个素材的节点时,是否还要再放一个

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not idempotent, not destructive, open-world). The description adds genuinely non-obvious behavioral context: it auto-finds empty space and lays nodes out in a column, and it rejects non-certified assets. It stops short of noting duplicate handling or interaction with the existing canvas, but it earns credit beyond the structured 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?

Two tight sentences with no filler; the action and the auto-layout behavior are front-loaded, and the input constraint is stated last as a clear boundary.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and annotations plus a fully-covered schema carry the rest. The description covers purpose and constraint adequately, though it omits how this fits the broader certified-asset workflow (groups, uploads).

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 project, asset_ids, display_names and allow_duplicate, including defaults and pairing behavior. The description adds only the 'certified' constraint, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a concrete verb and resource: placing certified assets (images/videos) onto the canvas with auto-positioning in a column. It also scopes the input to 'certified' assets, which helps separate it from generic node creation. However, it does not explicitly distinguish itself from siblings like create_video_node, which also add nodes.

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 line '只接受「已认证」的素材' acts as a constraint implying when this tool is (and isn't) appropriate, but there is no explicit routing to alternatives such as upload_certified_image/video for uncertified assets. Usage is implied rather than stated.

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

canvas_statusA
Read-onlyIdempotent

查看画布是否在运行、是哪个程序(无限画布/内部版)、端口、版本是否兼容、项目数量。开始操作前先调一次。

ParametersJSON Schema
NameRequiredDescriptionDefault
portNo同时开着多个画布时,用它选定要用的那个(端口号见上次返回的「可选画布」)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorldHint=false, so the safety profile is fully covered by structured data. The description's contribution is the workflow cue to call it once upfront before mutating operations; it adds no further behavioral detail (no cost, latency, or failure-mode context), so a baseline 3 is appropriate.

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

Conciseness5/5

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

A single dense sentence that front-loads the capability list and ends with the actionable timing instruction. Every clause carries information; there is no filler or repetition of the tool name.

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

Completeness4/5

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

With an output schema present, return fields need not be explained, and the description still previews them; annotations cover safety. The only minor gap is what to do with the port value on a follow-up call, which is deferred to the parameter description rather than the tool description.

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

Parameters3/5

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

Schema description coverage is 100%, and the port parameter's own description already explains its disambiguation role ('同时开着多个画布时...' referencing 可选画布 from a prior return). The tool description merely lists 端口 as something reported and adds no syntax or selection semantics beyond the schema, so the baseline 3 stands.

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

Purpose5/5

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

States a specific verb+resource (查看画布状态) and enumerates exactly what is inspected: running state, which program variant (无限画布/内部版), port, version compatibility, project count. No sibling tool does anything similar, so the agent can distinguish it immediately from the project/node-creation 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?

Gives explicit timing guidance: '开始操作前先调一次' (call once before starting operations), which tells the agent precisely when this belongs in a workflow. It does not state when NOT to use it or name an alternative, but for a single status tool there is no real alternative to route against.

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

create_certified_groupA

在项目里新建一个认证分组(玄上那边也会同时建好),之后上传认证素材时选它。 注意:玄上没有删除分组的接口,建了就删不掉,名字要先和用户确认。同名分组已存在时会拒绝。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes新认证分组的名称,比如「人物」「场景」「参考视频」。不能和这个项目里已有的分组重名
projectYes项目名称或项目 ID(用 list_projects 查)
descriptionNo分组说明,可不填

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only give generic hints (readOnlyHint=false, openWorldHint=true). The description adds crucial behavior the annotations cannot convey: creation is irreversible because 玄上 exposes no delete API, duplicate names are rejected, and a remote side is created in tandem. This is exactly the extra context the annotations fail to carry.

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 tight sentences: purpose and workflow first, then the irreversible-deletion warning, then the collision rule. Nothing is redundant and the most consequential constraint (cannot be undone) is surfaced early.

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?

An output schema exists, so return values need no explanation. For a non-idempotent, open-world creation tool the description covers the hazards an agent must know: irreversibility, external-side effects, and duplicate rejection. Nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, project, and description in detail. The description adds only a soft note that the name should be confirmed with the user, not new syntactic or semantic detail — baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (新建/create) and resource (认证分组/certified group) scoped to a project, and adds a distinguishing detail — the group is mirrored on the external 玄上 side. An agent can tell this apart from list_certified_groups and the upload_* 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?

Gives clear context for use: the created group is what you select later when uploading certified assets, and the name should be confirmed with the user first. It does not explicitly name or exclude a sibling alternative, so it stops short of a 5.

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

create_final_videoA
Destructive

把 Seedance 2.5 样片转成 1080p 成片(花积分),每次都要用户单独确认。画布会在样片节点旁边新建「成片生成」节点。

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeNo视频节点名或 ID;给了就用这个节点最近一次成功的样片
projectYes项目名称或项目 ID(用 list_projects 查)
task_idNo样片任务 ID
confirm_codeNo两步确认码。只有上一次调用返回了确认码、并且用户已经明确同意时才填;平时不要填

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructive/non-idempotent/openWorld, and the description adds material context beyond them: the operation costs credits (花积分), demands per-call user confirmation, and creates a new canvas node. It stops short of describing reversibility of the resulting node.

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 tight sentences; the cost and confirmation requirement are front-loaded before the canvas side effect. No 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?

An output schema exists, so return values need not be explained. The description covers cost, confirmation flow, and the canvas side effect—enough for a correct call, though it could clarify the confirm_code round-trip more explicitly.

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 node/project/task_id/confirm_code are all documented in the schema itself. The description adds no syntax or format detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource: converting a Seedance 2.5 sample (样片) into a 1080p final video (成片), plus the side effect of creating a 成片生成 node. The purpose is clear, but it doesn't explicitly differentiate itself from siblings like create_video_node or submit_generation.

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?

Implies the precondition (a successful sample must exist) and discloses that each call requires separate user confirmation, which is a usage constraint. However, it never states when to prefer this over sibling tools such as submit_generation or create_video_node, leaving the selection logic implicit.

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

create_projectA

在画布里新建一个空项目。已经有同名项目时会拒绝(避免以后选错项目),请换个名字或直接用原来的项目。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes新项目的名称,比如「第08集-场10」。不能和已有项目重名
descriptionNo项目说明,可不填

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), and the description adds genuinely new behavior: the tool enforces name uniqueness and refuses duplicate names, and the created project starts empty. It does not mention error/response shape or any permission requirements, so it stops short of a 5.

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

Conciseness5/5

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

Three short clauses, front-loaded with the action, then the rejection condition, then the remedy. The parenthetical rationale ('避免以后选错项目') explains the constraint rather than padding, and nothing is redundant.

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?

An output schema exists, so return values need not be described here, and the description covers purpose, the uniqueness failure mode, and the workaround for a simple 2-parameter tool. It leaves out only secondary details such as whether the new project becomes active or what error signal the rejection produces.

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 'name' and 'description' fully documented including an example name format. The description adds the same uniqueness constraint already stated on the 'name' parameter, so it contributes no semantic detail beyond the schema — baseline 3 applies.

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

Purpose5/5

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

Names a specific verb and resource (新建一个空项目 / create an empty project) scoped to the canvas, and states what the object is (empty project) rather than a vague 'create' action. No sibling tool competes for this operation (the others are list/get/upload/add-node variants), so the agent can select it unambiguously.

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 states the when-not condition (a same-named project already exists → the call is rejected) and gives two named alternatives: pick a different name, or reuse the existing project. This is exactly the when/when-not/alternative guidance the rubric rewards.

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

create_video_nodeA

新建 Seedance 视频生成节点并连好素材。会检查:引用格式(自动统一成画布的 (图片N) 写法)、引用编号和接入素材是否对得上、 素材是否已认证/已生成、参数是否合规;建完马上读回核对。不会提交生成。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes节点名字;和已有视频节点重名时自动加 -v2、-v3
seedNo随机种子,-1 表示随机;不填用默认 1
modelNo不填用默认 Doubao-Seedance-2.5
ratioNo画面比例:adaptive、21:9、16:9、4:3、1:1、3:4、9:16;不填用默认 21:9
promptYes提示词。用 (图片N)、(视频N) 引用素材(半角括号,和画布一致);@图片N、全角(图片N)会自动转成半角
projectYes项目名称或项目 ID(用 list_projects 查)
durationNo时长(秒)。Seedance 2.5 可选 4–30,-1 表示自动;不填用默认 5
resolutionNodraft(样片)、480p、720p、1080p;不填用默认 draft
web_searchNo是否开联网搜索,默认关
image_nodesNo按顺序排列的图片节点(节点名或 ID),第一个就是 (图片1)
video_nodesNo按顺序排列的视频节点(节点名或 ID),第一个就是 (视频1)。可以是认证过的参考视频,也可以是画布上已生成的视频
output_formatNomp4(默认)或 mov
seedance_modeNomultimodal(多模态参考,默认)、first-frame、first-last-frame、video-edit、video-extend

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (which only cover mutation/idempotency/open-world traits), the description discloses concrete runtime behavior: reference-format normalization, numbering-to-material matching, certified/generated asset validation, parameter compliance checks, and an immediate read-back verification after creation. It also declares the critical non-action that it will not submit generation.

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

Conciseness4/5

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

Front-loaded with the action, then the validation checklist, then the scope boundary — a logical, dense ordering with little filler. The single semicolon-chained sentence is information-rich but slightly heavy 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?

For a 13-parameter creation tool with annotations and an output schema, the description covers the validation behavior and the key boundary of not triggering generation, so return values need not be explained. It could be more explicit about workflow ordering with submit_generation, but nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all 13 parameters including defaults and accepted values are already documented in the schema. The description restates reference-format normalization that the prompt parameter already documents, adding little beyond the structured fields; baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('新建 Seedance 视频生成节点并连好素材'), and explicitly scopes itself apart from the generation-submitting sibling with '不会提交生成'. An agent can distinguish this from submit_generation or create_final_video without opening any schema.

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

Usage Guidelines4/5

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

The closing '不会提交生成' makes the boundary with the generation-submission step clear, and the enumerated checks imply this is the setup step that precedes generation. It stops short of explicitly naming the alternative tool or stating ordering requirements, so it is clear context rather than full when/when-not guidance.

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

get_graph_summaryB
Read-onlyIdempotent

项目节点摘要:每个视频节点的名字、参数、按顺序列出的接入素材(图片1、视频1……)、最近任务状态、 是否已有生成好的视频(可以当参考);以及认证图片节点、认证视频节点的名字和 ID。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes项目名称或项目 ID(用 list_projects 查)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the full safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the safety burden is lifted. The description adds useful scope detail — it aggregates across all video nodes plus certified image/video nodes and surfaces task status and existing outputs — but since an output schema is present, much of this restates return contents rather than adding new 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?

A single front-loaded sentence that opens with the summary subject and then enumerates contents. It is a long run-on list, but every clause carries information and there is no 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?

With an output schema documenting the return shape and annotations covering the safety profile, the description only needs to convey scope and content, which it does. The one gap is the absence of any routing guidance among the many sibling status/listing tools.

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?

Only one parameter (project), and the schema already documents it at 100% coverage, including the pointer to list_projects. The description adds no format or syntax detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description names the resource (项目节点摘要) and enumerates the concrete contents it returns: per-video-node name, parameters, ordered input materials, latest task status, whether a generated video exists, plus certified image/video node names and IDs. This is specific and distinguishing in substance, though it never explicitly contrasts itself with look-alike siblings such as canvas_status or get_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?

There is no statement of when to call this tool versus alternatives — notably canvas_status, which appears to be a closely related status-listing sibling. The description describes what comes back but gives no selection criteria, prerequisites, or exclusions, leaving usage entirely to inference.

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

get_taskA
Read-onlyIdempotent

查某个任务,或某个节点最近一次任务的状态、进度和输出文件。只在用户问进度时调用,不要反复轮询。

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeNo节点名或节点 ID;给了就查这个节点最近一次任务
projectYes项目名称或项目 ID(用 list_projects 查)
task_idNo任务 ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds the useful constraints that it should not be polled repeatedly and that it returns output files, but says nothing about freshness, caching, or behavior when a task 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.

Conciseness5/5

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

Two short sentences, front-loading the scope statement before the usage restriction. Every clause earns its place with no redundancy.

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

Completeness4/5

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

With an output schema covering return values and annotations covering safety, the description only needs to convey scope and usage, which it does. The one gap is the interaction/precedence between task_id and node when both are provided.

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

Parameters3/5

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

Schema description coverage is 100% and the node parameter already documents the 'latest task for this node' behavior, so the schema carries the semantics. The description adds no syntax, format, or precedence rules (e.g., what happens if both task_id and node are supplied).

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

Purpose4/5

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

States a specific verb and resource ('查某个任务/某个节点最近一次任务'), and clarifies that it returns status, progress, and output files. It covers both the task_id and node invocation modes. It does not explicitly name a sibling like canvas_status to disambiguate, so it stops short of a 5.

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

Usage Guidelines4/5

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

Gives a clear trigger condition ('只在用户问进度时调用') plus an explicit anti-pattern ('不要反复轮询'), which is a genuinely useful usage constraint. It does not name an alternative tool for cases where progress polling is needed, so it is not a full 5.

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

list_certified_groupsC
Read-onlyIdempotent

项目的认证分组,以及组内每个素材(图片、视频)的认证状态(向玄上实时查)、是否已经放到画布上。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes项目名称或项目 ID(用 list_projects 查)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description does add one genuine behavioral detail beyond annotations: the certification status is fetched live ('向玄上实时查'), telling the agent the data is not stale/cached. It stops short of describing cost, latency, or batching behavior.

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

Conciseness4/5

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

A single dense sentence that front-loads the resource and packs the three returned fields without filler. It is efficient, though the run-on parenthetical structure makes it slightly harder to parse than a clearly punctuated list of returned fields.

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

Completeness3/5

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

An output schema exists, so return values need no further explanation, and annotations cover the safety profile. What is missing is the usage context: when an agent should call this versus canvas_status, and whether project is required (schema covers that). Adequate but with a clear routing gap.

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

Parameters3/5

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

There is a single required parameter (project) and schema description coverage is 100%, with the schema itself pointing the agent to list_projects for lookup. The description adds no further parameter meaning, which is the expected baseline when the schema does the work.

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

Purpose3/5

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

The description names the resource (认证分组) and enumerates the content it surfaces: per-asset certification status and whether each asset is on the canvas. However, it is a noun phrase fragment with no explicit verb, and it does not differentiate itself from the sibling canvas_status, which plausibly reports overlapping canvas state. An agent can guess the data returned but not cleanly why this tool exists beside canvas_status.

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

Usage Guidelines2/5

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

No when-to-use statement, no prerequisites, and no mention of any alternative sibling (e.g. canvas_status or list_projects). The only routing hint comes from the schema parameter description ('用 list_projects 查'), not the tool description itself.

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

list_projectsA
Read-onlyIdempotent

列出画布里的项目(名称、ID、节点数)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this a safe, idempotent, read-only, closed-world operation, so the safety profile is fully covered. The description adds the returned field set, which is modest value given an output schema exists and it says nothing about pagination, ordering, or scope limits.

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

Conciseness5/5

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

A single short sentence that front-loads the action and immediately parenthesizes the payload. Every element earns its place with no 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?

With an output schema present, rich read-only annotations, and zero parameters, the description needs only to establish purpose and scope, which it does. It is not fully complete because it never clarifies how listing projects relates to sibling tools that also report canvas state.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No parameter-related gaps exist.

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

Purpose4/5

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

States a specific verb and resource (list projects in the canvas) and even names the returned fields (name, ID, node count), so the agent knows exactly what it gets. It does not explicitly differentiate itself from siblings like canvas_status or get_graph_summary, which also expose canvas-level information.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no conditions, and no mention of alternatives such as canvas_status or get_graph_summary. The intended use is only implied by the name and description.

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

submit_generationA
Destructive

提交生成任务(花积分)。每次都要用户单独确认:插件会弹确认框/确认窗口,用户点确认才提交。 同一节点已有任务在跑时直接拒绝。提交后只返回任务 ID,不会自动盯进度。

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYes要提交的视频节点(节点名或 ID)
projectYes项目名称或项目 ID(用 list_projects 查)
confirm_codeNo两步确认码。只有上一次调用返回了确认码、并且用户已经明确同意时才填;平时不要填

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare write/destructive/non-idempotent/openWorld, and the description adds genuinely new behavior: it consumes credits, requires an explicit user confirmation step, hard-rejects concurrent tasks on the same node, and returns only a task ID without tracking progress. That last point is important because it tells the agent to poll elsewhere rather than wait.

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?

Four short, front-loaded sentences covering cost, confirmation requirement, concurrency rejection, and return behavior. Zero filler; the most decision-relevant information (costs credits, needs confirmation) comes first.

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 destructive, non-idempotent submission tool, the description covers cost, the mandatory confirmation gate, the rejection rule, and the fact that progress is not tracked (implying the agent must poll get_task). An output schema exists, so return-value detail is not required of the description.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description supplies the two-step confirmation narrative that gives confirm_code its meaning (a code returned by a prior call that the user must approve). It does not add syntax or format detail beyond the schema, so it is not a full 5.

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

Purpose4/5

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

The description states a specific verb+resource (提交生成任务 = submit generation task) and adds the cost signal (花积分), so an agent knows at a glance this initiates a paid render. It does not explicitly distinguish itself from sibling creation tools like create_video_node or create_final_video, so it stops short of a 5.

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

Usage Guidelines4/5

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

Gives clear operating conditions: every submission requires per-user confirmation through a dialog, and submission is rejected outright if a task is already running on the node. It stops short of naming an alternative tool for any scenario, so 4 rather than 5.

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

upload_certified_imageA

本地图片按原质量上传并认证(JPG/PNG/WEBP/BMP/GIF)。返回素材 ID、存储去向、上传核对结果、认证状态。 长边超过 6000px 的图会被画布压缩,插件会先请用户确认。上传后要再用 add_certified_asset_node 放到画布上。

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYes认证分组名或分组 ID(用 list_certified_groups 查)
projectYes项目名称或项目 ID(用 list_projects 查)
file_pathYes本地图片的完整路径,如 C:\素材\司徒陌-面部.png
confirm_codeNo两步确认码。只有上一次调用返回了确认码、并且用户已经明确同意时才填;平时不要填
display_nameNo放到画布上时显示的名字,不填就用原文件名

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare a non-read-only, non-idempotent, open-world mutation. The description adds real behavioral context beyond that: the +6000px canvas compression fallback, the plugin-driven user confirmation, and the two-step confirmation it later mentions. It stops short of stating idempotency or auth requirements, so it is not fully exhaustive.

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

Conciseness4/5

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

Three sentences, each carrying distinct load: capability, return summary, and the compression/confirmation caveat plus next-step. Return values are front-loaded and nothing is redundant, though it is slightly dense.

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

Completeness4/5

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

With a 100% covered schema and an existing output schema, the description does not need to explain return values, yet it still names them helpfully. Combined with the format list and the follow-up tool reference, an agent has what it needs; only permission/auth expectations are unaddressed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters including the conditional confirm_code semantics. The description reinforces the confirm_code two-step flow implicitly but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource (本地图片按原质量上传并认证) and enumerates supported formats, immediately distinguishing it from the sibling upload_certified_video. An agent can tell exactly what this does without opening the schema.

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

Usage Guidelines4/5

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

It gives clear sequencing guidance, telling the agent that after upload it must use add_certified_asset_node to place the asset on the canvas, and describes the confirm-first flow for large images. It does not explicitly state exclusions versus siblings, but the image-vs-video split is self-evident.

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

upload_certified_videoA

本地参考视频按原文件上传并认证(不转码、不剪辑)。返回素材 ID、存储去向、大小核对结果、认证状态。 本地参考视频必须先认证才能接到视频节点上;画布上已生成的视频不用这一步。认证完再用 add_certified_asset_node 放到画布上。

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYes认证分组名或分组 ID(用 list_certified_groups 查)
projectYes项目名称或项目 ID(用 list_projects 查)
file_pathYes本地参考视频的完整路径(MP4 或 MOV),如 D:\预演\16-20-镜127.mp4
display_nameNo放到画布上时显示的名字,不填就用原文件名

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false; the description is consistent and adds real value: a no-transcode/no-edit guarantee, the return payload (asset ID, storage destination, size verification, certification status), and the prerequisite-certification step. It stops short of covering failure modes or re-upload/idempotency implications, so 4 rather than 5.

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

Conciseness5/5

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

Front-loads the operation and its guarantees in the first sentence, then uses the second for prerequisites and the hand-off to add_certified_asset_node. No redundant or filler text; every sentence carries routing or constraint information.

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?

With an output schema present and annotations covering the safety profile, the description need not detail return values, yet it still summarizes them. Workflow prerequisites, exclusion of already-generated videos, and the required follow-up tool make this fully sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (project, file_path, group, display_name) are already documented in the schema, including the pointer to list_certified_groups and list_projects. The description adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('upload and certify a local reference video') and pins down scope with '按原文件上传(不转码、不剪辑)', distinguishing it from upload_certified_image (video vs image) and from create_video_node. An agent knows exactly what operation this is without opening the schema.

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

Usage Guidelines5/5

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

Explicitly states the condition ('本地参考视频必须先认证才能接到视频节点上') and the exclusion ('画布上已生成的视频不用这一步'), and names the follow-up sibling ('认证完再用 add_certified_asset_node 放到画布上'). Both when-to-use and the alternative path are spelled out.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.2.0
    • First observedadd_certified_asset_node
    • First observedcanvas_status
    • First observedcreate_certified_group
    • First observedcreate_final_video
    • First observedcreate_project
    • First observedcreate_video_node
    • First observedget_graph_summary
    • First observedget_task
    • First observedlist_certified_groups
    • First observedlist_projects
    • First observedsubmit_generation
    • First observedupload_certified_image
    • First observedupload_certified_video

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation4/5

Each tool targets a fairly distinct resource and action: status vs. project listing vs. project detail, image vs. video upload, sample-video node vs. final-video node. The main potential confusion is among the read/status tools (canvas_status, list_projects, get_graph_summary, list_certified_groups), but their granularity differs enough to keep selection clear.

Naming Consistency4/5

Almost all tools follow a verb_noun snake_case pattern (create_project, list_projects, get_task, upload_certified_image, add_certified_asset_node, create_video_node, submit_generation). The one deviation is canvas_status, which uses a noun_status form instead of a verb, but it remains readable and unambiguous.

Tool Count5/5

13 tools sit squarely in the well-scoped range and each maps to a real step in the canvas workflow. No redundant or filler tools are present.

Completeness3/5

The core workflow is covered end to end: status, project/group creation, asset upload, node creation, submission, and final render. However, there are notable gaps: no delete/remove for projects, groups, nodes, or assets (the group deletion gap is explicitly acknowledged), and no bulk task listing or node-parameter update.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers