Blender MCP
Provides tools for AI-assisted automation of Blender, including scene manipulation, node editing, animation, mesh editing, material management, modifiers, UV editing, constraints, physics simulation, rendering, and import/export of various formats.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Blender MCPadd a sphere"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Blender MCP
English
MCP server integration for AI-assisted Blender automation.
Layered Tool Architecture
Blender MCP uses a four-layer tool architecture with 29 specialized tools organized by intent:
Layer | Tool Count | Purpose |
Perception | 11 tools | Read Blender state deeply with controllable granularity |
Declarative Write | 4 tools | Node editor (6 contexts) + Animation + VSE Sequencer + Mesh editing |
Imperative Write | 9 tools | Object/Material/Modifier/UV/Constraint/Physics/Scene |
Fallback | 5 tools | execute_operator + execute_script + import_export + render + batch |
Perception Layer (11 tools):
Tool | Description |
| List/scene objects with filters |
| Deep object data (12 include options) |
| Read any node tree (6 contexts) |
| Keyframes/NLA/drivers/shape keys |
| Material asset list |
| Scene-level global info |
| Collection hierarchy tree |
| Armature/bone hierarchy/constraints/poses |
| Texture/image asset list |
| Viewport screenshot |
| Current selection/mode/active object |
Declarative Write Layer (4 tools):
Tool | Description |
| Edit any node tree (add/remove/connect/disconnect/set_value) ⭐ Core |
| Edit animation (keyframe/NLA/driver/shape_key/frame_range) |
| Edit VSE video sequence (strip/transition/effect) |
| Edit mesh data (vertices/edges/faces) |
Imperative Write Layer (9 tools):
Tool | Description |
| Create scene objects (MESH/LIGHT/CAMERA/CURVE/EMPTY/ARMATURE/TEXT) |
| Transform/parent/visibility/rename/delete |
| Material create/PBR edit/assign/duplicate/delete |
| Modifier add/configure/apply/delete/reorder |
| Collection create/delete/object link/hierarchy/visibility |
| UV unwrap/seam/pack/layer management |
| Object/bone constraint add/configure/delete |
| Physics simulation add/configure/bake |
| Render engine/world environment/timeline config |
Fallback Layer (5 tools):
Tool | Description |
| Execute any bpy.ops.* operator |
| Execute arbitrary Python code (⚠️ use with caution) |
| Import/export asset files (FBX/OBJ/GLTF/USD/Alembic/STL/etc.) |
| Render scene to image/video |
| Execute multiple tool calls in a single request (performance optimization) |
Note: All tools use
blender_prefix to avoid conflicts in multi-server environments. Tool names follow MCP specification with underscores. Payload wrapper is removed - all parameters are exposed directly as top-level inputSchema properties.
Tool Naming: All tools use the blender_ prefix to avoid conflicts in multi-server environments.
Features
Undo Support: All write operations push to Blender's undo stack — Ctrl+Z works correctly.
Localized Blender Support: Works in any Blender language. Uses English display names like
"Principled BSDF"and they resolve to localized names automatically.Error Reporting: Detailed error messages from the addon are surfaced in MCP tool responses.
Progress Notifications: MCP progress notifications for long-running operations (render, import/export). Clients can include
progressTokenin_metafield to receive real-time progress updates.
Progress Notifications
Blender MCP supports MCP progress notifications for long-running operations. To receive progress updates:
// Client request with progressToken
{
"method": "tools/call",
"params": {
"name": "blender_render_scene",
"arguments": {"output_path": "/tmp/render.png"},
"_meta": {"progressToken": "render-123"}
}
}
// Server sends progress notifications
{
"jsonrpc": "2.0",
"method": "notifications/progress",
"params": {
"progressToken": "render-123",
"progress": 50,
"total": 100,
"message": "Rendering frame 50/100"
}
}Safety features:
Rate limited to 100ms minimum interval between notifications
Progress messages truncated to 1000 characters
Maximum 100 concurrent progress tokens
Thread-safe notification output
Known Limitations (Blender 5.1)
Limitation | Cause |
VSE strip creation fails | Blender 5.1 timer context API restriction |
Compositor node editing fails | Blender 5.1 timer context API restriction |
Object pointer properties can't be set | MCP |
Multi-material slot creation | MCP |
Quick Start
New to Blender MCP? See the 5-Minute Quick Start Guide for step-by-step setup instructions.
// Create a cube
{
"name": "MyCube",
"object_type": "MESH",
"primitive": "cube",
"size": 2.0
}
// Move it
{
"name": "MyCube",
"location": [1, 2, 3]
}
// Add a subdivision modifier
{
"action": "add",
"object_name": "MyCube",
"modifier_name": "Subdivision",
"modifier_type": "SUBSURF",
"settings": {"levels": 2}
}
// Read object data
{
"name": "MyCube",
"include": ["summary", "modifiers"]
}
// Capture viewport
{
"shading": "SOLID",
"format": "PNG"
}Installation
Blender Addon
Copy or symlink
src/blender_mcp_addon/to your Blender addons folder:Windows:
%APPDATA%\Blender\<version>\scripts\addons\blender_mcp_addonmacOS:
~/Library/Application Support/Blender/<version>/scripts/addons/blender_mcp_addonLinux:
~/.config/blender/<version>/scripts/addons/blender_mcp_addon
In Blender: Edit > Preferences > Add-ons > Search "Blender MCP" > Enable
Configure and click "Start Server"
MCP Server
# Recommended: one-line install & run
uvx ageless-blender-mcp
# Or install globally
pip install ageless-blender-mcp
blender-mcp
# Or from source
uv sync
python -m blender_mcp.mcp_protocolSupported MCP Clients
Client | Documentation |
Amp | |
Antigravity | |
Claude Code | |
Cline | |
Codex | |
Copilot CLI | |
Copilot / VS Code | |
Cursor | |
Factory CLI | |
Gemini CLI | |
Gemini Code Assist | |
JetBrains AI Assistant | |
Kiro | |
OpenCode | |
Qoder | |
Visual Studio | |
Warp | |
Windsurf |
Version Compatibility
Blender Version | Status |
4.2 LTS | ✅ Supported |
4.5 LTS | ✅ Supported |
5.0+ | ✅ Supported |
5.1 | ✅ Supported (some API limitations, see above) |
< 4.2 | ❌ Not Supported |
See docs/versioning/support-matrix.md for details.
Related MCP server: dcc-mcp-blender
中文
用于 AI 辅助 Blender 自动化的 MCP 服务器集成。
分层工具架构
Blender MCP 采用四层工具架构,29 个专用工具按意图组织:
层级 | 工具数量 | 用途 |
感知层 | 11 个工具 | 以可控粒度深度读取 Blender 状态 |
声明式写入层 | 4 个工具 | 节点编辑器(6种上下文)+ 动画 + VSE 序列编辑器 + 网格编辑 |
命令式写入层 | 9 个工具 | 对象/材质/修改器/UV/约束/物理/场景 |
后备层 | 5 个工具 | execute_operator + execute_script + import_export + render + batch |
感知层(11 个工具):
工具 | 描述 |
| 列出/筛选场景对象 |
| 单对象深度数据(12 种 include 选项) |
| 读取任意节点树(6 种上下文) |
| 关键帧/NLA/驱动器/形态键 |
| 材质资产列表 |
| 场景级全局信息 |
| 集合层级树 |
| 骨架/骨骼层级/约束/姿态 |
| 纹理/图片资产列表 |
| 视口截图 |
| 当前选择/模式/活动对象 |
声明式写入层(4 个工具):
工具 | 描述 |
| 编辑任意节点树(添加/移除/连接/断开/设置值)⭐ 核心 |
| 编辑动画(关键帧/NLA/驱动器/形态键/帧范围) |
| 编辑 VSE 视频序列(片段/转场/特效) |
| 编辑网格数据(顶点/边/面) |
命令式写入层(9 个工具):
工具 | 描述 |
| 创建场景对象(MESH/LIGHT/CAMERA/CURVE/EMPTY/ARMATURE/TEXT) |
| 变换/父子/可见性/重命名/删除 |
| 材质创建/PBR 编辑/赋予/复制/删除 |
| 修改器添加/配置/应用/删除/排序 |
| 集合创建/删除/对象链接/层级/可见性 |
| UV 展开/缝合线/打包/图层管理 |
| 对象/骨骼约束添加/配置/删除 |
| 物理模拟添加/配置/烘焙 |
| 渲染引擎/世界环境/时间线配置 |
后备层(5 个工具):
工具 | 描述 |
| 执行任意 bpy.ops.* 操作符 |
| 执行任意 Python 代码(⚠️ 谨慎使用) |
| 导入/导出资产文件(FBX/OBJ/GLTF/USD/Alembic/STL 等) |
| 渲染场景到图像/视频 |
| 在单次请求中执行多个工具调用(性能优化) |
注意: 所有工具使用
blender_前缀以避免多服务器环境下的命名冲突。工具名称符合 MCP 规范使用下划线。Payload 包装层已移除 - 所有参数直接暴露为顶层 inputSchema 属性。
工具命名: 所有工具使用 blender_ 前缀以避免多服务器环境下的命名冲突。
特性
撤销支持:所有写入操作自动推入 Blender 撤销栈 — Ctrl+Z 正确回退。
本地化支持:支持任何语言的 Blender。使用英文显示名如
"Principled BSDF"会自动解析为本地化名称。错误报告:插件详细错误信息在 MCP 工具响应中可见。
进度通知:支持长时间运行操作(渲染、导入导出)的 MCP 进度通知。客户端可在
_meta字段中包含progressToken以接收实时进度更新。
进度通知
Blender MCP 支持长时间运行操作的 MCP 进度通知。接收进度更新:
// 客户端请求携带 progressToken
{
"method": "tools/call",
"params": {
"name": "blender_render_scene",
"arguments": {"output_path": "/tmp/render.png"},
"_meta": {"progressToken": "render-123"}
}
}
// 服务端发送进度通知
{
"jsonrpc": "2.0",
"method": "notifications/progress",
"params": {
"progressToken": "render-123",
"progress": 50,
"total": 100,
"message": "正在渲染第 50/100 帧"
}
}安全特性:
频率限制:通知间隔最小 100ms
进度消息截断至 1000 字符
最多 100 个并发进度 token
线程安全的通知输出
已知限制(Blender 5.1)
限制 | 原因 |
VSE 片段创建失败 | Blender 5.1 定时器上下文 API 限制 |
合成器节点编辑失败 | Blender 5.1 定时器上下文 API 限制 |
对象指针属性无法设置 | MCP |
多材质槽创建 | MCP |
快速开始
初次使用? 请参阅 5 分钟快速开始指南 获取详细安装步骤。
// 创建一个立方体
{
"name": "MyCube",
"object_type": "MESH",
"primitive": "cube",
"size": 2.0
}
// 移动它
{
"name": "MyCube",
"location": [1, 2, 3]
}
// 添加细分修改器
{
"action": "add",
"object_name": "MyCube",
"modifier_name": "Subdivision",
"modifier_type": "SUBSURF",
"settings": {"levels": 2}
}
// 读取对象数据
{
"name": "MyCube",
"include": ["summary", "modifiers"]
}
// 捕获视口
{
"shading": "SOLID",
"format": "PNG"
}安装
Blender 插件
将
src/blender_mcp_addon/复制或符号链接到 Blender 插件目录:Windows:
%APPDATA%\Blender\<版本>\scripts\addons\blender_mcp_addonmacOS:
~/Library/Application Support/Blender/<版本>/scripts/addons/blender_mcp_addonLinux:
~/.config/blender/<版本>/scripts/addons/blender_mcp_addon
在 Blender 中:编辑 > 偏好设置 > 插件 > 搜索 "Blender MCP" > 启用
配置后点击 "启动服务器"
MCP 服务器
# 推荐:一行命令安装并运行
uvx ageless-blender-mcp
# 或全局安装
pip install ageless-blender-mcp
blender-mcp
# 或从源码
uv sync
python -m blender_mcp.mcp_protocol支持的 MCP 客户端
客户端 | 文档 |
Amp | |
Antigravity | |
Claude Code | |
Cline | |
Codex | |
Copilot CLI | |
Copilot / VS Code | |
Cursor | |
Factory CLI | |
Gemini CLI | |
Gemini Code Assist | |
JetBrains AI 助手 | |
Kiro | |
OpenCode | |
Qoder | |
Visual Studio | |
Warp | |
Windsurf |
版本兼容性
Blender 版本 | 状态 |
4.2 LTS | ✅ 支持 |
4.5 LTS | ✅ 支持 |
5.0+ | ✅ 支持 |
5.1 | ✅ 支持(部分 API 限制,见上方说明) |
< 4.2 | ❌ 不支持 |
详见 docs/versioning/support-matrix.md。
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Star History
License
MIT License - see LICENSE for details.
Available Tools
29 toolsblender_batch_executeADestructive
Execute multiple operations in a single batch request. Reduces MCP round-trips for complex workflows.
Use this when: you need to perform multiple independent operations efficiently.
Do NOT use for: single operations (use the specific tool directly).
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | List of operations to execute. | |
| stop_on_error | No | Stop on first error (default: true). | |
| continue_on_error | No | Continue even on errors (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint true, so description doesn't need to restate that. Description adds context that batch reduces round-trips, but doesn't elaborate on side effects of individual operations, which is acceptable as they are independent.
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?
Three sentences, front-loaded with purpose, followed by usage guidance. No redundant information, every sentence adds value.
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 adequately explains the tool's purpose and usage. No output schema exists, but the tool's output (batch results) is implied. Error handling is covered by parameters. Sibling tools are many, and the batch tool clearly fills a gap.
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 100%, so parameters are well-documented. The description adds no additional meaning beyond what the schema provides, so baseline of 3 is 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?
Clearly states it executes multiple operations in a single batch request, reducing round-trips. Differentiates from sibling tools by focusing on multiple vs single operations.
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?
Explicitly provides when to use (multiple independent operations) and when not to use (single operations, with alternative to use specific tool directly).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_capture_viewportARead-onlyIdempotent
Capture a screenshot of the current 3D viewport. This is the LLM's only way to 'see' the visual result. Supports different shading modes and camera view.
Use this when: you need visual verification of changes.
Do NOT use for: scene data queries (use blender_get_scene).
| Name | Required | Description | Default |
|---|---|---|---|
| shading | No | Viewport shading mode for the capture. | SOLID |
| camera_view | No | If true, capture from the active camera's perspective. | |
| format | No | Image format for the capture. | PNG |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds useful context that this is the LLM's only way to 'see' visual results, but doesn't elaborate on return format or potential limitations beyond annotations.
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 remarkably concise, using only four sentences to convey purpose, usage, and exclusions. It is front-loaded with the core action and no redundant information.
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 simplicity with zero required parameters and clear annotations, the description covers the essential use case, when to use, and when not to. Mentioning it's the only visual feedback is important context. However, it could briefly mention the return format (image) since there is no output schema.
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 100%, and the description merely hints at shading and camera view options without adding new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a screenshot of the current 3D viewport, which is a specific verb-resource combination. It distinguishes itself from siblings by noting it's the LLM's only way to see visual results, and contrasts with blender_get_scene for scene data queries.
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?
Explicit 'Use this when' and 'Do NOT use for' clauses provide clear guidance on when to use the tool (visual verification) and when not to (scene data queries, directing to blender_get_scene).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_create_objectA
Create a new object in the Blender scene. Supports mesh primitives, lights, cameras, curves, empties, armatures, and text objects. Automatically linked to the specified collection.
Use this when: you need to add a new object to the scene.
Do NOT use for: modifying existing objects (use blender_modify_object), adding modifiers (use blender_manage_modifier), assigning materials (use blender_manage_material).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new object. | |
| object_type | No | Type of object to create. | MESH |
| primitive | No | Mesh primitive shape. Only for object_type=MESH. | |
| size | No | Size of mesh primitive in Blender units. | |
| segments | No | Segments for sphere/cylinder/cone/torus. | |
| light_type | No | Light type. Only for object_type=LIGHT. | POINT |
| energy | No | Light energy in watts. Only for LIGHT. | |
| color | No | Light color [r,g,b] range 0-1. Only for LIGHT. | |
| lens | No | Camera focal length in mm. Only for CAMERA. | |
| clip_start | No | Camera near clip. Only for CAMERA. | |
| clip_end | No | Camera far clip. Only for CAMERA. | |
| set_active_camera | No | Set as active scene camera. Only for CAMERA. | |
| curve_type | No | Spline type. Only for CURVE. | BEZIER |
| body | No | Text content. Only for TEXT. | |
| extrude | No | Extrude depth for TEXT. | |
| location | No | 3D position [x, y, z]. | |
| rotation | No | Euler rotation [x, y, z] in radians. | |
| scale | No | Scale [x, y, z]. | |
| collection | No | Collection to link to. Uses scene collection if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds context about automatic collection linking and implies state changes. However, it does not clarify behavior on repeated calls (idempotentHint=false) or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short paragraphs: first states core purpose and supported types, second gives usage guidelines. No wasted words, front-loaded with key information.
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 19 parameters and no output schema, the description covers the overall purpose well but does not specify what the tool returns (e.g., the created object). However, the schema and guidelines compensate for most needs.
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 100%, so baseline is 3. The description mentions supported object types but does not add meaning beyond parameter names and descriptions already in the schema. No additional parameter context.
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 (create a new object), lists supported types (mesh, light, camera, etc.), and mentions automatic collection linking. This distinguishes it from sibling tools like blender_modify_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?
Explicitly provides when-to-use (adding a new object) and when-not-to-use with specific alternative tools (blender_modify_object, blender_manage_modifier, blender_manage_material). No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_edit_animationADestructive
Edit animation data — insert/modify/delete keyframes, manage NLA strips, set drivers, control shape keys, and configure timeline settings.
Use this when: you need to create or modify animation.
Do NOT use for: reading animation data (use blender_get_animation_data).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The animation operation to perform. | |
| object_name | No | Target object name. | |
| data_path | No | Property path for keyframe/driver (e.g. 'location', 'rotation_euler', 'scale'). | |
| index | No | Array index for the property (-1 for all channels, 0/1/2 for X/Y/Z). | |
| frame | No | Frame number for keyframe operations. | |
| value | No | Value for keyframe or shape key (number, array, or boolean). | |
| interpolation | No | Keyframe interpolation type. | |
| nla_action | No | Action name for NLA strip operations. | |
| nla_start_frame | No | Start frame for NLA strip. | |
| nla_strip_name | No | NLA strip name for modify/remove. | |
| driver_expression | No | Python expression for driver. | |
| shape_key_name | No | Shape key name for set_shape_key. | |
| fps | No | Frames per second (for set_frame_range). | |
| frame_start | No | Start frame (for set_frame_range or set_frame). | |
| frame_end | No | End frame (for set_frame_range). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations destuctiveHint=true and readOnlyHint=false are reinforced by description mentioning insert/modify/delete. No contradiction, and description adds specifics about what gets modified.
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 very concise: two sentences with purpose and usage guidelines, no unnecessary words. Front-loaded with the main function.
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 complexity of the tool (15 params, 11 actions), the description is adequate for orientation but lacks details on parameter dependencies, return values, or prerequisites. No output schema to compensate.
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 covers all 15 parameters with descriptions (100% coverage), so the description's lack of parameter detail is acceptable. No additional semantics beyond the 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 it edits animation data with specific operations (keyframes, NLA strips, drivers, shape keys, timeline) and distinguishes from the sibling blender_get_animation_data for reading.
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?
Explicitly says 'Use this when: you need to create or modify animation' and 'Do NOT use for: reading animation data (use blender_get_animation_data)', providing clear usage context and an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_edit_meshADestructive
Edit mesh geometry with operations like extrude, inset, bevel, loop cut, dissolve, merge, subdivide, and delete.
Use this when: you need to modify mesh topology.
Do NOT use for: UV operations (use blender_manage_uv), object transforms (use blender_modify_object).
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | Name of the mesh object. | |
| action | Yes | Mesh operation to perform. | |
| selection | No | Selection type for delete action. | |
| select_action | No | Action for select_all. | |
| mode | No | Selection mode for select_mode action. | |
| threshold | No | Merge threshold for merge_vertices. | |
| segments | No | Segments for bevel. | |
| number_cuts | No | Cuts for subdivide/loop_cut. | |
| amount | No | Amount for inset/bevel. | |
| use_boundary | No | For inset, inset boundary edges. | |
| use_even_offset | No | For inset, use even offset. | |
| use_relative_offset | No | For inset, use relative offset. | |
| use_verts | No | For dissolve, also dissolve vertices. | |
| use_face_split | No | For dissolve_edges, use face split. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description doesn't need to repeat safety info. It adds operation names but no further behavioral details beyond what annotations imply. Given the annotation coverage, a score of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences for purpose and usage guidelines, plus two bullet-like lines. No wasted words. Front-loaded with the primary action.
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 14 parameters, all schema-documented, and no output schema, the description adequately covers purpose and usage. Some operation-specific parameter interactions are implied but not detailed, yet the enum values and schema make it sufficient. Slightly less than perfect due to lack of deeper examples.
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 100% - all 14 parameters are documented in the schema. The description does not add any parameter-specific meaning beyond listing actions. Baseline 3 is correct as the schema already handles parameter semantics.
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 'Edit mesh geometry' and lists specific operations like extrude, inset, bevel, etc. It distinguishes from siblings such as blender_manage_uv and blender_modify_object by focusing on mesh topology editing.
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?
Explicitly provides 'Use this when: you need to modify mesh topology.' and 'Do NOT use for: UV operations (use blender_manage_uv), object transforms (use blender_modify_object).' This gives clear context and references alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_edit_nodesADestructive
Edit any node tree in Blender — add/remove nodes, connect/disconnect sockets, set node input values and properties. Supports all 7 node tree contexts. Operations are executed in order within a single call.
Use this when: you need to build or modify shader, compositor, or geometry node graphs.
Do NOT use for: high-level PBR properties (use blender_manage_material), reading node trees (use blender_get_node_tree first).
| Name | Required | Description | Default |
|---|---|---|---|
| tree_type | Yes | Type of node tree to edit. | |
| context | Yes | Context within the tree type. SHADER: OBJECT|WORLD|LINESTYLE|NODE_GROUP. COMPOSITOR: SCENE|NODE_GROUP. GEOMETRY: MODIFIER|TOOL|NODE_GROUP. | |
| target | No | Target name. For SHADER/OBJECT: material name. For SHADER/WORLD: world name. For GEOMETRY/MODIFIER: 'ObjectName/ModifierName'. For COMPOSITOR/SCENE: omit or scene name. For NODE_GROUP: node group name in bpy.data.node_groups. | |
| operations | Yes | Array of node operations to execute in order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds that operations are executed in order within a single call, which is useful behavioral context. No contradictions.
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 brief, front-loaded with the main action, and uses bullet-like structure for usage guidelines. Every sentence adds value without redundancy.
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 covers the core functionality and usage boundaries. However, without an output schema, it could mention return values or error behavior. Still, the detailed input schema compensates.
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 100%, so the description adds minimal additional meaning beyond what's already provided in the schema. It notes 'all 7 node tree contexts' but this is implicit from the enums.
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: editing node trees in Blender (add/remove nodes, connect/disconnect sockets, set values). It distinguishes itself from siblings by mentioning high-level material properties and reading node trees, which are handled by other 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 description explicitly provides when to use the tool (building or modifying node graphs) and when not to (PBR properties, reading node trees), with direct references to alternative tools (blender_manage_material, blender_get_node_tree).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_edit_sequencerADestructive
Edit the Video Sequence Editor (VSE) — add/modify/delete strips, add transitions and effects. Supports video, image, audio, text, color, and adjustment layer strips.
Use this when: you need to edit video sequences or add VSE effects.
Do NOT use for: compositor node effects (use blender_edit_nodes with tree_type=COMPOSITOR).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The sequencer operation to perform. | |
| strip_type | No | Type of strip to add (for add_strip action). | |
| filepath | No | File path for VIDEO/IMAGE/AUDIO strips. | |
| channel | No | VSE channel number. | |
| frame_start | No | Start frame of the strip. | |
| frame_end | No | End frame of the strip. | |
| strip_name | No | Strip name for modify/delete/move operations. | |
| text | No | Text content for TEXT strips. | |
| font_size | No | Font size for TEXT strips. | |
| color | No | Color [r,g,b] or [r,g,b,a] for TEXT/COLOR strips. | |
| effect_type | No | Effect type for add_effect action. | |
| transition_type | No | Transition type for add_transition action. | |
| transition_duration | No | Duration in frames for transitions. | |
| settings | No | Additional strip/effect-specific settings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description aligns by mentioning delete operations. It adds context on the range of possible operations (add, modify, delete, effects, transitions), going beyond what annotations provide. No contradiction.
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?
Three sentences, front-loaded with the core purpose, followed by usage guidelines. Every sentence serves a distinct purpose with no wasted words.
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 14 parameters, 100% schema coverage, and no output schema, the description is quite complete. It covers all actions, strip types, and effects. Missing details like return values or error handling, but overall sufficient for a complex editing tool.
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 100%, so baseline is 3. The description does not add additional semantics for individual parameters beyond what the schema provides. It groups related operations and types at a high level, but that is more about purpose clarity.
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?
Description clearly states the tool edits the Video Sequence Editor (VSE) with specific actions (add/modify/delete strips, add effects/transitions) and lists supported strip types. It distinguishes from the sibling tool blender_edit_nodes by explicitly excluding compositor node effects.
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?
Provides explicit when-to-use and when-not-to-use guidance, including a direct reference to an alternative tool (blender_edit_nodes with tree_type=COMPOSITOR). This helps the agent select the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_execute_operatorADestructive
Execute any Blender operator (bpy.ops.*) by name with parameters.
Use this when: you need a Blender operation not covered by other tools. Prefer specialized tools first for better validation and error messages.
Do NOT use for: object creation (use blender_create_object), script execution (use blender_execute_script), or import/export (use blender_import_export).
| Name | Required | Description | Default |
|---|---|---|---|
| operator | Yes | Operator ID in 'category.name' format (e.g., 'mesh.primitive_cube_add'). | |
| params | No | Operator parameters. | |
| context | No | Context override (e.g., active_object, mode). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description describes running arbitrary operators but adds no additional behavioral context (e.g., potential side effects, undo implications). It does not contradict annotations, but adds limited value beyond them.
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 three sentences long, front-loaded with purpose, then usage context, then exclusions. Every sentence contributes value with no redundancy.
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 role as a catch-all for operators, the description adequately covers when to use it and when not to, referencing sibling tools. It does not discuss return values (no output schema), but that is acceptable as results depend on the operator. Minor improvement could mention variable outcomes.
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 100% with descriptions for all three parameters. The description mentions the operator ID format ('category.name'), which is already in the schema, but adds no further meaning for 'params' or 'context'. Baseline 3 is appropriate given full 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 as executing any Blender operator by name with parameters. It distinguishes itself from sibling tools by explicitly listing what not to use it for (object creation, script execution, import/export), which is specific and helpful.
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 explicit usage guidance: 'Use this when you need a Blender operation not covered by other tools' and 'Prefer specialized tools first'. It also gives concrete exclusions with sibling tool names, making the decision clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_execute_scriptADestructive
Execute arbitrary Python code in Blender's Python environment. CAUTION: This tool has full access to Blender's API and filesystem.
Use only when: no other tool can accomplish the task. Try blender_execute_operator first for standard Blender operations.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python code to execute. Has access to bpy, mathutils, and all Blender modules. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true. The description adds context about full access to API and filesystem and includes a caution in caps. This reinforces and expands on the annotation without contradiction.
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?
Three sentences: the first states purpose, the second is a succinct caution (capitalized for emphasis), and the third gives usage guidance. No wasted words, 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?
With one parameter and no output schema, the description covers purpose, caution, and usage guidance. It does not explain return values or error handling, but given the simplicity, 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?
The input schema already describes the 'code' parameter with details (Python code, access to modules). The tool description adds no new meaning beyond the schema, so baseline 3 is 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 executes arbitrary Python code in Blender's environment, which is a specific verb-resource combination. The caution and recommendation to use blender_execute_operator first distinguishes it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Use only when: no other tool can accomplish the task. Try blender_execute_operator first for standard Blender operations.' This clearly states when and when not to use, and names an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_animation_dataARead-onlyIdempotent
Read animation data for an object or scene — keyframes, F-Curves, NLA strips, drivers, and shape keys.
Use this when: you need to understand existing animation before modifying it.
Do NOT use for: modifying animation (use blender_edit_animation).
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Object name, or 'scene' for scene-level animation data. | |
| include | No | Which animation data to include. | |
| frame_range | No | Optional [start, end] frame range to limit keyframe data. | |
| keyframe_detail | No | If true, return individual keyframes. Default: fcurve summaries only. | |
| max_keyframes | No | Max keyframes to return (prevents large responses). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. The description adds context on the data types read (keyframes, F-Curves, etc.) without contradicting annotations. Some missing mention of response size or pagination, but sufficient given annotation coverage.
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?
Three sentences, front-loaded with purpose, followed by usage guidance and exclusion. Every sentence is necessary and 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?
For a read-only tool with 100% schema coverage and solid annotations, the description covers purpose and usage. It does not explain return format or data volume limits (max_keyframes), but these are partially addressed by the schema and default parameter values.
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 100%, so baseline is 3. The description summarizes the data types already in the schema's 'include' enum but adds no new parameter-level detail beyond what the schema provides.
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 it reads animation data for objects/scenes, lists specific data types (keyframes, F-Curves, etc.), and distinguishes itself from the sibling tool blender_edit_animation for modifications.
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?
Explicit 'Use this when' and 'Do NOT use for' sections provide direct guidance on when to select this tool versus the alternative blender_edit_animation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_armature_dataARead-onlyIdempotent
Read armature/bone data — bone hierarchy, head/tail/roll positions, bone constraints, rest/pose transforms, bone groups, IK chains.
Use this when: you need bone/rig information for animation or rigging.
Do NOT use for: general object info (use blender_get_object_data).
| Name | Required | Description | Default |
|---|---|---|---|
| armature_name | Yes | Name of the armature object. | |
| include | No | Which data sections to include. | |
| bone_filter | No | Glob pattern to filter bones by name (e.g. 'Arm*' or '*_L'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by detailing the specific data sections read (hierarchy, poses, constraints, etc.), which is useful context beyond the annotations. No contradiction.
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?
Two sentences plus two usage directives, all front-loaded. Every sentence adds value with no unnecessary words.
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 simplicity (read-only, 3 params fully described in schema), the description covers purpose, usage context, and general behavior. Missing output format details but acceptable for a read tool.
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 100% with each parameter described. The description lists data sections that map to the include parameter, but it does not add significant meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb 'Read' and lists specific data types (bone hierarchy, head/tail/roll positions, constraints, etc.). It also distinguishes from sibling tool blender_get_object_data by explicitly stating what not to use it for.
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?
Provides explicit 'Use this when' context (bone/rig information for animation or rigging) and a 'Do NOT use for' directive with an alternative tool name, making it very clear when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_collectionsARead-onlyIdempotent
Return the collection hierarchy tree. Each collection shows name, child collections, object count, viewport/render visibility, and color tag.
Use this when: you need to understand scene organization.
Do NOT use for: listing objects (use blender_get_objects with collection filter).
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Start from this collection. Default: Scene Collection (root). | |
| depth | No | Maximum recursion depth for the tree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety profile is clear. Description adds value by specifying what information is returned (view/render visibility, color tag), going beyond the annotations.
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?
Two sentences plus usage guidelines, all essential information, no wasted words. Front-loaded with the main action.
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 read operation with full annotations, the description covers what is returned and when to use it. No output schema 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?
Schema coverage is 100%, so description doesn't need to add much. It mentions 'collection hierarchy tree' but doesn't elaborate on 'root' or 'depth' beyond what the schema already provides.
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?
Description clearly states it returns the collection hierarchy tree with specific details (name, children, visibility, color tag). It distinguishes from sibling tool blender_get_objects by explicitly saying not to use for listing objects.
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?
Provides explicit 'Use this when' and 'Do NOT use for' sections, naming the alternative tool (blender_get_objects) for the excluded case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_imagesARead-onlyIdempotent
List all images/textures in the file — name, dimensions, format, file path, packed status, color space, user count.
Use this when: you need to audit textures or find missing image files.
Do NOT use for: viewport screenshot (use blender_capture_viewport).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter images by status. | all |
| name_pattern | No | Glob pattern to filter by name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds no behavioral details beyond what annotations provide (e.g., no mention of permissions or side effects). Score 3 as per guidelines: with annotations, bar is lower but description adds minimal extra context.
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?
Two sentences in first paragraph for core purpose, two in second for usage guidance. No wasted text, front-loaded with key information. Efficient and 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?
No output schema, but description lists returned fields. Parameters are simple with default values. Annotations cover idempotency and safety. Missing a note about empty results, but overall complete for a list tool.
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 100%; both parameters have schema descriptions (filter with enum/default, name_pattern with glob pattern). Description does not add further meaning beyond schema, so baseline 3 is 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?
Description starts with specific verb+resource: 'List all images/textures in the file' followed by a detailed list of return fields. It clearly distinguishes from siblings (e.g., not for viewport screenshot).
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?
Explicitly states 'Use this when: you need to audit textures or find missing image files' and 'Do NOT use for: viewport screenshot (use blender_capture_viewport).' Provides clear context and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_materialsARead-onlyIdempotent
List all materials in the file with their basic properties (name, use_nodes, user count, base PBR values).
Use this when: you need an overview of available materials.
Do NOT use for: detailed node tree structure (use blender_get_node_tree with tree_type=SHADER).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter materials by usage status. | all |
| name_pattern | No | Glob pattern to filter by name (e.g. '*Metal*'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safe, read-only behavior. Description adds context about returned properties (basic properties, user count, PBR values). No contradictions or missing behavioral traits.
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?
Three sentences: purpose, usage guideline, negative usage with alternative. Front-loaded and efficient with no unnecessary words.
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?
Sufficient for a simple listing tool with strong annotations. Explicitly covers purpose, usage, and what it returns. Minor omission: does not state return format, but implied as list of material objects.
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 has 100% coverage with descriptions for both parameters (filter enum and name_pattern). Description provides no additional parameter-specific semantics beyond the 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?
Clear verb 'List' with specific resource 'all materials in the file' and explicit properties (name, use_nodes, user count, base PBR values). Distinguishes from sibling blender_get_node_tree.
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?
Explicitly states when to use ('when you need an overview of available materials') and when not to ('detailed node tree structure'), offering an alternative tool (blender_get_node_tree).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_node_treeARead-onlyIdempotent
Read the structure of any node tree — shader, compositor, or geometry nodes. Supports all 7 contexts.
Use this when: you need to understand node graph structure before editing.
Do NOT use for: editing nodes (use blender_edit_nodes).
| Name | Required | Description | Default |
|---|---|---|---|
| tree_type | Yes | Node tree type. | |
| context | Yes | Context: SHADER uses OBJECT|WORLD|LINESTYLE|NODE_GROUP, COMPOSITOR uses SCENE|NODE_GROUP, GEOMETRY uses MODIFIER|TOOL|NODE_GROUP. | |
| target | No | Target: material name (SHADER/OBJECT), world name (SHADER/WORLD), 'Object/Modifier' (GEOMETRY/MODIFIER), or node group name (NODE_GROUP). | |
| depth | No | 'summary': name/type only. 'topology': connected sockets + non-default values (recommended). 'full': all data. | topology |
| skip_defaults | No | If True, omit inputs with default values (reduces tokens). | |
| expand_groups | No | Recursively expand node groups. | |
| max_depth | No | Max recursion for group expansion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true. Description adds that it reads structure and supports all contexts, which complements annotations without contradiction.
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?
Extremely concise: two purpose sentences plus two usage guidelines. No wasted words. Front-loaded with core action.
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?
No output schema, but description clarifies what is returned (node graph structure). Parameters are well-documented in schema, and annotations cover safety. Slightly lacking detail on output format, but adequate.
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 100% with good parameter descriptions. Tool description does not repeat param details, which is acceptable. Baseline score of 3 applies.
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?
Clearly states verb 'read', resource 'node tree structure', and scope covering shader, compositor, geometry nodes with all 7 contexts. Distinguishes from sibling blender_edit_nodes.
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?
Explicit 'Use this when' and 'Do NOT use for' with alternative tool named (blender_edit_nodes). Provides clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_object_dataARead-onlyIdempotent
Get detailed data for a single object. Use the 'include' parameter to control which data is returned, avoiding context overflow.
Use this when: you need details about a specific object.
Do NOT use for: armature bone data (use blender_get_armature_data), node tree structure (use blender_get_node_tree).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the object to inspect. | |
| include | No | Which data sections to include. Use 'summary' for a quick overview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds context by explaining that the 'include' parameter controls which data is returned to avoid context overflow, and that it fetches data for a single object. This goes beyond annotations but is not extremely detailed, so a score of 4 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three short sentences that cover purpose, usage guidance, and exclusions. Every sentence adds value, with no unnecessary words or repetition.
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 moderate complexity (single object data with many include options) and the presence of full schema with annotations (read-only, idempotent), the description is reasonably complete. It explains the core function and how to control output, though it does not detail what each include option returns. However, the schema’s enum values provide enough context. With no output schema, a description could add more, but the current one suffices.
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 already provides full descriptions for both parameters (100% coverage). The description mentions the 'include' parameter's purpose and default value, but does not add significant new meaning beyond the schema. Per guidelines, baseline is 3 when schema coverage is high.
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 'Get detailed data for a single object' and specifies the use of the 'include' parameter to control data. It also distinguishes from siblings by mentioning what not to use for (armature bone data, node tree structure), making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use this when: you need details about a specific object' and 'Do NOT use for: armature bone data (use blender_get_armature_data), node tree structure (use blender_get_node_tree).' This clearly tells the agent when to use this tool and when to use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_objectsARead-onlyIdempotent
List objects in the Blender scene with optional filters. Returns name and type for each object by default.
Use this as the first call to understand what exists in a scene.
Do NOT use for: detailed object properties (use blender_get_object_data), material listing (use blender_get_materials), or collection tree (use blender_get_collections).
| Name | Required | Description | Default |
|---|---|---|---|
| type_filter | No | Filter by object type (MESH, LIGHT, CAMERA, CURVE, EMPTY, etc.). | |
| collection | No | Filter by collection name. Only returns objects in this collection. | |
| selected_only | No | If true, only return currently selected objects. | |
| visible_only | No | If true, only return objects visible in viewport. | |
| name_pattern | No | Glob pattern to filter by name (e.g. 'SM_*' or '*_high'). | |
| include_location | No | Include location [x, y, z] for each object (increases response size). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. Description adds useful context: default return fields (name and type) and effect of include_location parameter.
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?
Three sentences, front-loaded with purpose, then usage guidance. No unnecessary words. Highly efficient.
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?
Describes return values (name and type by default, location optionally) and differentiates from siblings. No gaps given the simplicity of the tool.
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 100%, so baseline is 3. Description does not significantly extend parameter semantics beyond what schema already provides, but it's adequate.
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?
Description clearly states it lists objects with optional filters, returns name and type, and distinguishes from sibling tools like blender_get_object_data and blender_get_collections.
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?
Explicitly recommends using this as the first call to understand the scene and lists alternatives for specific tasks, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_sceneARead-onlyIdempotent
Get scene-level global information — statistics, render engine config, world environment basics, timeline/FPS, Blender version, memory usage.
Use this when: you need the high-level project overview.
Do NOT use for: object details (use blender_get_objects or blender_get_object_data).
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Which sections to include in the response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's behavioral disclosure is less critical. The description adds context about what data is retrieved, which complements the annotations without contradiction.
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?
Three concise sentences: first states purpose and scope, second gives usage guidance, third gives exclusion. No unnecessary words, information 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?
Given the tool's simplicity (one optional parameter, no output schema), the description completely covers what the tool does, what parameter it accepts, and how it fits with sibling tools. No gaps.
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 100%, so baseline is 3. The description rephrases the enum values into more descriptive language (e.g., 'render engine config' vs 'render'), adding minor semantic value. However, it doesn't explain defaults or behavior when include is missing.
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?
Description clearly states 'Get scene-level global information' and enumerates specific categories (statistics, render engine, world, timeline, version, memory). It distinguishes from sibling tools by explicitly stating 'Do NOT use for object details' and naming 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?
Explicitly provides when-to-use ('high-level project overview') and when-not-to-use ('object details') with specific alternative tool names (blender_get_objects, blender_get_object_data). This leaves no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_get_selectionARead-onlyIdempotent
Return the current selection state — selected objects, active object, current interaction mode, and active tool.
Also returns node_editor selection if a Shader/Geometry/Compositor node editor is open, including selected nodes and the active node.
Use this when: you need to understand what the user is currently working on.
Do NOT use for: listing all objects (use blender_get_objects).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint) indicate safe read operation. The description adds specific behavioral details: it also returns node editor selection when applicable. No contradictions.
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?
Two concise paragraphs. First sentence summarizes core function. Every sentence adds value. No wasted words.
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 no output schema, description fully enumerates return values: selected objects, active object, mode, active tool, node editor selection. Complete for a getter tool.
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?
No parameters exist, so baseline is 4. Description adds no parameter info, but none is needed.
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 it returns selected objects, active object, mode, active tool, and node editor selection if applicable. This distinguishes it from siblings like blender_get_objects.
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?
Explicitly says when to use ('understand what the user is working on') and when not to ('listing all objects, use blender_get_objects'). Provides clear alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_import_exportA
Import or export asset files in various formats — FBX, OBJ, glTF, USD, Alembic, STL, and more.
Use this when: you need to import assets into or export assets from Blender.
Do NOT use for: scene manipulation (use blender_create_object or blender_modify_object).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Whether to import or export. | |
| format | Yes | File format: FBX, OBJ, GLTF, GLB, USD, USDC, USDA, ALEMBIC, STL, PLY, etc. | |
| filepath | Yes | Absolute file path for import source or export destination. | |
| settings | No | Format-specific settings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readOnly and non-destructive, but the description adds little beyond that. It doesn't discuss file overwrite behavior, scene addition on import, or potential side effects. Annotations alone suffice for basic safety but not 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 two sentences plus a usage note, with no wasted words. Key information is front-loaded and efficient.
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 covers purpose, formats, and usage boundaries. It lacks details about return values or side effects (e.g., that import adds objects to the scene, export overwrites files), but given no output schema and a straightforward function, it is largely sufficient.
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 100%, so the schema already details all parameters. The description lists formats but does not add new meaning to parameters like 'settings' or 'filepath'. Baseline score of 3 applies.
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 imports or exports asset files in various formats (FBX, OBJ, GLTF, USD, Alembic, STL, etc.), which matches the name and distinguishes it from scene manipulation 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?
Explicitly tells when to use (import/export) and when not to use (for scene manipulation, use blender_create_object or blender_modify_object instead), providing clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_manage_collectionADestructive
Create, delete, or manage collections — link/unlink objects, set parent, control visibility.
Use this when: you need to organize scene objects into collections.
Do NOT use for: reading collection data (use blender_get_collections).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The collection operation. | |
| collection_name | Yes | Name of the collection. | |
| object_name | No | Object name for link/unlink. | |
| parent | No | Parent collection name. | |
| hide_viewport | No | Hide in viewport (for set_visibility). | |
| hide_render | No | Hide in render (for set_visibility). | |
| color_tag | No | Color tag for visual organization. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and description lists destructive actions like delete, which is consistent. While description adds context about manage operations, it does not detail side effects beyond what annotations imply. No contradiction.
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?
Three sentences: first lists core actions, second gives use case, third provides exclusion. Front-loaded, no fluff, efficient.
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 7 parameters and no output schema, description covers main actions and usage guidance. Could add more detail on behavior like handling existing collections, but overall adequate for a management tool.
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 100%, so the schema already documents all parameters. The description reiterates the actions but does not add significant new meaning beyond what the schema provides. Baseline of 3 is 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?
Description clearly states it creates, deletes, or manages collections with specific actions like link/unlink objects, set parent, control visibility. It distinguishes from sibling blender_get_collections by explicitly stating not to use for reading collection data.
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?
Explicitly provides when to use ('organize scene objects into collections') and when not to use ('reading collection data') with an alternative tool mentioned (blender_get_collections).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_manage_constraintsADestructive
Add, configure, remove, enable/disable, or reorder constraints on objects or bones.
Use this when: you need to set up rigging constraints or motion control.
Do NOT use for: reading constraints (use blender_get_object_data with include=['constraints'] or blender_get_armature_data with include=['constraints']).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The constraint operation. | |
| target_type | No | Whether constraint is on an object or a bone. | OBJECT |
| target_name | Yes | Object name, or 'ArmatureName/BoneName' for BONE. | |
| constraint_name | No | Constraint name. | |
| constraint_type | No | Constraint type for add. Common: COPY_LOCATION, COPY_ROTATION, TRACK_TO, DAMPED_TRACK, IK, STRETCH_TO, CHILD_OF. Full list in bpy.types.Constraint bl_idname. | |
| settings | No | Constraint settings as key-value pairs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds no further behavioral context (e.g., side effects, errors, or specific destructive actions beyond the schema enum). It does not contradict annotations.
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: three sentences total, first sentence lists actions, next two provide usage boundaries. No wasted words, front-loaded with core purpose.
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 has a complex 'settings' object parameter and no output schema, the description could provide more guidance on common settings keys or what happens after operations. However, the use cases and exclusions are well-covered. Adequate but not fully 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 100% with detailed parameter descriptions. The tool description itself does not add additional semantic meaning beyond what's already in the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add, configure, remove, enable/disable, or reorder constraints on objects or bones.' It provides specific verbs and the resource, distinguishing it from sibling tools that read constraints.
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?
Explicit usage guidance is given: 'Use this when: you need to set up rigging constraints or motion control.' And 'Do NOT use for: reading constraints' with alternative tools (blender_get_object_data, blender_get_armature_data) named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_manage_materialADestructive
Create, edit, assign, duplicate, or delete materials. For high-level PBR property editing only. The 'delete' action is destructive and irreversible.
Use this when: you need to create/configure materials or assign them to objects.
Do NOT use for: node-level shader editing (use blender_edit_nodes with tree_type=SHADER).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The material operation. | |
| name | Yes | Material name. | |
| base_color | No | Base color [r,g,b,a] range 0-1. | |
| metallic | No | Metallic value 0-1. 0=dielectric, 1=full metal. | |
| roughness | No | Roughness value 0-1. 0=mirror, 1=diffuse. | |
| specular | No | Specular value 0-1. | |
| alpha | No | Alpha value 0-1. | |
| emission_color | No | Emission color [r,g,b,a]. | |
| emission_strength | No | Emission strength. | |
| use_fake_user | No | Prevent auto-deletion when unused. | |
| object_name | No | Object name for assign/unassign. | |
| slot | No | Material slot index (0-based). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the 'delete' action is 'destructive and irreversible,' which aligns with the annotations (destructiveHint: true). It also sets scope as 'For high-level PBR property editing only.' Since annotations already indicate destructiveHint and readOnlyHint, the description adds useful context about irreversible deletion and scope, but no contradictions.
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 concise: two sentences for purpose, followed by a clear usage section. Every sentence adds value, with no redundant information. The 'Do NOT use for' part is important and keeps it focused.
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 has 12 parameters and no output schema, the description covers all necessary aspects: actions (create, edit, assign, etc.), scope (PBR only), and alternative tool. It lacks explanation of return values, but that's acceptable since no output schema exists. The description is sufficiently complete for an AI agent.
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 100%, and the input schema provides detailed descriptions for each parameter (e.g., base_color, metallic, roughness). The description does not add additional parameter-level details beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create, edit, assign, duplicate, or delete materials. For high-level PBR property editing only.' It specifies the verb (manage) and resource (materials), and distinguishes itself from node-level editing by explicitly stating 'Do NOT use for: node-level shader editing.' This sets it apart from sibling tools like blender_edit_nodes.
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 explicitly states when to use this tool ('when you need to create/configure materials or assign them to objects') and when not to use it ('Do NOT use for: node-level shader editing (use blender_edit_nodes with tree_type=SHADER)'). This provides clear guidance on selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_manage_modifierADestructive
Add, configure, apply, remove, or reorder modifiers on an object. The 'apply' and 'remove' actions are destructive.
Use this when: you need to work with modifiers.
Do NOT use for: reading modifier details (use blender_get_object_data with include=['modifiers']).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The modifier operation. | |
| object_name | Yes | Name of the object. | |
| modifier_name | No | Modifier name. | |
| modifier_type | No | Modifier type for add. Common: SUBSURF, MIRROR, ARRAY, BOOLEAN, SOLIDIFY, BEVEL, SHRINKWRAP, DECIMATE, REMESH, CLOTH, ARMATURE, NODES. Full list in bpy.types.Modifier bl_idname. | |
| settings | No | Modifier settings as key-value pairs (e.g. {"levels": 3} for SUBSURF). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds value by specifying which actions ('apply' and 'remove') are destructive, going beyond the annotation. No contradiction. However, it omits other behavioral aspects like output or progression, so 4 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each purposeful: action list with destructiveness note, then usage guidelines. No fluff, front-loaded with core purpose. Exemplary 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?
For a 5-parameter tool with nested object and no output schema, the description covers actions, destructive behavior, and usage boundaries. Minor gaps: no mention of result/return, or what happens on invalid settings. Still quite complete given the schema richness.
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 100% with parameter descriptions. The description merely lists actions already in the enum without adding deeper meaning (e.g., what 'configure' does vs 'add'). Thus it does not elevate beyond the baseline of 3.
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 actions (add, configure, apply, remove, reorder) on modifiers of an object, using specific verbs and resource. It distinguishes itself from the sibling tool blender_get_object_data by explicitly saying 'Do NOT use for: reading modifier details (use blender_get_object_data with include=['modifiers']).'
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 explicit when-to-use ('need to work with modifiers') and when-not-to-use (reading details) guidance, including a direct alternative tool with usage hint. This fully satisfies the dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_manage_physicsADestructive
Add, configure, remove, or bake physics simulations — rigid body, cloth, soft body, fluid, particle systems, and force fields.
Use this when: you need physics simulations on objects.
Do NOT use for: reading physics data (use blender_get_object_data with include=['physics']).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The physics operation. | |
| object_name | Yes | Name of the object. | |
| physics_type | No | Physics type for add action. | |
| force_field_type | No | Force field type. Only for physics_type=FORCE_FIELD. | |
| settings | No | Physics settings as key-value pairs. | |
| frame_start | No | Bake start frame. | |
| frame_end | No | Bake end frame. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the agent knows it can modify/destroy data. The description adds behavioral context by enumerating actions (add, configure, remove, bake, free_bake) but doesn't elaborate on consequences of specific actions like baking or removing. Still, the combination with annotations provides sufficient 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 two sentences long, with the first sentence listing actions and types, and the second sentence giving usage guidance. No redundant information. Front-loaded and efficient.
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 (7 parameters, nested objects, multiple actions), the description is complete: it covers purpose, usage boundaries, and behavioral cues. No output schema is present, but the description doesn't need to explain return values for a mutation tool.
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 100% with all parameters documented. The description adds marginal value by summarizing the tool's purpose and listing physics types, but it doesn't provide additional semantics beyond what the schema already defines. Baseline 3 is 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 adds, configures, removes, or bakes physics simulations, listing specific physics types (rigid body, cloth, soft body, etc.). It uses a specific verb+resource structure that distinguishes it from sibling tools like blender_get_object_data, which is for reading physics data.
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 explicitly says 'Use this when: you need physics simulations on objects' and 'Do NOT use for: reading physics data (use blender_get_object_data with include=['physics'])'. This provides clear when-to-use and when-not-to-use guidance with an explicit alternative sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_manage_uvADestructive
UV mapping operations — mark/clear seams, unwrap with various algorithms, pack/scale UV islands, manage UV layers.
Use this when: you need algorithmic UV unwrapping or UV layer management.
Do NOT use for: UV painting (use blender_execute_operator).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The UV operation. | |
| object_name | Yes | Name of the mesh object. | |
| uv_map_name | No | UV map name for add/remove/set_active. | |
| angle_limit | No | Angle limit in degrees for smart_project. | |
| island_margin | No | Margin between UV islands. | |
| correct_aspect | No | Correct for non-square textures. | |
| selection_mode | No | Auto-select edges for mark_seam. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description adds no further behavioral context beyond the listed operations. It does not contradict annotations, but also does not elaborate on what gets destroyed or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three lines covering operations, usage guidelines, and exclusions. Every sentence adds value, with no 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?
For a tool with 7 parameters and no output schema, the description provides a reasonable overview of actions and usage scope. However, it lacks context on prerequisites (e.g., object must be a mesh) and does not clarify return values or side effects, which would enhance completeness.
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 100%, so the baseline is 3. The description does not add any additional parameter meaning beyond what is already in the schema, so no improvement over baseline.
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 handles UV mapping operations like marking seams, unwrapping, and layer management. It distinguishes itself from UV painting by referencing blender_execute_operator, but does not differentiate from other sibling tools like blender_edit_mesh or blender_modify_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?
The description explicitly states when to use ('for algorithmic UV unwrapping or UV layer management') and when not to use ('for UV painting'), with a direct alternative (blender_execute_operator). This provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_modify_objectADestructive
Modify an existing object — transform, parent, visibility, rename, set origin, or delete. The 'delete' action is destructive and irreversible.
Use this when: you need to change an object's properties.
Do NOT use for: modifiers (use blender_manage_modifier), materials (use blender_manage_material), constraints (use blender_manage_constraints), physics (use blender_manage_physics).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the object to modify. | |
| location | No | New 3D position [x, y, z]. | |
| rotation | No | New Euler rotation [x, y, z] in radians. | |
| scale | No | New scale [x, y, z]. | |
| parent | No | Parent object name. Set to '' to clear parent. | |
| visible | No | Viewport visibility. | |
| hide_render | No | Hide from render. | |
| new_name | No | Rename the object. | |
| active | No | Set as active object. | |
| selected | No | Set selection state. | |
| origin | No | Set origin point. | |
| delete | No | If true, delete this object. DESTRUCTIVE. | |
| delete_data | No | When deleting, also delete underlying data block. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds context by specifying that the 'delete' action is destructive and irreversible, which aligns with annotations. No additional behavioral traits (e.g., side effects, auth needs) are mentioned, but the description effectively reinforces the key destructive 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 extremely concise: two sentences plus a short bullet list. Every sentence adds value: purpose, destructive warning, and usage guidelines. No redundant or superfluous content.
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 (13 parameters, no output schema), the description covers the main purpose, destructive action, and provides alternatives. It doesn't explain return values (acceptable per rules since no output schema). Some edge cases or error conditions are missing, but overall it's sufficiently complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 13 parameters have descriptions in the input schema). The tool description does not add supplementary meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Modify an existing object' and lists specific actions (transform, parent, visibility, rename, set origin, delete), clearly distinguishing it from sibling tools like blender_create_object, blender_manage_modifier, etc.
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?
Provides explicit 'Use this when' and 'Do NOT use for' directives, listing specific sibling tools (blender_manage_modifier, blender_manage_material, blender_manage_constraints, blender_manage_physics), which gives clear guidance on when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_render_sceneA
Render the current scene to an image file. Supports both still images and animations.
Use this when: you need to render the scene to disk.
Do NOT use for: viewport screenshots (use blender_capture_viewport), scene setup (use blender_setup_scene).
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | Absolute file path to save the rendered image. | |
| resolution_x | No | X resolution override. | |
| resolution_y | No | Y resolution override. | |
| samples | No | Render samples (Cycles only). | |
| animation | No | If True, render animation frames. | |
| frame_start | No | Start frame for animation render. | |
| frame_end | No | End frame for animation render. | |
| use_viewport | No | If True, use viewport render (EEVEE only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false (modifies), destructiveHint=false, idempotentHint=false. Description adds that it writes to disk but does not elaborate on file overwrite behavior or scene state changes. Adequate but not exceptional.
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?
Three sentences, front-loaded with purpose, then usage guidance and exclusions. No extraneous information.
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?
Covers purpose, usage, and supports still/animations. Lacks mention of output format or overwrite behavior, but output_path is required and implies file creation. Adequate for the task.
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 100%, so the schema fully documents each parameter. The description does not add extra semantic context beyond what is already in the 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?
States the tool renders the current scene to an image file, supporting both still images and animations. Explicitly distinguishes from siblings like blender_capture_viewport and blender_setup_scene.
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?
Provides explicit when-to-use ('need to render the scene to disk') and when-not-to-use guidelines with direct alternatives (viewport screenshots -> blender_capture_viewport, scene setup -> blender_setup_scene).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_setup_sceneAIdempotent
Configure scene-level settings — render engine and quality, output resolution, world environment basics, and timeline/FPS.
Use this when: you need to configure render, output, or timeline settings.
Do NOT use for: detailed world shader editing (use blender_edit_nodes with tree_type=SHADER, context=WORLD).
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Render engine. | |
| samples | No | Render samples. | |
| resolution_x | No | Output width in pixels. | |
| resolution_y | No | Output height in pixels. | |
| output_format | No | Output file format. | |
| output_path | No | Output file/directory path. | |
| film_transparent | No | Render with transparent background. | |
| denoising | No | Enable render denoising. | |
| denoiser | No | Denoiser type. | |
| background_color | No | World background color [r,g,b,a]. | |
| background_strength | No | World background strength. | |
| fps | No | Frames per second. | |
| frame_start | No | Scene start frame. | |
| frame_end | No | Scene end frame. | |
| frame_current | No | Set current frame. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (idempotentHint=true, readOnlyHint=false) are not contradicted. Description adds context about setting categories, but does not discuss potential side effects or prerequisites beyond annotations.
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?
Two core sentences plus two bullet-like usage directives. No redundancy or unnecessary details; every sentence adds value.
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 15 parameters and no output schema, the description covers the tool's scope and usage boundaries adequately. Could mention that all parameters are optional (inferable from required:0), but is sufficient for 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 coverage is 100% so baseline is 3. Description groups parameters into logical categories (render, output, world, timeline), adding semantic value beyond the individual parameter 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 specifies the tool configures scene-level settings for render engine, output, timeline, and world basics, with clear verb 'configure' and resource 'scene-level settings'. It distinguishes from a sibling tool by excluding detailed world shader editing.
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?
Explicitly states when to use ('configure render, output, or timeline settings') and when not to use ('detailed world shader editing') with a direct alternative tool reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool has a clearly distinct purpose with specific 'Use this when' and 'Do NOT use for' guidelines, preventing any ambiguity between overlapping operations.
All tools follow a consistent 'blender_verb_noun' pattern (e.g., blender_create_object, blender_edit_mesh), with verbs that accurately describe the action.
29 tools is on the higher side but justified given Blender's complexity. The set covers major functionality without being bloated, though a few specialized tools could be merged.
Covers core Blender workflows (modeling, animation, rendering, materials, nodes, physics). Minor gaps like grease pencil and sculpting exist but do not hinder primary use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Cloud Blender for AI agents: scenes, assets, renders, MP4, STL, GLB — over hosted remote MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to control Blender through natural language for 3D scene creation, animation, and rendering. It provides over 550 actions and direct Python execution via a bridge to a live local Blender session.3MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to control Blender's 3D workflow via an embedded MCP server.26MIT
- AlicenseCqualityDmaintenanceMCP server that enables AI to control Blender 3D, providing 175 typed tools for objects, materials, animation, compositing, and more via the Model Context Protocol.1002MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI assistants like Codex or ChatGPT to inspect and control a local Blender scene, including creating objects, editing materials, setting cameras and lights, rendering previews, and saving safe copies of .blend files.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ageless-h/blender-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server