Blender MCP Server
Controls Blender from any AI assistant, enabling creation and manipulation of 3D objects, materials, rendering, scene export, and Python execution.
Click on "Deploy 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 MCP ServerCreate a red sphere at the origin"
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 Server
Control Blender from any AI assistant using the Model Context Protocol (MCP).
27 tools across 7 namespaces — create objects, assign materials, render images, export scenes, execute Python scripts, manage async jobs, and more.

How It Works
┌─────────────┐ stdio ┌──────────────────┐ JSON/TCP ┌─────────────────┐
│ MCP Client │ ◄──────────────► │ MCP Server │ ◄─────────────► │ Blender Add-on │
│ (any host) │ │ (Python) │ localhost:9876 │ (runs in bpy) │
└─────────────┘ └──────────────────┘ └─────────────────┘The Blender add-on runs inside Blender and listens on
localhost:9876.The MCP server connects to your AI client via stdio and forwards tool calls to Blender over TCP. Every request carries a shared secret that the add-on writes to
~/.blender-mcp/token(mode0600).You ask the AI → it calls MCP tools → Blender executes commands → results flow back.
Related MCP server: BlenderMCP
Quick Start (macOS & Linux)
Install Blender 3.6+ and Python 3.10+, then:
git clone https://github.com/djeada/blender-mcp-server.git
cd blender-mcp-server
scripts/setup.sh # venv + MCP server, installs and enables the Blender add-on
scripts/start.sh claude # opens Blender and a Claude Code session already connected to itscripts/start.sh codex does the same with Codex, and scripts/start.sh none just opens Blender
with the bridge running. Anything after the client name goes to the client, e.g.
scripts/start.sh claude "Build a snowman and render it". Stop the Blender it opened with scripts/stop.sh.
start.sh hands the MCP server to the client on the command line, so it changes no client config. To
register the server permanently instead, run scripts/setup.sh --register claude,codex,claude-desktop.
The scripts find Blender on your PATH, in /Applications/Blender.app, or via BLENDER_BIN.
Demos
Each demo is one prompt, recorded end to end against a live Blender. scripts/record_demos.sh
re-records them. Every demo also has a plain Blender Python script, so you can build the same kind of
scene without an AI: scripts/run_demo.sh 1 (GUI), --background 1 (render only), or --bridge 1
(send it through the MCP bridge to the Blender that start.sh opened).
Demo | Client | |
Still life from a sentence: object, material and render tools | Claude Code | |
Procedural city with Python: | Codex | |
Animate live, render headless: keyframes, then | Claude Code |
Manual Setup
1. Install the MCP Server
git clone https://github.com/djeada/blender-mcp-server.git
cd blender-mcp-server
python3 -m venv .venv
source .venv/bin/activate
pip install -e .This creates the executable .venv/bin/blender-mcp-server.
2. Install the Blender Add-on
Download blender_mcp_bridge.zip from the latest release, or build it yourself:
./scripts/build_addon_zip.shThen in Blender:
Go to Edit → Preferences → Add-ons → Install from Disk (Blender 4.2+ installs it as an extension; older versions as a legacy add-on).
Select
dist/blender_mcp_bridge.zipand enable Blender MCP Bridge.In the 3D Viewport, press N → open the MCP tab.
Confirm it shows Listening on 127.0.0.1:9876.
3. Connect Your MCP Client
Add to your config file:
OS | Path |
macOS |
|
Windows |
|
Linux |
|
{
"mcpServers": {
"blender": {
"command": "/absolute/path/to/blender-mcp-server/.venv/bin/blender-mcp-server"
}
}
}Replace the path with the actual location of your clone.
Register the server once:
codex mcp add blender -- /absolute/path/to/blender-mcp-server/.venv/bin/blender-mcp-serverVerify with codex mcp list. Then start Codex from any directory — it launches the server automatically.
Point any MCP-compatible client at the server executable:
/absolute/path/to/blender-mcp-server/.venv/bin/blender-mcp-serverThe server uses stdio transport. No additional flags are needed.
Variable | Default | Purpose |
|
| Bridge host |
|
| Bridge port (match the add-on's Port preference) |
| — | Auth token; overrides the token file (set it for both Blender and the server) |
|
| Where the add-on writes and the server reads the token |
| none | Seconds to wait for a bridge response before giving up |
|
| Blender binary for |
|
| Set to |
|
| Default timeout (seconds) for headless runs |
The image contains only the MCP server. For the bridge transport, share the host network and mount the token:
docker build -t blender-mcp-server .
docker run -i --rm --network host \
-v ~/.blender-mcp/token:/home/mcp/.blender-mcp/token:ro blender-mcp-serverFor the headless transport, mount a Blender install and set BLENDER_BIN.
4. Start Using It
Make sure Blender is open with the add-on listening, then ask your AI assistant:
"What objects are in my Blender scene?"
"Create a cube named TestCube at [0, 0, 1]"
"Render the scene to /tmp/render.png"
The AI calls MCP tools like blender_scene_list_objects and blender_object_create, which the server forwards to Blender.
Example Prompts
"What objects are in my scene?"
"Show me the transform of the Camera object"
"List all materials in the file"
"Create a sphere named 'Earth' at position [0, 0, 2] with size 3"
"Add a cylinder at the origin, then scale it to [0.5, 0.5, 4] to make a tall pillar"
"Create 5 cubes in a row spaced 3 units apart"
"Create a red material and assign it to the Cube"
"Make a material called 'Ocean' with color [0.0, 0.3, 0.8] and assign it to the Sphere"
"Change the color of 'RedMaterial' to orange"
"Move the Cube up 2 units on the Z axis"
"Rotate the Cylinder 45 degrees on the Z axis"
"Scale the Sphere to [2, 2, 2]"
"Render the scene at 1920×1080 and save it to /tmp/render.png"
"Export the scene as a GLB file to /tmp/scene.glb"
"Run this Blender Python:
bpy.ops.mesh.primitive_monkey_add(location=(0,0,2))""Execute the fluid_domain.py script from the library with resolution 128"
"Start an async bake job for the fluid simulation and tell me the job ID"
"Undo the last change"
"Redo what was just undone"
Tool Reference
Scene Inspection
Tool | Description |
| Scene metadata — name, frame range, render engine, resolution, object count |
| List all objects, optionally filter by type ( |
| Get position, rotation, and scale of an object by name |
| Parent/child hierarchy tree (full scene or subtree) |
Object Manipulation
Tool | Description |
| Create primitives: |
| Delete an object by name |
| Move — absolute |
| Set rotation |
| Set scale |
| Duplicate with optional new name |
Materials
Tool | Description |
| List all materials in the file |
| Create a material with optional base color |
| Assign a material to an object |
| Set the Principled BSDF base color |
| Set an image texture as base color |
Rendering & Export
Tool | Description |
| Render still image — output path, resolution, engine |
| Render animation — frame range, output path, engine |
| Export as glTF/GLB |
| Export as OBJ |
| Export as FBX |
History
Tool | Description |
| Undo the last operation |
| Redo the last undone operation |
Python Execution
Tool | Description |
| Run a Python script synchronously. Accepts |
| Start a long-running script asynchronously. Returns a |
| Poll an async job's status, result, stdout, stderr, and error. |
| Cancel a running or queued async job. |
| List known async jobs with IDs, status, and creation time. |
Script Library
Pre-built scripts in scripts/library/ for use with blender_python_exec via script_path:
Script | Description |
| Create primitive meshes through the data API (no |
| Create a Mantaflow fluid domain |
| Create an inflow source |
| Set objects as collision effectors |
| Add rigid body physics |
| Set scene frame range |
| Create and configure a camera |
| Insert transform keyframes |
| Organize objects into collections |
| Apply transforms to objects |
| Save the |
See scripts/library/README.md for full argument docs and a dam-break walkthrough.
Tips for physics workflows:
Prefer
create_mesh.py(data API) overbpy.ops.mesh.primitive_*_addin live sessions — the operator path can destabilize view-layer updates around fluid setup.Keep Mantaflow liquid modifiers hidden in the viewport to avoid crashes in Blender 4.x.
Use
transport="headless"for heavy physics bakes — this runs scripts in a separateblender -bprocess.
Safety & Security
blender_python_exec runs arbitrary Python inside Blender, so anything that can talk to the bridge can run code as you.
The bridge is therefore locked to clients that can read your token file.
Feature | Description |
Token authentication | Every bridge request must carry the secret from |
Strict framing | The first malformed line closes the connection, so a web page cannot smuggle a command inside an HTTP request to |
Automatic undo push | Mutation tools push an undo step before executing (Python exec excluded for stability). |
Safe Mode | Restricts render/export/texture paths to the approved roots (or the saved |
Allowed Commands | Optional allowlist of bridge commands (e.g. read-only tools only). |
Script path restrictions |
|
Inline code toggle | Disable inline code execution via add-on preferences. |
Module blocklist | Imports of |
The headless transport runs in a separate blender -b process under the MCP server's user and is not subject to the
add-on's preferences. Set BLENDER_MCP_HEADLESS=0 to turn it off.
Add-on Preferences
In Blender → Edit → Preferences → Add-ons → Blender MCP Bridge:
Setting | Default | Description |
Safe Mode | Off | Restrict file paths to the approved roots and disable inline code |
Port | 9876 | TCP port for the MCP bridge (the bridge rebinds on change; set |
Allowed Commands | (empty = all) | Comma-separated bridge commands to accept, e.g. |
Allow Inline Code | On | Allow |
Approved Script Roots | (saved blend file dir) | Semicolon-separated directories for script file access |
The preferences panel also shows where the auth token file lives.
Advanced Usage
The helper scripts in scripts/ connect directly to the Blender add-on on 127.0.0.1:9876, bypassing the MCP server entirely. Useful for verifying the add-on works:
python3 scripts/blender_scene_info.py
python3 scripts/blender_create_test_cube.py --name TestCube --x 0 --y 0 --z 1 --size 2
python3 scripts/blender_bridge_request.py scene.get_info
python3 scripts/blender_bridge_request.py object.translate --params '{"name":"TestCube","offset":[0,0,2]}'All scripts accept --host, --port, and --timeout flags, and read the auth token the same way the server does.
For one-off scripts and renders you don't need the add-on at all: pass transport="headless" to
blender_python_exec, blender_python_exec_async, or the render tools and the server runs a separate
blender -b process.
To serve the bridge from background Blender, note that bpy.app.timers does not fire after the startup
script returns, so the script has to drain the request queue itself. See
tests/integration/blender_bridge_harness.py:
BLENDER_MCP_PORT=9876 blender -b --factory-startup --python tests/integration/blender_bridge_harness.pyInline code — create a fluid domain:
{
"tool": "blender_python_exec",
"args": {
"code": "import bpy\nbpy.ops.mesh.primitive_cube_add(size=4, location=(0,0,2))\ndomain = bpy.context.active_object\ndomain.name = 'FluidDomain'\nbpy.ops.object.modifier_add(type='FLUID')\ndomain.modifiers['Fluid'].fluid_type = 'DOMAIN'\nsettings = domain.modifiers['Fluid'].domain_settings\nsettings.domain_type = 'LIQUID'\nsettings.resolution_max = 64\n__result__ = {'domain': domain.name, 'resolution': 64}",
"args": {"resolution": 64}
}
}Script file — set up colliders:
{
"tool": "blender_python_exec",
"args": {
"script_path": "scripts/library/effector.py",
"args": {
"objects": ["Ground", "Building_01", "Building_02"],
"effector_type": "COLLISION"
}
}
}Async bake and poll:
{"tool": "blender_python_exec_async", "args": {"code": "import bpy\nbpy.ops.fluid.bake_all()\n__result__ = {'baked': True}", "timeout_seconds": 1800}}→ {"job_id": "job-f8e2a1b3"}
{"tool": "blender_job_status", "args": {"job_id": "job-f8e2a1b3"}}Development
git clone https://github.com/djeada/blender-mcp-server.git
cd blender-mcp-server
pip install -e ".[dev]"
pytest -v # unit tests, no Blender needed
BLENDER_MCP_INTEGRATION=1 pytest tests/integration --no-cov # end-to-end against real BlenderProject Structure
blender-mcp-server/
├── addon/ # Blender add-on (TCP server + command handlers + job manager)
├── src/blender_mcp_server/ # MCP server (stdio transport + tool definitions)
├── scripts/
│ ├── setup.sh / start.sh / stop.sh # One-command install and launch (macOS & Linux)
│ ├── run_demo.sh # Run a demo scene script yourself (no AI)
│ ├── record_demos.sh # Re-record docs/demos with a real AI client
│ ├── library/ # Reusable Blender scripts for common tasks
│ ├── demos/ # Bridge-driven dam-break demo scenes
│ └── blender_bridge_request.py # Direct bridge test helpers
├── tests/ # Unit tests (mocked bpy) + integration tests (real Blender)
├── docs/ # Architecture & design docs, recorded demos
├── pyproject.toml
└── README.mdContributing
Fork the repository.
Create a feature branch.
Add tests for your changes.
Run
pytest tests/ -vto verify all tests pass.Submit a pull request.
License
MIT
Available Tools
27 toolsblender_export_fbxB
Export the scene as FBX. Provide the output file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavioral disclosure. It simply says 'Export the scene as FBX' without detailing side effects such as file creation, overwriting behavior, or whether the operation is asynchronous (relevant given the presence of job-related sibling tools). The description adds minimal behavioral context beyond the core action.
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 and front-loaded, stating the core action first and the parameter guidance second. Both sentences serve a purpose and there is no fluff. It could be slightly more informative without becoming verbose, but as written it is efficient and clear.
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?
In the context of a named export operation with no annotations and an output schema (unknown content), the description is incomplete. It lacks information about potential long-running behavior (relevant given job tools), file overwrite semantics, and any prerequisites. An agent would need additional context to use this tool reliably in complex workflows.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The sentence 'Provide the output file path' clarifies that the `filepath` parameter is the destination path, which is a meaningful addition over the bare schema. However, it does not explain format requirements (e.g., extension, absolute vs. relative) or any constraints. It provides basic semantics but not comprehensive guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Export the scene as FBX') with a specific resource (the scene) and format (FBX). This distinguishes it from sibling export tools like blender_export_gltf and blender_export_obj. The phrase 'as FBX' is unambiguous and directly tells the agent what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the other export tools (gltf, obj). The description does not mention any conditions or alternatives. An agent is left to infer that FBX is chosen based on format preference, but no explicit guidance or exclusions exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_export_gltfB
Export the scene as glTF/GLB. Provide the output file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the export operation and the need for a file path, but does not disclose side effects such as file overwriting, whether the export runs asynchronously as a job, or whether the Blender scene is 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 two short sentences with no filler, and the key action and output format are front-loaded before the parameter instruction.
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 one-parameter export tool, the description is minimally viable: it names the operation and the required input. However, with no annotations and no parameter documentation, it leaves practical gaps such as file extension behavior and whether export is a background job, which the sibling job tools suggest may be relevant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the bare filepath property. It adds only that the filepath is the output destination, which is largely redundant with the property name, and it does not clarify extension conventions (.gltf vs .glb), path absoluteness, or directory requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Export') and resource ('the scene') and explicitly names the target format ('glTF/GLB'), which clearly distinguishes this tool from sibling export tools like blender_export_obj and blender_export_fbx. An agent can immediately identify when this tool is the right one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: choose this tool when the scene should be exported as glTF/GLB. However, it gives no explicit guidance about when to prefer this over the sibling export tools (OBJ/FBX), nor any exclusions or context such as texture embedding or binary vs. JSON output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_export_objB
Export the scene as OBJ. Provide the output file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action but does not disclose whether it overwrites existing files, requires a loaded scene, creates directories, or has any side effects. For a mutation tool that writes a file, this is a significant gap beyond the basic action.
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 short sentences with zero waste. The primary action is front-loaded, and the required parameter is explicitly referenced. This is appropriately concise for a simple export tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and an output schema (per signals), the description is minimally adequate but lacks contextual guidance for selecting it among siblings and does not detail side effects or prerequisites. An agent could call it, but a richer description would improve correct usage in varied scenarios.
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 description mentions the filepath parameter ('Provide the output file path'), which aligns with the schema, but adds no meaning beyond that. It does not clarify path formats (absolute vs relative), allowed extensions, or overwrite behavior. The schema already had the parameter title, so the description provides minimal incremental value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Export the scene as OBJ') with a specific resource (the scene) and format (OBJ). It distinguishes from sibling export tools (gltf, fbx) by explicitly naming the format, so an agent can tell it apart without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use OBJ over the alternative export formats (gltf, fbx). It simply states the action without explaining the context, trade-offs, or exclusion criteria. An agent would have to infer the appropriate choice from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_history_redoA
Redo the last undone operation in Blender.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it redoes an operation, but it does not clarify that this mutates Blender state, what happens when there is no operation to redo, or whether it can fail or be a no-op.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the action and target. There is no filler or redundant wording.
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 no-argument command, the description captures the core intent, but it leaves out practical context such as redo-stack availability, failure behavior, and the fact that the operation changes the Blender scene state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema description coverage is 100% by virtue of the empty properties object. There is nothing for the description to add about parameter meanings or formats.
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 states exactly what the tool does: it redoes the last undone operation in Blender. It uses a specific verb and resource, and it is clearly distinct from the sibling blender_history_undo by direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'last undone operation' implies that this should be used after a prior undo, but the description does not explicitly state when to use it versus blender_history_undo or mention edge cases like having no redo history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_history_undoA
Undo the last operation in Blender.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. 'Undo the last operation' conveys the core state-changing behavior but lacks any detail on side effects, history constraints, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, no filler, and the core behavior is front-loaded. It is as concise as a zero-parameter undo tool needs to be.
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, parameterless undo operation paired with blender_history_redo, the description fully covers when and what it does. No further context is needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing additional the description needs to explain about arguments. The baseline for zero-parameter tools 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 uses a clear verb ('Undo') and identifies the exact resource ('the last operation in Blender'). It is immediately distinguishable from the sibling blender_history_redo tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to call this vs. alternatives such as blender_history_redo, or about scenarios like empty undo stacks or which operations are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_job_cancelA
Cancel a running or queued async Blender job. The job's cancel_event is set; scripts that check it will stop gracefully.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It does disclose that the tool sets a cancel event and that scripts checking it will stop gracefully, which is valuable. However, it does not mention potential side effects, whether the operation is reversible, or error conditions (e.g., job not found). The disclosure is present but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no fluff. The primary action is front-loaded, and the second sentence adds a useful behavioral detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema exists, so the return format does not need to be described. The description covers the main behavior and the mechanism. Missing details like error handling for already-completed jobs are minor given the tool's simplicity and the presence of an 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 0%, so the description must compensate for the job_id parameter. The description only implies that job_id identifies the job to cancel; it does not explicitly explain the parameter's meaning, format, or how to obtain it (e.g., from blender_job_list). This leaves the parameter under-specified.
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 states a specific verb 'Cancel' and a specific resource 'a running or queued async Blender job', clearly distinguishing it from siblings like blender_job_list and blender_job_status. It also explains the mechanism (setting __cancel_event__), which is 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 clearly indicates the tool is for cancelling async jobs, which gives context for when to use it. However, it does not explicitly mention when not to use it (e.g., if the job has already completed) or mention alternatives. It is clear enough for an agent to infer usage, but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_job_listA
List known async Blender jobs with their IDs, statuses, and creation timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states it lists jobs but does not disclose whether this is read-only, any ordering, or whether it includes completed jobs. It's a simple read operation, so the lack of detail is acceptable, but it doesn't explicitly assure non-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?
One concise sentence that front-loads the verb and resource. 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?
The description is complete for a list operation with an output schema. It specifies what fields are returned, and since there are no parameters, nothing else is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is trivially 100%. The description adds no parameter-specific information because none exist, and that's 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 lists async Blender jobs and specifies the fields (IDs, statuses, creation timestamps). This distinguishes it from sibling tools like blender_job_status (which likely retrieves a single job) and blender_job_cancel (which cancels).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing all jobs but does not explicitly mention when to use it versus sibling tools. For example, it doesn't state that blender_job_status should be used for a specific job. However, the purpose is clear enough that an agent can infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_job_statusA
Get the status of an async Blender job. Returns job_id, status (queued/running/succeeded/failed/cancelled), timestamps, result, stdout, stderr, and error. Poll this after starting a job with blender_python_exec_async.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavior disclosure. It explains that the call returns status values, timestamps, result, stdout, stderr, and error, and that it is a polling call after an async launch. It could more explicitly say it is read-only and does not modify the job, but the wording makes that reasonably clear.
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 concise sentences: the action, the return shape, and the use trigger. Every sentence adds information, and the most important guidance appears early.
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 one-parameter status tool with an output schema, the description covers the parameter, the return contents, and the intended polling scenario. It is complete enough for correct invocation, though it would benefit from an explicit note about read-only behavior and job-result persistence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only labels the parameter as 'Job Id', so the description adds useful meaning by tying job_id to an async job started by blender_python_exec_async. It does not explicitly state that job_id is returned from that tool, but the relationship is strongly implied and sufficient for a single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('async Blender job'), and it clearly distinguishes this from sibling tools by addressing a single job's status rather than listing or canceling jobs. The link to blender_python_exec_async makes the intent 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?
It explicitly states when to use the tool: poll after starting a job with blender_python_exec_async. It does not explicitly exclude alternatives or name a sibling like blender_job_list, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_material_assignB
Assign an existing material to an object.
| Name | Required | Description | Default |
|---|---|---|---|
| object | Yes | ||
| material | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are providedhare, and the description does not disclose side effects such as replacing an object's current material, requiring the object/material to exist, or modifying the scene state. A one-line description is too thin for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or redundant restatement of the tool name.
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 the tool's simplicity, the description omits identifier formats, prerequisites (both entities must exist), and effects (e.g., assignment replaces existing material). With no annotations and no parameter detail in the schema, the description is not self-sufficient for an 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?
The schema only gives string names 'object' and 'material' with no descriptions. The description adds only 'existing' and does not clarify whether parameters are names, IDs, paths, or how to reference the object/material in the Blender scene.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Assign') with a clear resource ('material') and target ('object'), and the qualifier 'existing' distinguishes this from material creation. It clearly separates the tool from siblings like material_create and material_set_color.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing material' implies this is for assigning already-created materials, not creating new ones, but it does not explicitly state when to prefer this over alternatives or exclude other actions. Guidance is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_material_createB
Create a new material. Optionally set an initial base color as [r, g, b] or [r, g, b, a] with values 0-1.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Material | |
| color | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says a material is created but does not disclose whether the new material is auto-assigned to any object, whether it becomes active, whether names must be unique or get suffixed, or any side effects. Only the color value range (0-1) is disclosed.
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 sentences, front-loaded with the core action and the optional modifier second. No filler or 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?
An output schema exists, so return values need not be explained. For a mutation tool with zero annotations, however, the description omits behavioral essentials such as uniqueness handling, auto-assignment, and prerequisite state, leaving meaningful 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 description coverage is 0%, and the description usefully explains the color format ([r, g, b] or [r, g, b, a], values 0-1), which the schema does not. However, the 'name' parameter and its default ('Material') are left entirely to the schema, so the description only partially compensates.
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 a specific verb+resource ('Create a new material') that is clearly distinct from siblings like blender_material_list, blender_material_assign, and blender_material_set_color. It does not explicitly name a sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus blender_material_set_color or when a material must already exist before assigning it. The only hint of context is the optional color, which is a parameter note rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_material_listA
List all materials in the Blender file.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The verb 'List' implies a read-only operation, which is a useful signal, but the description does not mention any side effects, potential errors, or return format. For a simple list tool, this is minimally adequate but lacks explicit behavioral guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler words. It is appropriately front-loaded with the verb and resource, and every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is extremely simple with no parameters and an output schema present. The description fully conveys the tool's purpose, and the output schema covers return values. Nothing an agent needs to correctly invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100% (empty properties). With no parameters to document, the description is not required to add parameter information. The baseline of 4 applies here as no compensation 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 states an explicit verb ('List') and resource ('all materials in the Blender file'), making the tool's purpose unambiguous. It clearly distinguishes from sibling material tools like create, assign, set_color, etc., which involve different actions.
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 clear context (listing materials) but does not explicitly mention when not to use it or alternatives. However, given that it is the only material-listing tool among siblings, the intended usage is obvious. No exclusions or alternative references are stated, but the read-only nature is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_material_set_colorB
Set the base color of a material. Color is [r, g, b] or [r, g, b, a] with values 0-1.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It confirms this is a mutation of an existing material's color but omits whether the material must exist, whether it errors or creates one, and whether the change is undoable (a relevant concern given the sibling blender_history_undo).
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 sentences, front-loaded with the action and followed by the one piece of format detail that matters. Nothing is wasted and it is easy to scan.
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?
An output schema exists, so return values need not be described. However, for a two-parameter mutation tool with zero annotation support, the missing preconditions (does the material need to exist?) and the undefined 'name' parameter leave gaps an agent would have to discover by trial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does this well for 'color' by specifying the accepted formats ([r,g,b] or [r,g,b,a]) and the 0-1 value range, but leaves 'name' completely unexplained — presumably a material name, but the agent must infer this.
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 a specific verb (set) plus resource and property (base color of a material), which is immediately actionable. It implicitly distinguishes itself from siblings like blender_material_set_texture and blender_material_assign, though it never names or contrasts them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives mentioned, and no prerequisites stated. It does not say whether the material must already exist, whether 'name' refers to an existing material, or what happens if it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_material_set_textureC
Set an image texture as the base color of a material. Provide the file path to the image.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| filepath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description has the full burden of behavioral disclosure. It only states the action ('set') and the required input, but provides no details about side effects, prerequisites (e.g., whether the material must already exist), error behavior for invalid file paths, or whether the operation is reversible. This is a significant gap for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with zero redundancy. It front-loads the action and immediately specifies the required input, achieving maximum clarity in minimal words. There is no waste or unnecessary elaboration.
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 mutation tool with two parameters, the description is too sparse. It does not state prerequisites (e.g., the material must exist), nor does it explain the meaning of the 'name' parameter. While an output schema exists, its content is unknown, and the description does not cover error cases or expected behavior. Many critical details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides some meaning for 'filepath' by saying 'provide the file path to the image,' but it does not clarify what 'name' refers to (likely the material name), leaving that parameter completely unexplained. This partial compensation is insufficient for the agent to use parameters correctly.
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 a specific verb and resource: 'set an image texture as the base color of a material.' It distinguishes itself from siblings like blender_material_set_color by explicitly mentioning texture rather than color, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention blender_material_set_color, nor does it explain when a texture is appropriate over a simple color. The usage context is entirely implied, leaving the agent to infer when to select this tool from the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_createC
Create a new mesh object in Blender. Supported types: cube, sphere, cylinder, plane, cone, torus.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| size | No | ||
| location | No | ||
| mesh_type | No | cube |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full responsibility for behavioral disclosure. It states the fundamental action and valid mesh types, but it does not mention side effects, such as whether the object is added to the active scene/collection, whether it overwrites an existing object with the same name, or whether it activates the new object. This leaves the operation's real-world consequences under-disclosed.
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 and front-loads the primary action. It uses a clean, efficient structure: stating the operation first, then the supported variations. There is no clutter, redundant phrasing, or unnecessary detail, making the structure concise and effective.
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 that the tool has four optional parameters, zero schema descriptions, and no annotations, the description leaves substantial gaps in behavioral and parameter semantics. Though an output schema exists, it does not resolve the missing side-effect information, prerequisite guidance, or parameter semantics. The description is too sparse to fully support a correct invocation in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does provide meaning for mesh_type by listing allowed values (cube, sphere, cylinder, plane, cone, torus), but it gives no semantic insight into name, size, or location. For example, it does not clarify size units, location frame of reference, or behavior of null defaults, so the parameter domain is only about 1/4 discussed.
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 a specific action ('Create a new mesh object in Blender') and enumerates the supported mesh types, which makes the tool's core purpose unambiguous. However, it does not explicitly distinguish itself from the sibling tool blender_object_duplicate, which also creates an object in the scene, so the differentiation is left to the agent's inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance about when this tool should be chosen over alternatives, such as blender_object_duplicate for duplicating existing objects or blender_material_create for creating materials. It also omits any mention of the current scene state or prerequisites for correction, so the agent is left without contextual guidance on its appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_deleteC
Delete an object from the Blender scene by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but does not disclose whether deletion is permanent, whether it affects child objects, whether undo is available, or what happens if the object does not exist. For a destructive operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and resource. It earns its place with no wasted words, though it could add a brief note on irreversibility without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema details, the description is too thin. It does not mention whether deletion is recursive, whether it can be undone, or what the return value indicates. An agent needs more context to safely invoke this 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 0%, but there is only one parameter ('name') whose meaning is self-evident from the description ('by name'). The description adds minimal semantic value beyond the schema, but the parameter is simple enough that the 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?
The description states a specific verb ('Delete') and resource ('object from the Blender scene by name'), clearly distinguishing it from sibling tools like blender_object_create or blender_object_duplicate. It lacks explicit differentiation from other deletion-like tools, but no other delete sibling exists, so the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, such as blender_object_duplicate or blender_object_get_hierarchy. It does not mention prerequisites (e.g., object must exist) or consequences (e.g., irreversible). Usage context is entirely implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_duplicateC
Duplicate an object in the Blender scene. Optionally provide a new name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| new_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey side effects. It only says 'duplicate' without explaining what happens to the original, whether the duplicate is selected, or what default name is used when new_name is omitted. This is a significant transparency gap for a mutation operation.
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 sentences with the core action front-loaded Alert. No fluff or repetition of the tool name.
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 fails to explain the role of the required 'name' parameteraine, the naming behavior when 'new_name' is omitted, or any effects (e.g., selection, undo stack). An agent would have to infer the source object naming convention from other tools or trial.
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 description adds only minimal meaning beyond the schema: it clarifies that a new name is optional. It does not explain that `name` identifies the source object to duplicate or how duplicate names are handled. With 0% schema coverage, this leaves a required parameter semantically ambiguous.
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 a specific action ('duplicate') and resource ('an object in the Blender scene'), plus the optional naming behavior. It is clearly distinct from siblings like create/delete, though it does not explicitly state that 'name' identifies the source object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as blender_object_create or blender_object_delete, nor any prerequisites or selection requirements. The context of use is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_get_hierarchyA
Get the parent/child hierarchy of objects. If name is provided, returns the subtree for that object. Otherwise returns the full scene hierarchy.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to lean on, so the description carries the full burden. It discloses the key behavioral switch (subtree vs. full hierarchy) and implies a read-only operation. It does not spell out naming/format rules or error behavior, but for a hierarchy getter the essential behavior is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose, then the conditional behavior. No filler or redundancy. The most important information appears first.
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 one-parameter read tool with an output schema, the description covers the essential behavior and parameter semantics. It could mention what happens for a nonexistent object or whether the subtree includes children recursively, but that gap is minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only declares a nullable 'name' with no description, but the tool description explains exactly how it changes behavior: providing it returns the subtree, omitting returns the whole hierarchy. This adds meaning well beyond the raw 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 opens with a specific verb and resource: "Get the parent/child hierarchy of objects." It also names the exact conditional behavior (subtree vs full scene), which makes its purpose unmistakable and visually distinct from sibling tools like list or material 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 tells the agent exactly when the optional parameter matters: providing a name returns a subtree, omitting it returns the full scene hierarchy. It does not explicitly exclude alternative tools, but the two-branch guidance is clear enough for selection and invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_get_transformA
Get the position, rotation, and scale of a Blender object by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It labels the operation as 'Get' (implying a non-destructive read), but it does not mention behavior if the object does not exist, what coordinate space the values are returned in, or whether it reflects the current scene state. These are meaningful gaps for a Blender mutation-heavy environment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and resource, and every word contributes. There is no filler, repetition, or redundantly restating the title or inputs.
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 one-parameter getter, the description gives the purpose, but the surrounding ecosystem (27 Blender tools including creating/deleting/translating/rotating objects) makes it valuable to say 'scene objects ' or point to a listing tool. Since an output schema is present, return-value documentation isn't required, so a 3 is appropriate: 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?
The schema provides only a bare string parameter 'name', so the description's 'by name' adds minimal semantics by tying the parameter to the object identifier. It still does not explain name format, uniqueness, or how to discover valid names, which is needed when schema coverage is 0%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and precisely names the resource ('Blender object') plus the exact data fields ('position, rotation, and scale'), and shows the input key ('by name'). This lets an agent distinguish it from siblings like blender_object_get_hierarchy or blender_scene_list_objects with no extra effort.
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 intended use is clearly implied: call this tool when you need an object's transform values, using the object's name as input. However, there is no explicit 'when to use vs alternatives' or mention of how to obtain the required name (e.g., using blender_scene_list_objects), leaving some guidance gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_rotateA
Set the rotation of an object. Provide rotation as [x, y, z] angles. By default angles are in degrees.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| degrees | No | ||
| rotation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds useful detail about the angle format and degree default, but it does not explicitly state what happens if degrees is false or clarify that this overwrites the object's existing rotation.
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 short sentences with no filler. It front-loads the primary action and immediately provides the essential input format.
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 three-parameter tool with an output schema, the description is adequate but minimal. It gives enough to invoke the call, but lacks explicit coverage of radians when degrees is false and any behavior around invalid or missing 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 description coverage is 0%, so the description must compensate. It explains rotation as [x, y, z] angles and notes the degree default, which maps to the degrees parameter. However, the name parameter is not explained, and degrees: false semantics are only implied rather than stated.
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 states a specific verb and resource: 'Set the rotation of an object.' This clearly separates it from sibling transform operations like translate and scale, and the input format [x, y, z] angles reinforces the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as blender_object_translate or blender_object_scale. The description only states what it does, not when it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_scaleB
Set the scale of an object. Provide scale as [x, y, z].
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| scale | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavior disclosure. It only states that the operation sets scale; it does not clarify whether the scale is relative or absolute, whether local or world transforms are affected, or whether children are impacted.
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 sentences deliver the operation and the required input format with no filler. The key information is front-loaded in the first sentence.
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 setter with only two parameters and an output schema, this is mostly sufficient. The main gaps are behavioral details like absolute vs relative scaling and failure behavior, which matter because no annotations are provided.
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 description adds the useful clarification that scale is provided as [x, y, z], which the bare schema does not convey. However, it omits semantics such as units, scale factor meaning, and whether values apply in object or world space.
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 verb and resource: 'Set the scale of an object.' This is distinct from the sibling transform tools by naming 'scale' as the target property, though it does not explicitly contrast itself with translate or rotate.
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?
There is no guidance on when to use this tool over rotating or translating, and no mention of whether the scale is absolute or cumulative. The description implies usage through the parameter format but does not state context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_object_translateA
Move an object. Provide either 'location' for absolute positioning or 'offset' for relative movement, not both.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| offset | No | ||
| location | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden. It never states the coordinate space (world vs. local vs. parent-relative), units, whether the move is undoable, or what happens on an out-of-range value. For a mutation tool with zero annotation coverage this is a significant gap.
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 sentences, zero waste, with the action front-loaded and the parameter rule immediately after. Ideal size for this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a 3-parameter transform tool with no annotations and 0% schema coverage, the core ambiguity of the coordinate space is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does partially by defining 'location' as absolute and 'offset' as relative plus their mutual exclusivity. It says nothing about the coordinate frame, units, or expected vector length for either parameter, leaving real ambiguity.
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 a specific verb and resource: 'Move an object.' An agent can immediately tell this is the translation tool and not rotate/scale/duplicate. It does not name any sibling explicitly, but the resource is 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?
Gives explicit parameter-mode guidance: use 'location' for absolute positioning, 'offset' for relative movement, never both. Missing any when-to-use-vs-alternatives guidance (e.g., versus blender_python_exec for complex transforms), but the mode selection rule is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_python_execA
Execute a Python script in Blender's context synchronously. Provide either 'code' (inline Python string) or 'script_path' (path to a .py file), not both. The script has access to 'bpy', 'mathutils', and an 'args' dict with your supplied arguments. Set 'result' in the script to return a JSON-serializable value. Returns the result, captured stdout/stderr, and execution duration. Use transport='bridge' for the live Blender add-on session, or transport='headless' to run the script in a separate blender -b process. For long-running tasks like baking, use blender_python_exec_async.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| code | No | ||
| transport | No | bridge | |
| blend_file | No | ||
| script_path | No | ||
| factory_startup | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the execution environment (bpy, mathutils, args dict), the __result__ return convention, and that stdout/stderr and duration are captured. It does not mention permissions, side effects on the open scene, or timeout behavior, which for an arbitrary-code-execution tool would be worth stating.
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?
Front-loaded with the core action, then the input contract, return shape, transport options, and the async alternative in dense, waste-free sentences. No filler.
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 complex 7-parameter code-execution tool with an output schema (so return format need not be restated), the description covers the essentials an agent needs to invoke it. The three undocumented parameters (blend_file, factory_startup, timeout_seconds) are the remaining 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 coverage is 0% and there are 7 parameters, so the description must compensate and largely does: it explains code, script_path, args, and the transport enum with both mode meanings. blend_file, factory_startup, and timeout_seconds are left undocumented, so it falls short of full 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?
States a specific verb and resource ('Execute a Python script in Blender's context') plus the synchronous execution scope, which cleanly separates it from blender_python_exec_async named in the same description. An agent can identify the tool's job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit mutual-exclusion guidance ('provide either code or script_path, not both'), explains the transport choice with the meaning of both enum values, and routes long-running work to blender_python_exec_async. When-to-use and alternatives are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_python_exec_asyncA
Start a long-running Python script in Blender asynchronously. Same parameters as blender_python_exec. Returns a job_id immediately. Use blender_job_status to poll for completion, and blender_job_cancel to abort. The script can check 'cancel_event.is_set()' to detect cancellation. Ideal for fluid baking, rigid body simulation, or heavy scene generation. Note: bridge jobs run on Blender's main thread, so the Blender UI is busy while they run. Use transport='headless' to run the job in a separate background Blender process instead.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| code | No | ||
| transport | No | bridge | |
| blend_file | No | ||
| script_path | No | ||
| factory_startup | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses immediate job_id return, main-thread blocking on the default bridge transport, the __cancel_event__.is_set() cancellation hook, and the headless alternative. This is rich behavioral context beyond a bare signature.
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?
Five tight sentences, front-loaded with purpose and lifecycle, then usage guidance and the transport caveat. Every sentence adds a distinct fact; no filler.
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?
An output schema exists, so return shape need not be explained, and the description still states that a job_id is returned immediately. Lifecycle, cancellation, and the blocking/headless tradeoff are all covered, which is what an agent needs to call this safely and 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 coverage is 0% and there are 7 parameters, so the description must compensate. It documents the transport enum values and the practical effect of each ('bridge' blocks the UI, 'headless' runs a separate background process), and delegates the shared arguments to blender_python_exec. The only gap is that the shared parameters are not restated, which the explicit delegation largely covers.
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?
Specific verb and resource ('Start a long-running Python script in Blender asynchronously') with the key differentiator against the synchronous sibling blender_python_exec stated up front. An agent can distinguish it from blender_python_exec and the job-management tools from the description alone.
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 names the polling and abort siblings (blender_job_status, blender_job_cancel) and gives concrete use cases (fluid baking, rigid body simulation, heavy scene generation). It also states the transport tradeoff and routes to transport='headless' for a non-blocking path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_render_animationA
Render an animation. Optionally set output path, frame range, and render engine. Use transport='bridge' for the live Blender add-on session, or transport='headless' with a blend_file to render in a separate background Blender process.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | ||
| frame_end | No | ||
| transport | No | bridge | |
| blend_file | No | ||
| frame_start | No | ||
| output_path | No | //render_ | |
| factory_startup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does disclose that 'headless' spawns a separate background Blender process while 'bridge' targets the live session. However, it says nothing about whether rendering is blocking or returns a job handle, nor about timeouts or failure modes for a long-running render.
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, front-loaded with the action and followed by the mode-selection detail. Every clause carries information; nothing is redundant.
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?
An output schema exists, so return values need not be explained, but the presence of sibling job tools (blender_job_status, blender_job_list, blender_job_cancel) suggests renders may be asynchronous, and the description never says whether this call blocks or hands back a job id. That is a meaningful omission for a 7-parameter render 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 0% for 7 parameters, so the description must compensate. It names output path, frame range, engine, transport, and the role of blend_file, but leaves factory_startup and the frame_start/frame_end split undocumented, so it only partially fills the gap.
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 a specific verb+resource ('Render an animation') and is immediately distinguishable from the sibling blender_render_still. The follow-on sentence clarifies the two operational modes without muddying the core purpose.
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 routes between transport='bridge' (live add-on session) and transport='headless' with a blend_file (separate background process), which is the key decision an agent must make. It does not state when to prefer this tool over blender_render_still, though that distinction is self-evident from the names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_render_stillA
Render the current scene as a still image. Optionally set output path, resolution, and render engine (BLENDER_EEVEE, CYCLES, etc.). Use transport='bridge' for the live Blender add-on session, or transport='headless' with blend_file='/path/to/file.blend' to render in a separate background Blender process.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | ||
| transport | No | bridge | |
| blend_file | No | ||
| output_path | No | //render.png | |
| resolution_x | No | ||
| resolution_y | No | ||
| factory_startup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals the transport model and engine choices, but omits key operational facts: that rendering writes/overwrites a file at output_path, whether headless requires blend_file to exist, and that this is a blocking or job-producing operation. Useful but incomplete for a no-annotation mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no filler; the core action comes first and the transport fork follows. Tight and appropriately sized, though it could be organized to state the mode-selection rule even more prominently.
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?
An output schema exists, so return values need not be described. However, with 7 undocumented parameters and no annotations, the description should say more about side effects (file writing), factory_startup, and headless prerequisites. It is adequate for the main path only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it partially does, naming output_path, resolution, engine, transport, and blend_file. It even adds engine value examples (BLENDER_EEVEE, CYCLES) the schema lacks, but it ignores factory_startup entirely and gives no format/default detail for the others.
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 a specific verb and resource ('Render the current scene as a still image'), and the word 'still' implicitly separates it from the sibling blender_render_animation. An agent can distinguish it from the other render/export siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent between the two transport modes: bridge for the live add-on session, headless with blend_file for a separate background process. That is real when-to-use guidance for a key fork. It stops short of stating when not to use this tool or how it relates to blender_render_animation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_scene_get_infoA
Get information about the current Blender scene including name, frame range, render engine, resolution, and object count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. 'Get information' implies a read-only operation)Skip, but the description does not explicitly disclose side effects, error behavior, or the fact that no scene state is 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?
One compact sentence, front-loaded with the verb and object, and every word adds information. There is no redundant boilerplate.
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 simple zero-parameter tool is adequately described for an agent to select it, and the output schema can supply return-type detail. It could be slightly more complete with an explicit read-only note or a hint about when to prefer it over sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description's job is minimal. It does add value by listing the output fields (name, frame range, render engine, resolution, object count), which effectively explains what the tool targets.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get information') and a clear resource ('current Blender scene'), then enumerates the exact fields returned. This fully disambiguates the tool from object-level siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus siblings like blender_scene_list_objects or blender_object_get_transform. The intended use is inferable from the description, but the tool does not state it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_scene_list_objectsA
List all objects in the current Blender scene. Optionally filter by type (MESH, CAMERA, LIGHT, EMPTY, CURVE, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states the read-only nature implicitly through 'list' but does not explicitly confirm that the scene is not modified, nor does it mention error cases or pagination. For a simple read tool this is adequate, but it adds minimal behavioral context beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the main action is front-loaded, and every word earns its place. The filter examples are efficient. There is no redundancy or filler.
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) and the presence of an output schema (which covers return format), the description is nearly complete. It lacks only explicit mention of default behavior (e.g., returns all objects when no filter) and exact accepted type values, but these are minor gaps for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'type' as string/null with no enum or description, giving 0% coverage. The description adds value by listing example values (MESH, CAMERA, LIGHT, EMPTY, CURVE) and the 'etc.' implies more are valid. However, it does not provide an exhaustive list or specify case sensitivity, so it partially compensates for the schema gap.
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 states a specific action ('List all objects') on a clear resource ('current Blender scene') and notes an optional filter. It is immediately distinguishable from sibling tools like blender_scene_get_info (scene metadata) and blender_object_get_transform (single object transform), so an agent can tell when to use it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: to enumerate objects in the scene, call this tool. However, it does not explicitly contrast it with alternatives or state when NOT to use it (e.g., when you need object hierarchy, use blender_object_get_hierarchy). The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
27 tool updates
v0.2.0- First observed
blender_export_fbx - First observed
blender_export_gltf - First observed
blender_export_obj - First observed
blender_history_redo - First observed
blender_history_undo - First observed
blender_job_cancel - First observed
blender_job_list - First observed
blender_job_status - First observed
blender_material_assign - First observed
blender_material_create - First observed
blender_material_list - First observed
blender_material_set_color - First observed
blender_material_set_texture - First observed
blender_object_create - First observed
blender_object_delete - First observed
blender_object_duplicate - First observed
blender_object_get_hierarchy - First observed
blender_object_get_transform - First observed
blender_object_rotate - First observed
blender_object_scale - First observed
blender_object_translate - First observed
blender_python_exec - First observed
blender_python_exec_async - First observed
blender_render_animation - First observed
blender_render_still - First observed
blender_scene_get_info - First observed
blender_scene_list_objects
TDQS
Scored across 27 tools
Each tool targets a distinct resource and action, with clear separation between scene, object, material, render, export, history, Python execution, and job management. Even potentially overlapping tools like blender_python_exec vs. blender_python_exec_async are explicitly differentiated by sync vs. async behavior.
All tools use the blender_ prefix and snake_case, with predictable domain/action naming. Minor ordering deviations exist (e.g., blender_render_still vs. blender_scene_get_info), but the overall pattern remains highly readable.
27 tools is slightly above the typical 3-15 range, but Blender is a broad domain and each tool covers a specific, useful operation. No tool feels redundant or trivial, though some consolidation (e.g., separate export formats) could reduce the count.
The surface covers core Blender automation: object creation/transform/duplication, material creation/assignment, rendering, export, history, and Python execution. Minor gaps like material deletion or scene save/load are not directly exposed, but the asynchronous Python execution tool can fill those gaps.
Maintenance
Related MCP Connectors
Blender-as-a-service for agents: search 3D assets, run Blender Python, or brief the studio agent.
1Build editable 3D scenes, direct characters and cameras, and export AI video references with MCP.
Blender cloud GPU render farm for AI agents (MCP/API): .blend, bpy, glTF/FBX/USD in; frames/MP4 out
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExposes 50+ Blender tools (object manipulation, materials, animation, etc.) via MCP for AI-driven 3D workflows and automation.1MIT
- AlicenseAqualityCmaintenanceEnables connecting Blender 3D to AI assistants via MCP, allowing prompt-driven 3D modeling, scene editing, and real-time manipulation. Supports object/material control, scene inspection, viewport screenshots, and integrations with Poly Haven, Sketchfab, and AI model generators.22MIT
- AlicenseNot gradedqualityBmaintenanceEnables any MCP client to control Blender 5.2 LTS via natural language, including scene creation, object manipulation, material assignment, rendering, and Python execution.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language control of Blender 3D through local AI models, allowing MCP clients to create, modify, and render scenes, apply materials, and execute Python code in Blender.-