FaceLink
FaceLink
FaceLink 将受限的镜头描述转化为可编辑的 Blender 场景动画。它面向预可视化/白模工作:演员、道具和摄影机仍然是普通的 Blender 对象,带有普通的关键帧,因此艺术家可以拖拽、重新定时并覆盖结果。
FaceLink 不是文本转视频生成器,也不会让 LLM 获得不受限制的 Python 执行权限。模型生成类型化的 ShotSpec;FaceLink 对其进行验证,将其编译为一个小型的补丁操作白名单,在 Blender 中暂存可人工审阅的版本,并且只有在艺术家按下 Apply Staged Patch 之后才会更改场景。
演示

这个四秒的演示由随附的可编辑 .blend 场景渲染而成。该运动是通过 FaceLink 的真实补丁执行器应用的,并且仍然是 24 个普通的可编辑关键帧值——而不是在 Blender 外部烘焙生成的视频。
Related MCP server: BlenderMCP
当前 MVP
扫描打开的 Blender 场景,并为对象分配稳定的 FaceLink ID;
编译
move_to、turn_to、look_at、wait和play_clip节拍;创建/更新可编辑的变换、关键帧、摄影机和跟踪约束;
在世界空间中规划变换,并将其转换为适用于带父级 Blender 对象的形式;
通过 MCP 服务器向 Codex/ChatGPT 兼容的 MCP 客户端公开工作流;
支持使用 OpenAI API 密钥规划,并支持 Structured Outputs;
在 MCP 进程与 Blender 之间运行仅限 localhost 的认证桥接;
支持 Blender 侧的暂存/审阅/应用/丢弃、持久审计历史以及安全回滚到选定的当前会话修订版。
拒绝内部重叠的变换/动作时间线,在覆盖现有关键帧之前发出警告,并拒绝冲突的 FaceLink NLA 片段;
直接在 Blender 视口中预览暂存的世界空间运动路径和预测的摄影机视锥,而无需创建场景数据块;
扫描显式标记的导航网格和障碍物,规划确定性的多段移动路径,并在演员的扫掠边界与标记障碍物相交时发出警告;
对完整的导航环境进行指纹识别,以便新添加的障碍物或编辑过的导航网格会使已暂存的计划失效;
盘点骨架骨骼层级和可编辑的 Blender Actions,包括姿态骨骼通道、静止朝向、帧范围和确定性内容指纹;
使用确定性名称归一化建议仅审阅的骨骼映射,然后在执行前测量映射的层级、局部静止轴和缩放归一化的骨骼比例;
通过开放的
rename_only骨骼映射配置文件复制兼容的 Actions,重写可编辑的 FCurve 路径,将结果放入 NLA,并在回滚时移除创建的副本;将审阅过的
bake_pose配置文件采样为普通的可编辑目标 Actions,通过显式的根运动策略和有界工作量修正不同的局部静止轴和骨骼缩放;使用
bake_evaluated_pose评估现有的自包含源骨架约束和驱动器,然后将最终的变形骨骼姿态烘焙为普通的可编辑 Action;可选地将 Armature 对象的根运动作为保持放置的相对增量传输,并带有源单位或 rig 缩放调整的平移;
在不创建场景数据的情况下预测暂存的摄影机画面,在艺术家应用之前测量目标大小、中心偏移、安全区域适配、裁剪和中心点遮挡;
当引用的变换、父级链接、锁定或场景时间值在场景扫描后发生变化时,拒绝暂存的计划。
支持的 Blender 版本
主要:Blender 4.5 LTS(已使用 4.5.12 测试)
最低:Blender 4.2 LTS
尽力而为:Blender 5.x
开发机器上发现的 Blender 4.0.2 安装早于扩展基线。FaceLink 的源代码仍可加载到那里进行冒烟测试,但 4.0 不是声明的受支持版本。
安装 alpha 版本
从 FaceLink 0.3.8 Alpha 版本 下载 FaceLink-Setup-0.3.8.exe,打开它,选择 Check setup,然后选择 Install FaceLink。
此 alpha EXE 尚未进行代码签名,因此 Windows SmartScreen 可能会显示未知发布者警告。在选择 More info → Run anyway 之前,请对照发布版的 SHA256SUMS.txt 进行验证,并且只使用从官方 FaceLink 发布页面下载的文件。

FaceLink 不捆绑 Blender。它会检测现有的官方 Blender 4.2 或更新版本安装,这使发布版保持小巧,并让每位艺术家选择 Blender 4.5 LTS 或更新的兼容版本。如果缺少 Blender,请从官方 Blender LTS 页面安装。
图形化安装程序将 FaceLink 主机、扩展、校验和清单以及安全的 PowerShell 后端打包在一个小型 EXE 中。它会验证嵌入的文件,检测 Python 和 Blender,安装两个 FaceLink 组件,并安全地配置共享的本地 ChatGPT Desktop/Codex MCP 文件。它不需要管理员访问权限,也不存储 API 密钥。
对于手动 Windows 安装,请将四个原始发布文件放在一起,然后运行:
.\install-windows.ps1 `
-WheelPath .\facelink-0.3.8-py3-none-any.whl `
-ExtensionZipPath .\facelink-0.3.8.zip `
-ChecksumsPath .\SHA256SUMS.txt该脚本会验证发布哈希,找到 Python 3.11+ 和 Blender 4.2+,创建隔离的 FaceLink 主机,安装扩展并配置精确的 facelink-mcp.exe 路径。传递 -PlanOnly 以检查所有解析出的路径而不安装任何东西。当 Blender 是便携式或不在常规路径上时,传递 -BlenderExe C:\path\to\blender.exe。传递 -SkipMcpConfiguration 以保持本地 MCP 配置不变。对于现有的 FaceLink 扩展,请从 Blender 首选项中更新它,或在运行扩展安装步骤之前移除旧版本。
在 Blender 中启动 FaceLink 的桥接后,验证完整设置:
facelink doctor --blender-exe C:\path\to\blender.exe诊断程序绝不会打印 API 密钥或 Blender 桥接的 bearer token。缺少 API 密钥只是警告,因为 MCP 客户端可以使用自己的模型。
要手动安装这两个组件,请继续阅读下文。
在 Blender 4.2 或更新版本中,打开 Edit → Preferences → Get Extensions → Install from Disk,选择 facelink-0.3.8.zip,启用 FaceLink,打开 3D 视口侧边栏中的 FaceLink 选项卡,然后按 Start Bridge。
在隔离的 Python 3.11 或更新版本环境中安装 Python 主机:
py -3.11 -m venv .venv
.\.venv\Scripts\python -m pip install .\facelink-0.3.8-py3-none-any.whl
.\.venv\Scripts\facelink-mcp使用发布版中的 SHA256SUMS.txt 验证每个下载的工件。继续阅读下文,了解 MCP 客户端配置以及安全的暂存/审阅/应用工作流。
为开发安装
cd E:\FaceLink
$env:UV_CACHE_DIR='E:\CodexData\Work\FaceLink\uv-cache'
uv sync --extra dev
uv run pytest对于可复现的多版本验收矩阵,包括真实的扩展安装:
./scripts/run_acceptance.ps1该测试框架将 JUnit、覆盖率、每个 Blender 的 JSON 和命令日志写入 artifacts/ 目录。有关确切的测试门和已知排除项,请参阅 docs/TESTING.md。
构建 Blender 扩展:
$env:FACELINK_BLENDER_EXE='C:\path\to\Blender\blender.exe' # optional if on PATH
./scripts/build_extension.ps1然后在 Blender 4.5 中:Edit → Preferences → Get Extensions → Install from Disk,选择 dist/facelink-0.3.8.zip,启用 FaceLink,并打开 3D 视口侧边栏中的 FaceLink 选项卡。按 Start Bridge。
运行 MCP 服务器:
uv run facelink-mcp安全地创建或更新共享的本地 ChatGPT Desktop/Codex 配置:
uv run facelink configure-mcp `
--mcp-launcher E:\FaceLink\.venv\Scripts\facelink-mcp.exe `
--instance-dir E:\CodexData\Work\FaceLink\instancesFaceLink 会备份现有的 ~/.codex/config.toml,保留无关的设置,并且只拥有其明确标记的块。生成的 OpenAI 兼容配置是 TOML:
[mcp_servers.facelink]
command = "E:\\FaceLink\\.venv\\Scripts\\facelink-mcp.exe"
enabled = true
[mcp_servers.facelink.env]
FACELINK_INSTANCE_DIR = "E:\\CodexData\\Work\\FaceLink\\instances"ChatGPT 桌面应用、Codex CLI 和 Codex IDE 扩展共享此本地配置。Web 上的 ChatGPT 不读取本地 MCP 配置,需要单独托管的插件。请参阅官方 OpenAI MCP 文档。相同的 FACELINK_INSTANCE_DIR 会为未来的 Blender 进程设置;安装后请重启 Blender 和 MCP 客户端。
使用 MCP 客户端时,安全的默认顺序是:
scan_scene将用户的自然语言请求转换为类型化的镜头,并调用
preview_shot调用
stage_scene_patch让用户在 Blender 中检查摘要,然后按 Apply Staged Patch 或 Discard
此路径使用 MCP 客户端中已有的模型;FaceLink 本身不需要 API 密钥。apply_scene_patch 仍然作为显式的超级用户绕过方式可用。
BYOK 规划
$env:OPENAI_API_KEY='your-key'
uv run facelink plan --brief "Cube walks to Marker in 2 seconds, camera follows Cube" `
--snapshot scene.json --out shot.json或者在一个命令中扫描正在运行的 Blender 场景、规划、编译并暂存结果:
$env:OPENAI_API_KEY='your-key'
uv run facelink workflow `
--brief "Cube walks to Marker in 2 seconds, camera follows Cube"该命令不会应用任何内容。在 Blender 中审阅并批准暂存的结果。
要使现有的 Action 针对骨骼名称不同的兼容骨架,请传递审阅过的开放配置文件:
uv run facelink validate-profile `
--profile profiles/mixamo_to_facelink_compact.json
uv run facelink suggest-profile `
--snapshot scene.json --source-rig source-armature-id `
--target-rig target-armature-id --action "Mixamo Walk" `
--name "Reviewed map" --out suggestion.json
uv run facelink analyze-profile `
--profile profiles/mixamo_to_facelink_compact.json `
--snapshot scene.json --source-rig source-armature-id `
--target-rig target-armature-id --out compatibility.json
uv run facelink plan `
--brief "Apply Mixamo Walk to the target rig for two seconds" `
--snapshot scene.json `
--retarget-profile profiles/mixamo_to_facelink_compact.json `
--out shot.json建议绝不会自动应用,并且始终带有 review_required: true。兼容性结果为 safe、review、bake_required 或 incompatible。当层级、静止朝向或比例需要烘焙时,编译器会阻止 rename_only。FaceLink 会对两个 Actions 和引用的 rig 进行指纹识别,因此扫描后的曲线或静止姿态编辑会在变更之前失败;它还会阻止跨不同大小 rig 的未缩放姿态骨骼平移通道。生成的 Actions 和 NLA 条带仍然是普通的可编辑 Blender 数据。请参阅 profiles/README.md 和 examples/retargeted_clip_shot.json。
当分析表明 bake_required 是因为局部静止朝向或 rig 比例不同时,请将审阅过的配置文件更改为 adapter: "bake_pose",设置其显式的 source_rig,并可选地设置 sample_step (1-16) 和 root_motion (scale、preserve 或 drop)。FaceLink 会采样源 Action 的原始帧范围,将线性位置/旋转/缩放关键帧写入普通的目标 Action,并将其放入相同的可编辑 NLA 工作流中。除非 object_motion 是显式的,否则会省略对象级 Action 通道;否则根运动必须位于映射的根姿态骨骼上。此第一个适配器需要等效的映射父级层级和不受约束的源/目标变形骨骼。请参阅 profiles/mixamo_to_facelink_compact_bake.json 和 examples/baked_retargeted_clip_shot.json。
当源 Action 为控制器骨骼或自定义属性设置动画,并且源变形骨骼通过约束/驱动器接收最终运动时,请使用 adapter: "bake_evaluated_pose"。审阅过的 bone_map 将源变形骨骼(而不是控制器通道)映射到目标变形骨骼。版本 1 仅允许依赖同一源 Armature 对象/数据,拒绝外部辅助对象和场景驱动的变量,并且仍然需要等效的映射父级层级以及不受约束/不受驱动的目标骨骼。它不会自动发现控制器或转换 IK/FK 系统。请参阅 profiles/controller_to_deform_evaluated_bake.json 和 examples/evaluated_retargeted_clip_shot.json。
如果整体角色运动承载于源 Armature 对象上,请向任一烘焙适配器添加 object_motion: "preserve" 或 "scale"。FaceLink 使用源对象相对于其首个采样帧的变换,在目标当前世界变换之后应用该增量,并将普通的对象位置/旋转/缩放 FCurve 写入同一个生成的 Action。scale 将增量平移乘以映射绑定的中位长度比;preserve 保持源单位。版本 1 要求源/目标 Armature 均未设置父级,并且没有对象约束或受驱动的目标对象变换。参见 profiles/object_motion_bake.json 和 examples/object_motion_clip_shot.json。
从命令行检查或回滚 FaceLink 修订版本:
uv run facelink history
uv run facelink rollback --revision rev-0123456789abcdef修订版本元数据存储在 .blend 文件中。可执行的回滚快照有意仅保留在会话中,因为它们包含实时的 Blender 数据块引用。回滚到较早的修订版本也会回滚所有较新的 FaceLink 修订版本,以保持线性的场景状态。
当 MCP 客户端自行执行语言模型规划时,API 密钥是可选的。ChatGPT 订阅与 OpenAI API 计费是分开的;ChatGPT 会员资格不是 API 密钥。关于信任边界,请参见 docs/ARCHITECTURE.md。
导航工作流
选择一个可行走的网格,并使用 FaceLink → Navigation → Navmesh。选择墙壁、道具或其他阻挡对象,并将它们标记为 Obstacle。move_to 节拍默认保持传统的直线路径;将 path_mode 设置为 navmesh,即可经由相连的导航三角形进行路由。编译器按路径距离分配普通的可编辑位置关键帧,并强制使用线性插值,从而使曲线控制柄无法离开可行走通道。
导航是刻意显式的。FaceLink 不会根据对象名称进行猜测,也不会默默地将每个网格都视为障碍物。当前的 v0.3.0 规划投影到 XY 平面,面向单层预可视化楼层;堆叠楼层、实时移动障碍物和人群路由尚不受支持。参见 examples/navmesh_walk_shot.json。
摄影机构图预检
带有目标的摄影机镜头会在暂存阶段接受检查。FaceLink 将目标的世界空间边界投影到预测的摄影机画面中,并报告裁剪、不安全边距、主体大小和中心偏移。只读的 Blender 射线投射会在另一个对象阻挡目标中心时发出报告。dolly_in 会同时检查其起始位置和结束位置。阈值在 camera.composition 中声明,在 ShotSpec 中保持可见,并且可以显式禁用。参见 examples/composition_checked_shot.json。
这是一个确定性的预检,而不是艺术质量评分。它不会渲染、使用视觉模型、判断光照,也不保证复杂主体的每个部分都未被遮挡。版本 0.3.3 评估不带镜头位移的透视摄影机,并将其他投影类型报告为不受支持,而不是返回误导性指标。
仓库结构
src/facelink/ Core schemas, compiler, bridge client, providers, CLI and MCP server
blender_extension/ Zero-dependency Blender extension and local bridge
schemas/ Portable JSON Schema for integrations
examples/ Example editable shot specifications
tests/ Unit tests and a Blender headless smoke test
scripts/ Build and verification scripts
docs/ Architecture, protocol and development notes项目状态
版本 0.3.8 是面向创作者审阅的 alpha 版本,还不是生产级动画系统。它可以针对已审阅的映射执行限定范围的、感知变换的姿势烘焙,并且当所有依赖项都停留在显式源 Armature 上时,可以评估现有的约束和驱动器。它还可以在保持目标起始位置不变的情况下,传递未设置父级、无约束的 Armature 对象运动。它不会推断控制器、转换 IK/FK 系统、跟随外部辅助对象、求解不同的映射父级层级、处理已设置父级/受约束的对象根、合成缺失的运动,也不会评判视觉结果。多层级导航、多镜头排序和视觉差异叠加仍是后续工作。
Windows 版本现在拥有单文件图形化安装程序、安全的本地 MCP 配置、密钥安全的环境诊断工具,以及可复现的真实 Blender 演示。在更广泛地推广此 alpha 之前,请让非开发者用户测试安装,并完成 Linux/macOS 的安装覆盖。
许可证
FaceLink 是自由软件,采用 GNU GPL 版本 3 或任何更高版本 许可。Blender 扩展发行版包含相同的许可文本。
Available Tools
17 toolsanalyze_retarget_profileC
Measure hierarchy, rest-axis and proportion safety for a reviewed bone map.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes | ||
| source_rig_id | Yes | ||
| target_rig_id | Yes | ||
| scene_snapshot | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior, but it only says 'Measure', which implies a read-only operation without confirming side effects or lack of mutations. It fails to mention return format, potential errors, or any safety guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is brief but severely under-specified. It omits critical information like parameter roles, expected inputs, and output semantics, making it more under-specified than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity of the input schemas (nested object types, many fields) and the existence of an output schema, the description lacks completeness. It doesn't explain what 'measure safety' means in terms of return values or how the tool evaluates the bone map against the provided rigs and scene.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains 4 complex parameters (profile, source_rig_id, target_rig_id, scene_snapshot) with 0% description coverage. The description provides no explanation of what these parameters mean or how they are used, leaving the agent without essential semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Measure' and specifies three measurable aspects (hierarchy, rest-axis, proportion safety) for a reviewed bone map. This distinguishes it from sibling tools like validate_retarget_profile, though the phrase 'reviewed bone map' is somewhat unclear and doesn't explicitly reference the profile object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 validate_retarget_profile or suggest_retarget_profile_map. The description gives no context for selection or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_scene_patchB
Power-user escape hatch: apply a white-listed patch without Blender review staging.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | ||
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits itself. It indicates a bypass of review staging but lacks details on side effects, validation, undo capability, or safety implications. This is insufficient for a mutation tool that applies patches directly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one clear, front-loaded sentence that efficiently expresses the core purpose. It is not bloated, though it could be expanded slightly without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (large nested schema), absence of annotations, and no parameter descriptions, a single sentence is inadequate. Major gaps include patch structure, fingerprint validation, the meaning of 'white-listed', and workflow integration with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides zero information about the patch parameter or instance_id. The complex ScenePatch schema is left entirely self-documenting, leaving the agent without semantic guidance for constructing valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('apply'), the resource ('a white-listed patch'), and the key differentiator ('without Blender review staging'), effectively distinguishing it from the staged patch workflow represented by sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'power-user escape hatch' implies an alternative to the normal staging workflow, but it does not explicitly name alternatives (like stage_scene_patch) or provide when-not-to-use guidance. The usage context is implied rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_staged_patchC
Apply the patch that a human has reviewed in Blender.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states that a human-reviewed patch is applied, but doesn't disclose side effects, reversibility, or whether it requires any prerequisites. For a mutating operation, this is insufficient behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no filler, front-loads the core action. It's appropriately sized for a simple tool, though it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and low parameter count, but the description omits crucial context about the patch application workflow, such as whether it can be undone, how it relates to staged patches, or what the output means. Given the sibling tools suggest a review/apply pipeline, more context would be needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema lists one optional parameter, instance_id, with no description in the schema (0% coverage). The description provides no context for what instance_id means or how it should be used, leaving the agent to guess. Since the parameter name is relatively self-explanatory, it's not a 0, but the description adds no value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Apply' and identifies the resource as 'the patch that a human has reviewed in Blender,' clearly distinguishing it from staging or discarding operations. However, it doesn't explicitly contrast with apply_scene_patch, a closely named sibling, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'that a human has reviewed' implies the appropriate time is after human review, offering some guidance. But there are no explicit when-to-use versus alternatives, no mention of workflow steps like get_staged_patch or discard_staged_patch, and no exclusions. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discard_staged_patchA
Discard the staged patch without changing Blender.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It reveals a key behavioral aspect—this operation does not change Blender—but does not disclose other important details such as idempotency, whether the discard is reversible, or any side effects on the patch data. More specifics would be needed for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, single-purpose sentence without extraneous words. It effectively communicates the tool's function in as few words as possible, demonstrating excellent conciseness and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with an optional parameter and an existing output schema, the description adequately covers the core functionality. It could be improved by noting the consequence of discarding (e.g., the patch is permanently lost), but overall it is sufficient for an agent to understand the primary use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The lone parameter instance_id has no description in the schema, and the description does not mention it at all. With 0% schema description coverage, the tool description should compensate but does not, leaving the agent to rely on the parameter name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'discard' and names the resource 'staged patch,' clearly identifying what the tool does. The phrase 'without changing Blender' adds a distinguishing context, differentiating it from sibling tools like apply_staged_patch or undo_last_apply.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for discarding a staged patch, but it does not explicitly state when to use it versus alternatives like apply_staged_patch or get_staged_patch. No exclusions or alternative guidance is provided, so usage context is only implicitly conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facelink_healthB
Check connectivity and capabilities for one FaceLink Blender instance.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must convey behavioral traits such as read-only safety, side effects, or behavior when instance_id is null, but none of this is stated. 'Check' weakly implies a read operation, but the description does not disclose what happens to the connection, what capabilities are probed, or any error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of nine words with no filler or redundancy. It communicates the core purpose immediately, which is appropriate for a simple health-check tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has low complexity and an output schema, so return-value details are not required, but the description still lacks usage guidance and behavioral context. It is minimally viable for selecting the tool, but an agent would have to infer when to call it and what optional-instance_id omission implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to explain instance_id, but it only says 'one FaceLink Blender instance.' It does not clarify that the parameter is optional, what null/default means, or how the instance_id is used. The schema provides type/default, but the description adds little semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and names the resource ('connectivity and capabilities for one FaceLink Blender instance'), making the tool's scope clear. This also distinguishes it from sibling tools like list_blender_instances or get_blender_job, which cover different facets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The wording implies this is a health/capability check for one specific instance, but it provides no explicit guidance on when to use it, no prerequisites (e.g., obtaining instance_id via list_blender_instances), and no exclusions versus sibling tools. The context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blender_jobA
Get the status of a previously submitted Blender job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It accurately indicates this is a read-only operation, but it doesn't explain what happens when the job ID is invalid, whether it returns partial results, or any side effects. The simplicity of the tool lowers the risk, but the description adds no extra context beyond the basic read semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that gets straight to the point. It contains no fluff, no redundant content, and is immediately scannable. The length is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return-value documentation is already handled, so the description does not need to explain response fields. For a simple get-status operation, the description covers the core scenario. It doesn't mention error cases or status semantics, but given the tool's narrow scope and the output schema, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate. The word 'Blender job' implies that 'job_id' refers to the Blender job identifier, but 'instance_id' is left entirely unexplained. The optional parameter's purpose is unclear—does it specify a particular instance or filter? Because the description does not clarify either parameter beyond what the schema already shows, it falls short for a 0%-coverage case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and object: 'Get the status of a previously submitted Blender job.' It clearly identifies the resource (Blender job) and the action (retrieve status), and it implicitly distinguishes this from siblings like 'list_blender_instances' or 'preview_shot.' The phrase 'previously submitted' hints that the job must already exist, which adds scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. Usage is only implied by the verb 'get' and the term 'status.' No comparison with sibling tools is provided, so this is a bare minimum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_staged_patchA
Read the patch and artist-facing summary currently waiting for approval.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are not provided, so the description carries the burden. It says 'Read', which indicates a non-mutating operation, but it doesn't disclose details such as whether the patch is returned in a specific format, what happens if there's no staged patch, or any rate limits. It adds minimal behavioral context beyond the verb itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, about 12 words, with no redundancy. It is front-loaded with the verb 'Read' and quickly identifies the target. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, but it still lacks context on preconditions (e.g., a staged patch exists), side effects, or the meaning of instance_id. Given the sibling tools like apply_staged_patch and discard_staged_patch, it is clearly part of a workflow, but the description doesn't elaborate. Overall, adequate but with notable gaps, earning a 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one parameter (instance_id) that is optional and nullable. The description doesn't explain what instance_id refers to (likely the instance identifier) or how it affects the result. Given the low coverage, the description should compensate, but it adds no param information. The baseline for low coverage is below 3, but the single param is simple, so a 3 seems appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads (Read) a patch and artist-facing summary waiting for approval, distinguishing it from apply_staged_patch and discard_staged_patch. It is specific about the resource (staged patch) and its state (waiting for approval), though it doesn't explicitly mention the return type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently waiting for approval' implies it's used before applying or discarding a staged patch, which provides context. However, it doesn't explicitly state when not to use it or mention alternatives like get_blender_job, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blender_instancesA
List Blender windows that currently have the FaceLink bridge running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It adds the behavioral condition 'currently have the FaceLink bridge running', which is useful. However, it does not explicitly state read-only nature or side effects; while 'List' implies a safe operation, the description could be more explicit about being read-only and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb, and contains no filler. Every word contributes meaning, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no params, no annotations, and an output schema exists), the description is complete. It states what it lists and the specific filter condition. The output schema covers return values, so no further detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is nothing to explain. The baseline for 0 params is 4, and the description does not need to add parameter details. It appropriately avoids irrelevant information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('Blender windows that currently have the FaceLink bridge running'). It distinguishes from sibling tools like facelink_health and get_blender_job by specifying the exact scope (only instances with the bridge active).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to enumerate active Blender instances. It does not explicitly mention alternatives or exclusions, but the context is clear given the sibling list; the agent can infer this is the tool for listing connected instances. No explicit guidance on when not to use, but the purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_revision_historyA
List persistent FaceLink audit entries and current-session rollback availability.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that audit entries are persistent and rollback availability is current-session, which adds context. However, it doesn't mention side effects, read-only nature, or what 'availability' entails beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loaded with the core action. It is efficient, though it could benefit from a brief note on the parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not explain return values. But with no annotations and a single undocumented parameter, it leaves some gaps about why instance_id matters and what 'rollback availability' means practically. It's adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and there is only one parameter with no description. The description does not explain what instance_id does, so it fails to add meaning. However, with only one optional parameter, the gap is less critical, but the description should at least hint at filtering by instance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists persistent audit entries and rollback availability for FaceLink, using specific verbs and resources. It distinguishes from siblings like rollback_to_revision by focusing on listing, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for auditing and checking rollback, but no explicit when-to-use or when-not-to-use guidance. Sibling tools suggest a broader ecosystem, but the description lacks exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_shotB
Compile a shot, including deterministic navmesh paths, without applying it.
| Name | Required | Description | Default |
|---|---|---|---|
| shot_spec | Yes | ||
| scene_snapshot | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully states that the tool does not apply the shot and that navmesh paths are deterministic, but it does not clarify whether temporary state is created, what the compiled output represents, or whether a valid scene snapshot is a prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the verb and key constraints, with no filler, repetition, or vague qualifiers. It conveys the core purpose and the most important behavioral qualifier extremely efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a very complex schema with two large required structs and no annotations, the description is only one sentence. The output schema exists, so return values need not be detailed, but the description omits invocation context, prerequisites, and the distinction from validation/staging tools, making it insufficient for reliable tool selection in a complex workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no meaning to the two required top-level parameters, shot_spec and scene_snapshot, or how they interact. The parameter names are somewhat self-explanatory, but the description fails to compensate for the absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Compile') and resource ('shot'), and adds scope via 'including deterministic navmesh paths' and 'without applying it,' which distinguishes it from apply/stage tools. It is clear enough for a preview action, though 'compile' is somewhat domain-specific and does not explicitly contrast with validate_shot_spec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without applying it' implies this is for previewing before an apply/stage action, giving some usage context. However, it never names alternatives like apply_scene_patch, stage_scene_patch, or validate_shot_spec, nor states when to prefer this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_to_revisionB
Undo the selected revision and every newer FaceLink revision in this session.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | ||
| revision_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the scope of the operation ('selected revision and every newer') and session-level scoping, which is useful. However, it does not state whether the operation is reversible, whether it creates a new revision, or how it affects instances, leaving important safety aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no superfluous words. It conveys the core action and scope in 12 words, achieving excellent conciseness without sacrificing immediate clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive rollback operation with no annotations, the description omits critical context: the role of instance_id, the permanence of the undo, and any relationship to the output schema. While the output schema is available, the description is not complete enough for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not map 'selected revision' to the revision_id parameter or explain the purpose of instance_id. The agent cannot derive parameter meanings from the description beyond their names, and instance_id is entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Undo' with the resource 'FaceLink revision' and explicitly defines the scope as 'the selected revision and every newer', which clearly distinguishes it from sibling tools like list_revision_history and undo_last_apply. 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives. It does not mention list_revision_history, undo_last_apply, or any criteria for when a rollback is appropriate, leaving the agent to infer usage from the broad description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_sceneB
Read stable IDs, bounds, nav data, armature bones and Action channel inventories.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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. While 'Read' implies a read-only operation, it does not explicitly state safety, authorization requirements, or potential side effects, leaving the agent uncertain about the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that lists the data types without any redundant wording or unnecessary detail. It front-loads the action and immediately conveys the scope of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (so return format disclosure is less critical), the description remains incomplete. It misses usage context, parameter semantics, and any indication of when this tool is appropriate, leaving an agent underprepared to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter instance_id is completely absent from the description, and the schema has no description for it (0% coverage). The description fails to explain what this parameter is for or how it affects the scan, forcing the agent to infer its meaning from the title alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Read' and explicitly lists the data types (stable IDs, bounds, nav data, armature bones, Action channel inventories), making the tool's purpose specific and understandable. It clearly distinguishes from siblings by focusing on a broad scene scan rather than specialized validation or analysis, even though it doesn't name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks any mention of use cases, prerequisites, or contexts where this scan is preferred, and doesn't address when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stage_scene_patchA
Stage a patch in Blender for visible human review without changing the scene.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | ||
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is transparent about the key behavior: it stages the patch without modifying the scene. However, it does not detail potential side effects (e.g., storing the patch, requiring permissions) or what happens to existing staged patches. Given the lack of annotations, it covers the most critical behavior but not exhaustively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no fluff. It efficiently conveys purpose and behavior without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a basic understanding of the operation, but it omits any context about the patch structure, the meaning of 'staging', or how it relates to other tools like get_staged_patch or discard_staged_patch. While an output schema exists (so return values are not required), the description does not address prerequisites or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. The description does not explain any of the parameters (patch, instance_id) or the nested structure (ScenePatch, PatchOperation). With a complex schema, this omission leaves the agent without guidance on how to construct valid inputs, failing to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to stage a patch in Blender for human review, explicitly noting it does not change the scene. This distinguishes it from apply_scene_patch and other sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies when to use it (for review before applying) and highlights the non-destructive nature ('without changing the scene'), giving clear guidance. It does not explicitly mention when not to use it, but the context implies it is for staging rather than applying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_retarget_profile_mapB
Suggest exact/normalized/alias bone matches; output always requires human review.
| Name | Required | Description | Default |
|---|---|---|---|
| action_name | No | ||
| profile_name | Yes | ||
| source_rig_id | Yes | ||
| target_rig_id | Yes | ||
| scene_snapshot | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses an important behavioral trait: 'output always requires human review', which implies the tool doesn't commit changes and returns suggestions only. However, it does not describe what happens on failure, whether the output is a full map or just candidate matches, or what the output schema contains (though an output schema exists). The description adds the human-review requirement, which is valuable, but it's minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence with two clauses. It front-loads the core purpose and adds one behavioral note. No waste, but it is so short it lacks detail for other dimensions. For what it intends to cover, it's well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool takes a complex scene_snapshot object, has an output schema, and is in a domain where sibling tools suggest a workflow (validate/analyze/suggest). The description is insufficient: it does not mention how the scene_snapshot is used, whether action_name is required for generating a map, what the output format is (despite an output schema), or potential side effects. Given the complexity of the input and the tool's role in a pipeline, the description is too thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description provides no parameter explanations beyond what the schema names suggest. The schema itself has 5 parameters (source_rig_id, target_rig_id, profile_name, scene_snapshot, action_name optional) with clear names and types, but no descriptions anywhere. The tool description does not explain the role of scene_snapshot or action_name, nor how they affect the suggestion. Since coverage is 0%, the description must compensate, and it fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Suggest exact/normalized/alias bone matches' for retarget profiles. It identifies the specific action (suggest bone matches) and the resource (retarget profile map). However, it doesn't explicitly distinguish itself from sibling tools like 'validate_retarget_profile' or 'analyze_retarget_profile', though the verb 'suggest' implies a generative step versus validation/analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it's used when you need to suggest bone matches for a retarget profile, but it doesn't explicitly state when to use it versus alternatives like 'validate_retarget_profile' or 'analyze_retarget_profile'. It also doesn't mention prerequisites (e.g., that the profile must exist) or that the scene_snapshot is required. The sentence 'output always requires human review' gives some usage guidance (the output shouldn't be applied automatically), but it lacks explicit exclusions or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_last_applyC
Ask Blender to undo the most recent edit.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'undo,' but fails to mention side effects (e.g., whether it is destructive, if there's an undo history limit, or what happens if there are no edits to undo). The optional instance_id parameter's role is also unexplored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no fluff. It is appropriately front-loaded, though its brevity sacrifices important detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and only one optional parameter, a slightly richer description would suffice. However, the description omits crucial context about undo scope, error behavior, and when to use this tool, making it incomplete for a mutating operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter, instance_id, but the description provides zero explanation of what it does or how it affects the undo operation. With 0% schema description coverage, the description must compensate but doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('undo') and the target ('most recent edit') in Blender. However, it does not distinguish from sibling tools like rollback_to_revision, which also reverts changes, so it misses the chance to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like rollback_to_revision or other undo mechanisms. The description only states what it does, not when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_retarget_profileA
Validate a rename-only or sampled pose-bake profile without changing Blender.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. It explicitly states 'without changing Blender' which discloses non-destructive behavior. However, it doesn't disclose what the validation actually checks (e.g., bone map validity, adapter constraints) or what the output looks like, though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently conveys the purpose and key constraint. No wasted words, and the key phrase 'without changing Blender' is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (though not shown in the context) and a single complex parameter. The description is minimal but adequate for a validation tool with a clear non-destructive guarantee. It could benefit from noting what validation entails, but given the schema richness the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has only one parameter, 'profile', which is fully defined in the input schema with a detailed retarget profile structure. Schema description coverage is 0%, but the schema itself provides rich semantics for the profile. The description adds minimal value beyond stating the validation scope, so a baseline of 4 is appropriate given the strong schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a retarget profile (rename-only or sampled pose-bake) and explicitly notes it does not change Blender. This distinguishes it from other profile-related tools like analyze_retarget_profile and suggest_retarget_profile_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for validating a profile before applying, and the explicit 'without changing Blender' provides a key safety context. However, it does not specify when to use this over analyze_retarget_profile or other validation tools, nor does it mention any prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_shot_specC
Validate a typed shot without changing Blender.
| Name | Required | Description | Default |
|---|---|---|---|
| shot_spec | Yes | ||
| scene_snapshot | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral trait (non-destructive, 'without changing Blender'), which is valuable given no annotations are provided. However, it omits other important behaviors like return values, error handling, or side effects, leaving the agent to infer from the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, front-loading the action verb. It is efficient, though perhaps too terse given the tool's complexity, but conciseness itself is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two highly complex nested parameters and an output schema, the description is severely inadequate. It provides zero context about validation logic, constraints, or expected behavior, making it almost useless for an agent to gauge what will happen or how to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about the two parameters (shot_spec and scene_snapshot). While 'typed shot' hints at shot_spec, scene_snapshot is completely unmentioned, failing to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a typed shot and explicitly notes it does not change Blender. It distinguishes from siblings like preview_shot by emphasizing validation over previewing, though it does not elaborate on what validation entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The only hint is 'without changing Blender,' implying a dry-run safety check, but there is no explicit mention of use cases, exclusions, or related tools such as preview_shot or apply_scene_patch.
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.
17 tool updates
v0.3.8- First observed
analyze_retarget_profile - First observed
apply_scene_patch - First observed
apply_staged_patch - First observed
discard_staged_patch - First observed
facelink_health - First observed
get_blender_job - First observed
get_staged_patch - First observed
list_blender_instances - First observed
list_revision_history - First observed
preview_shot - First observed
rollback_to_revision - First observed
scan_scene - First observed
stage_scene_patch - First observed
suggest_retarget_profile_map - First observed
undo_last_apply - First observed
validate_retarget_profile - First observed
validate_shot_spec
TDQS
Scored across 17 tools
The tools are largely separated by lifecycle stage and resource type, such as validate, preview, stage, apply, and rollback. A couple of pairs, like validate_retarget_profile vs analyze_retarget_profile and apply_staged_patch vs apply_scene_patch, are close enough to require careful reading, but the descriptions do distinguish them.
Most tools follow a clean action_object snake_case pattern like list_, get_, validate_, stage_, apply_, and discard_. facelink_health breaks the pattern as a noun phrase, and rollback_to_revision uses a preposition instead of a direct object, but these are minor deviations.
17 tools is slightly above the typical 3-15 range, but the server covers several distinct workflow areas: instance health, retargeting, shots, staged patches, and revisions. The count is reasonable for the scope, though it could be tightened.
The set covers the core safety-oriented lifecycle: scan, validate, preview, stage, review, apply, and rollback. Obvious minor gaps exist, such as no Blender job submission/cancellation and no explicit apply/save for retarget profiles, but agents can work around them via scene patches and external job submission.
Maintenance
Related MCP Connectors
Build editable 3D scenes, direct characters and cameras, and export AI video references with MCP.
Plan, compare, price, generate, and recover AI video from compatible MCP clients.
Blender-as-a-service for agents: search 3D assets, run Blender Python, or brief the studio agent.
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables AI-powered control of Blender through natural language, allowing users to create, manipulate, and automate 3D scenes, objects, materials, animations, and more via Claude or other MCP clients.7153MIT
- AlicenseNot gradedqualityBmaintenanceConnects Blender to local LLMs through MCP, enabling AI-assisted 3D modeling, scene creation, and manipulation.1MIT
- AlicenseBqualityAmaintenanceEnables natural language creation and refinement of Blender scenes through structured MCP tools, with persistent object identity, visual validation, and reversible edits.23MIT
- FlicenseBqualityCmaintenanceEnables multimodal models to drive Blender animation through precise timeline and keyframe tools, import GLB/glTF assets, inspect rigs, and render frames or contact sheets for visual feedback.24-