blender-mcp
The blender-mcp server provides AI-powered natural language control over Blender, enabling comprehensive 3D creation, animation, rendering, and asset management through 80+ specialized MCP tools and agentic workflows.
AI-Powered Creation & Automation
Control Blender via natural language prompts; LLMs generate and execute Blender Python scripts
Multi-step autonomous workflows, batch operations, async job queue, and vision-based refinement loops
Generate 3D meshes from text/images via Tripo, Rodin, and Hunyuan3D backends
3D Modeling & Editing
Create primitives and complex objects (furniture, rooms, etc.); extrude, bevel, subdivide, merge, join/separate
Modifiers: subdivision surface, bevel, mirror, solidify, array, boolean, decimate, displace, wave
Sculpting: dynamic topology, voxel remesh, symmetrize; UV unwrapping (smart project, cube/sphere/cylinder projection)
Procedural modeling via Geometry Nodes; Grease Pencil for 2D drawing and animation
Materials, Textures & Shaders
Create PBR materials (metal, glass, fabric, wood, ceramic) with full shader node graph control
Procedural textures (noise, voronoi, musgrave, checker, brick, gradient)
Texture baking (toon/MToon to PBR), material atlasing for VR optimization
Animation & Rigging
Keyframe animation (location, rotation, scale), shape keys, actions, NLA tracks
Armature creation, IK setup, biped rigs, bone constraints, action baking
VRM facial expressions, visemes, blink animations
Lighting, Camera & Rendering
Create sun/point/spot/area lights, HDRI environments, three-point lighting setups
Render single frames, animation sequences, turntables, and multi-angle shots with Cycles/EEVEE
Compositor post-processing: bloom, SSAO, DOF, motion blur, glow/glare
Viewport screenshots for agent vision feedback
Video Editing (VSE)
Add and manage movie, audio, image, scene, text, and effect strips
Cut, trim, move, apply transitions (CROSS, WIPE, GLOW, GAUSSIAN_BLUR), and export to MP4/H264
Import & Export
Import: FBX, OBJ, GLTF/GLB, STL, PLY, CAD (STEP/IGES via Mayo/FreeCAD), and more
Export: GLB, GLTF, FBX, OBJ, STL, USD, VRM; platform presets for VRChat, Unity, Resonite, Unreal
Download files from URLs and import directly; batch image resize/convert
VR & Avatar Pipeline
VRM metadata management (spring bones, first-person offsets, look-at settings)
Platform validation (polycount, bones, materials, transforms) for VRChat, Resonite, Unity
Gaussian splatting: import, crop/clean, generate collision meshes, export for Resonite
Asset & Library Management
Search and import from Poly Haven (HDRIs, textures, models) and Sketchfab
Manage a local object repository; install, enable, and remove Blender add-ons
Scene & Session Management
Manage scenes, collections, view layers, cameras, object transforms, and selections
Run headless or connect to a live Blender GUI session for real-time feedback
System & Utilities
Server status, logs, health checks, config management (LLM provider, theme, settings)
Blender Python API documentation lookup; local LLM model management (Ollama)
Cross-MCP asset handoff for downstream tools (Godot, Unity, FreeCAD, Tahoma2D)
Controls Blender 3D creation suite, enabling natural language generation of 3D scenes, objects, animations, and renders.
Supports import and export of glTF 3D model files for cross-platform compatibility.
Exports 3D assets and scenes to Unity for game development and VR applications.
Exports 3D assets and avatars to VRChat for virtual reality social platforms.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@blender-mcpcreate a glass sphere with a metal base"
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 — AI-Powered Blender Automation
Control Blender with natural language through MCP. Tell Claude to create a steampunk robot with glowing eyes and watch it build in Blender.
Get started in 2 minutes
Download | What it is |
MCP server for Claude Desktop | |
3D app (install separately, never bundled) | |
blender_bridge_addon.py (optional) | Live viewport only — skip for headless use |
Steps
Download the
.mcpbfrom ReleasesDrag it into Claude Desktop (Settings → MCP Servers → Install from file)
Install Blender if you have not already
Restart Claude Desktop and try: Create a red cube on a gray floor with a sun lamp.
That is enough for most tools — the server runs Blender headless in the background.
Optional — live viewport: install the bridge addon in Blender to watch the scene update while you chat. See INSTALL.md.
Other install methods (npx mcpb, manual config, developer setup): INSTALL.md
Related MCP server: BlenderMCP
How it runs
Mode | Host app | When |
Headless (default) |
| Batch export, CI, agents without a display; VSE, geonodes, most mesh ops |
Live GUI (optional) | Blender + bridge addon | Watch the agent build; viewport screenshots; sculpt with live feedback |
Per-tool override |
| Batch jobs force headless even if bridge is connected |
You do not need to open Blender's UI for most MCP tools — the server spawns headless Blender automatically and falls back from live session when no bridge is connected.
Install Blender separately; it is never bundled. Override path with BLENDER_EXECUTABLE.
Watch or batch — Most tools run headless. Use
blender_sessionstart + the bridge addon only if you want the viewport to update live. See INSTALL.md.
Hands-in / Hands-out
Direction | Artifacts | Notes |
Hands-in | Natural-language scene prompts | Agent instructions; |
Hands-in |
| Webapp upload or tool params |
Hands-in | Rodin / Tripo / Hunyuan mesh URLs |
|
Hands-in | Inline |
|
Hands-out |
|
|
Hands-out |
| Export + validation pipeline — headless |
Hands-out |
| After agent edit session — headless or live bridge |
Hands-out | Viewport PNG, MP4 (VSE), Gaussian splats |
|
Fleet pipelines (downstream)
Downstream MCP | Takes from blender-mcp |
| |
| |
Rendered image sequences / GP output | |
| |
|
Features
Natural-language 3D creation — scenes, meshes, materials, lighting, animation
Live GUI bridge — watch the agent build in Blender while you chat
48+ MCP tools — mesh edit, sculpt, geonodes, compositor, VSE, export (GLB, VRM, VRChat, Unity)
Generative AI hooks — Rodin/Tripo/Hunyuan mesh generation and vision refine
Webapp dashboard — scene explorer, agent lab, materials, mesh/splat pipeline
Fleet-ready — FastMCP 3.2,
.mcpbpackaging, Prometheus metrics, optional Docker
What You Can Do
Try these in Claude Desktop after install:
Create a red cube on a gray floor with a sun lamp and render a viewport screenshot.
Build a simple chair with wood material and export as GLB.
Start a live Blender session and add a sphere with a metallic blue shader.
Documentation
Doc | Contents |
All install methods, prerequisites, bridge setup | |
Env vars, Claude Desktop | |
Capabilities and tool catalog | |
Contributing, | |
Common errors and fixes | |
System design | |
Planned improvements | |
Prometheus / Grafana / Loki | |
Optional container deploy |
Extended guides: docs/DOCUMENTATION_INDEX.md
Webapp and Native App
Dashboard (optional): .\start.ps1 → http://localhost:10848 — see INSTALL.md.
Tauri desktop installer (~15 MB, no Python required): just build-native — see docs/DEVELOPMENT.md.
Requirements
Claude Desktop (or any MCP client for manual config)
Blender 3.0+ — installed separately, never bundled; override with
BLENDER_EXECUTABLELLM (optional) — Ollama, LM Studio, or cloud API for script generation; see INSTALL.md
OS: Windows, macOS, Linux
Python 3.12+ — only for Options C/D (clone-from-source)
License
MIT — FlowEngineer sandraschi. Free for personal and commercial use.
Available Tools
71 toolsadd_to_collectionB
Add an object to a collection.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("add_to_collection", {"collection_name": "MyCollection", "object_name": "Cube"})| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| collection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the mutation is expected. The description adds the return format (success/message/data) but does not disclose side effects, failure modes, or whether the collection is created if missing. This is adequate given the simple operation, but not rich.
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 well-structured, with a one-line summary, a return format section, and a code example. No redundant text; every element serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 string params, no nested objects) and has an output schema, so little beyond the basics is needed. However, the description could be more complete by clarifying the relationship to existing collections/objects and any error behavior, especially given the large set of sibling tools in the Blender domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters beyond their names. 'collection_name' and 'object_name' are self-explanatory at a high level, but no details are given about what constitutes a valid name, whether the object must already exist, or how collections are referenced. The example shows sample values but adds no semantic depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Add an object to a collection' with a specific verb and resource. It distinguishes from sibling 'create_collection' (which creates collections) and 'construct_object' (which creates objects), though it does not explicitly mention the relationship to existing objects/collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., collection must exist), nor does it contrast with related tools like 'create_collection' or 'manage_object_repo'. The example provides usage context but not decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agentic_blender_workflowA
Execute autonomous multi-step Blender workflows via FastMCP 3.1 SEP-1577 sampling.
The client LLM plans and executes a 3D workflow step-by-step, autonomously calling Blender capability probes to inform each decision, looping until the goal is achieved or max_steps is exhausted.
| Name | Required | Description | Default |
|---|---|---|---|
| max_steps | No | Maximum LLM-tool reasoning loops (default: 5) | |
| workflow_prompt | Yes | Natural language description of the 3D workflow goal | |
| available_operations | No | Optional list of operation names to constrain the plan |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the looping behavior and the max_steps stopping condition, which is useful given annotations are all false. However, it does not mention potential side effects on the Blender scene, what 'capability probes' entail, or resource/permission implications, leaving the agent under-informed for a tool that executes arbitrary workflows.
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 compact at two sentences, with the main action front-loaded. The reference to 'FastMCP 3.1 SEP-1577 sampling' adds jargon, but the text remains focused and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is not needed. Yet the tool is complex and has an available_operations parameter not mentioned in the prose; also absent are side-effect warnings, failure behavior, and differentiation from many similar Blender workflow siblings. The description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a meaningful description. The prose does not add further semantic value to workflow_prompt, max_steps, or available_operations, so a 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 opens with a specific verb and resource: 'Execute autonomous multi-step Blender workflows'. It distinguishes this tool from siblings like 'blender_workflow' by emphasizing the agentic, looped, sampling-driven behavior.
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 conveys the context for use: autonomous, multi-step 3D workflows where the client LLM plans and loops. It does not provide explicit when-not-to-use guidance or name alternatives, so it misses the top bar, but the intended use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_chatARead-onlyIdempotent
Chat with the Blender AI assistant. Provides natural-language help with Blender operations.
Uses the blender-expert SKILL.md as system context so the LLM knows available tools and workflows. Uses ctx.sample() when the host supports sampling; falls back to Ollama.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The user's chat message. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context about using the blender-expert SKILL.md as system context and the fallback mechanism via ctx.sample()/Ollama, providing insight into operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: first sentence states purpose, second explains system context, third details model fallback. Every sentence adds distinct value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a chat tool with a simple schema, full annotation coverage, and an output schema, the description is sufficient. It explains both functionality and operational details, though it could benefit from mentioning limitations or scenarios where other tools are preferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully covers the single 'message' parameter with a clear description. The tool description does not add parameter-specific details, but none are necessary given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Chat with the Blender AI assistant' and 'Provides natural-language help with Blender operations.' It identifies it as a conversational tool, distinguishing it from action-oriented siblings like script_execute. However, it doesn't explicitly differentiate from the similarly named conversational_blender_assistant.
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 when-to-use guidance or alternative references are provided. The description implies it is for natural-language help but does not explain when to choose it over blender_help or other assistant-like tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_addonsA
Manage Blender addons (portmanteau). Prefer this tool over manage_blender_addons.
Operations:
list_addons / list_installed: List installed addons (requires Blender).
install_addon: Install from local addon_path (path to .py or folder).
install_from_url / install_url: Download and install from addon_url (ZIP or .py).
install_known: Install from known registry by addon_name.
uninstall_addon: Uninstall addon by addon_name.
enable / disable: Enable or disable an installed addon module.
search: Return known add-on URLs for a query (e.g. gaussian splat).
info: Show known addons registry and addons directory.
| Name | Required | Description | Default |
|---|---|---|---|
| addon_url | No | For install_from_url (https URL to .zip or .py). | |
| operation | No | list_addons | list_installed | install_addon | install_from_url | install_known | ... | list_addons |
| addon_name | No | For uninstall_addon, enable, disable, install_known. | |
| addon_path | No | For install_addon (local path). | |
| search_query | No | For search (e.g. "gaussian splat"). | |
| enable_on_install | No | Enable addon after install operations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (all false), so the description carries the burden. It discloses that list requires Blender and describes operations, but doesn't specify side effects like network access, file deletion, or config changes. It gives basic behavioral context but lacks depth.
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 structured with an introductory purpose sentence and a bulleted operation list. It is slightly long but information-dense; no wasted words. The redundant list_addons/list_installed pair is minor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complex operation set and output schema present, the description covers all main operation categories and parameter mappings. It notes Blender requirement and known registry, but could mention enable_on_install behavior or error scenarios. Still nearly complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides descriptions for all parameters (100% coverage), but the description enriches them by mapping operations to specific parameters (e.g., install_from_url uses addon_url, install_addon uses addon_path). It also clarifies 'install_known' and 'search' semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool manages Blender addons and enumerates specific operations (list, install, uninstall, enable/disable, search, info). It explicitly distinguishes itself from sibling manage_blender_addons with 'Prefer this tool over manage_blender_addons.'
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 advises preference over manage_blender_addons, which serves as an alternative. The operation list provides clear context for which action to invoke, mapping operations to parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_ai_generateA
Generate 3D meshes via external AI backends and import into Blender.
Backends (set API keys in environment):
tripo: TRIPO_API_KEY
rodin: RODIN_API_KEY or HYPER3D_API_KEY
hunyuan: HUNYUAN3D_API_KEY (+ optional HUNYUAN3D_API_URL)
Operations:
generate: text/image-to-3D, poll, download, import
list_backends: show configured backends and env var names
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_ai_generate", {"operation": "generate", "prompt": "a red chair"})| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | ||
| backend | No | tripo | |
| operation | No | generate | |
| image_path | No | ||
| object_name | No | ||
| poll_timeout | No | ||
| output_format | No | glb |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the transparency burden. It discloses that external AI backends are used, that API keys are required, and that the generate operation involves polling and import. It also details the return format and gives an example. This goes beyond basic mutation info, though it doesn't mention potential network delays, costs, or failure modes.
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 well-structured with sections for backends, operations, return format, and examples. It front-loads the main purpose, then provides necessary operational details without unnecessary fluff. Every section contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple backends, operations, API keys), the description covers key aspects: backends, env vars, operations, return format, and a usage example. It doesn't detail every parameter or error handling, but with the input schema present and an output schema, it's reasonably complete for an AI agent to use effectively.
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 explain parameters. It only shows an example using operation and prompt, and the operations list implies prompt/image_path. However, backend, object_name, poll_timeout, and output_format are not described. The agent must infer their meanings from names and defaults, which is insufficient for a 7-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 opens with a specific and clear statement: 'Generate 3D meshes via external AI backends and import into Blender.' It also enumerates distinct operations (generate, list_backends), which further clarifies its scope. This clearly distinguishes it from sibling tools like blender_mesh or blender_import that handle mesh operations or imports without AI generation.
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 communicates when to use the tool: when you need AI-based 3D generation from text/image with backend options, and it explains backend configuration via environment keys. It doesn't explicitly exclude alternatives or name sibling tools, but the context is clear enough that an agent would know to use this for AI generation versus manual modeling/import.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_animationB
PORTMANTEAU PATTERN RATIONALE: Consolidates 17 related animation operations into single interface. Prevents tool explosion while maintaining full animation workflow functionality from basic keyframes to advanced character rigging. Follows FastMCP 2.14.3 best practices.
Comprehensive animation system for Blender supporting keyframes, shape keys, actions, constraints, and baking.
Animation Categories:
Basic Animation (7 operations):
set_keyframe: Insert keyframes for location/rotation/scale at specific frames
animate_location: Create movement animation between start/end frames
animate_rotation: Create rotation animation with customizable curves
animate_scale: Create scale animation with interpolation control
play_animation: Start/stop viewport playback for preview
set_frame_range: Define timeline start/end frames for scene
clear_animation: Remove all keyframes from object (destructive)
Shape Keys (VRM facial expressions) (4 operations):
list_shape_keys: Display all morph targets on mesh object
set_shape_key: Set blend value (0.0-1.0) for shape key
keyframe_shape_key: Insert keyframe for shape key animation
create_shape_key: Create new shape key from current mesh state
Action Management (4 operations):
list_actions: Show all animation actions in blend file
create_action: Generate new action clip for object animation
set_active_action: Assign action to object for playback
push_to_nla: Push action to NLA track for layering/compositing
Interpolation & Timing (2 operations):
set_interpolation: Set keyframe interpolation type (LINEAR, BEZIER, BOUNCE, ELASTIC, CONSTANT)
set_easing: Configure easing curves (AUTO, EASE_IN, EASE_OUT, EASE_IN_OUT)
Constraints (2 operations):
add_constraint: Add transform constraints to objects
add_bone_constraint: Add pose constraints to armature bones
Baking for Export (2 operations):
bake_action: Convert constraints to keyframes for export compatibility
bake_all_actions: Consolidate NLA strips into single action
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | Frame number for keyframe insertion. Default: 1. Range: 1 to 10000. | |
| scale | No | Target scale factors (x, y, z) for keyframes. Required for: "set_keyframe" (scale), "animate_scale". | |
| value | No | Shape key blend value. Range: 0.0 to 1.0. Default: 1.0. Required for: "set_shape_key", "keyframe_shape_key". | |
| easing | No | Keyframe easing mode. One of: "AUTO", "EASE_IN", "EASE_OUT", "EASE_IN_OUT". Default: "AUTO". | AUTO |
| from_mix | No | Whether to create shape key from current mix. Default: False. | |
| location | No | Target location coordinates (x, y, z) for keyframes. Required for: "set_keyframe" (location), "animate_location". | |
| rotation | No | Target rotation values (degrees) for keyframes. Required for: "set_keyframe" (rotation), "animate_rotation". | |
| bone_name | No | Target bone name within armature for pose operations. Required for: "add_bone_constraint", bone targeting in constraints. | |
| data_path | No | FCurve data path for interpolation operations. Default: auto-detected. | |
| end_frame | No | Ending frame for animation ranges. Default: 60. Must be > start_frame. | |
| end_scale | No | Ending scale for animation. Default: (2, 2, 2). | |
| influence | No | Constraint influence factor. Range: 0.0 to 1.0. Default: 1.0. | |
| operation | No | The animation operation to perform. Must be one of: "set_keyframe", "animate_location", "animate_rotation", "animate_scale", "play_animation", "set_frame_range", "clear_animation", "list_shape_keys", "set_shape_key", "keyframe_shape_key", "create_shape_key", "list_actions", "create_action", "set_active_action", "push_to_nla", "set_interpolation", "set_easing", "add_constraint", "add_bone_constraint", "bake_action", "bake_all_actions". - Basic operations: "set_keyframe", "animate_*", "play_animation", "set_frame_range", "clear_animation" - Shape key operations: "list_shape_keys", "set_shape_key", "keyframe_shape_key", "create_shape_key" - Action operations: "list_actions", "create_action", "set_active_action", "push_to_nla" - Interpolation: "set_interpolation", "set_easing" - Constraints: "add_constraint", "add_bone_constraint" - Baking: "bake_action", "bake_all_actions" | set_keyframe |
| bake_types | No | Types of data to bake. One of: "POSE", "OBJECT", "ALL". Default: "POSE". | POSE |
| track_name | No | NLA track name for action placement. Default: auto-generated. | |
| action_name | No | Name for new or existing action. Required for: "create_action", "set_active_action", "push_to_nla". | |
| object_name | No | Target object name for animation operations. Required for most operations. | |
| start_frame | No | Starting frame for animation ranges. Default: 1. Must be < end_frame. | |
| start_scale | No | Starting scale for animation. Default: (1, 1, 1). | |
| target_bone | No | Name of target bone for bone constraints. | |
| target_name | No | Name of target object for constraint. Required for all constraint operations. | |
| end_location | No | Ending location for animation. Default: (5, 0, 0). | |
| end_rotation | No | Ending rotation for animation. Default: (360, 0, 0). | |
| armature_name | No | Target armature name for bone-specific operations. Required for: "add_bone_constraint", bone targeting in constraints. | |
| interpolation | No | Keyframe interpolation type. One of: "CONSTANT", "LINEAR", "BEZIER", "SINE", "QUAD", "CUBIC", "QUART", "QUINT", "EXPO", "CIRC", "BACK", "BOUNCE", "ELASTIC". Default: "BEZIER". | BEZIER |
| visual_keying | No | Include visual transforms in baking. Default: True. | |
| shape_key_name | No | Name of shape key for morph operations. Required for: "set_shape_key", "keyframe_shape_key", "create_shape_key". | |
| start_location | No | Starting location for animation. Default: (0, 0, 0). | |
| start_rotation | No | Starting rotation for animation. Default: (0, 0, 0). | |
| constraint_type | No | Type of constraint to add. One of: "COPY_ROTATION", "COPY_LOCATION", "COPY_SCALE", "TRACK_TO", "DAMPED_TRACK", "LOCKED_TRACK", "STRETCH_TO", "CLAMP_TO", "TRANSFORM", "CHILD_OF". Default: "COPY_ROTATION". | COPY_ROTATION |
| target_armature | No | Name of target armature for bone constraints. | |
| clear_constraints | No | Remove constraints after baking. Default: False. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly labels 'clear_animation' as '(destructive)', but the annotations declare destructiveHint: false. This is a direct contradiction. The annotation system is designed to convey this safety information, and the description contradicts it, which is a serious inconsistency.
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 well-structured with clear category headers and bullet lists, making it navigable for a complex 32-parameter tool. However, it includes an unnecessary 'PORTMANTEAU PATTERN RATIONALE' paragraph that adds meta-narrative rather than operational guidance, and the overall length is 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?
Given the high complexity (32 parameters, 21 operations), the description provides a comprehensive overview of all operation categories, which is highly useful for orientation. An output schema exists, so return values are covered. Minor gaps remain, such as not describing side effects for baking operations or constraint behaviors, but overall it is complete for a tool of this scale.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already thoroughly documented in the input schema (e.g., ranges, defaults, required-for mapping). The tool description adds no extra parameter semantics beyond grouping operations by category, which is marginal value, so 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 clearly states 'Comprehensive animation system for Blender supporting keyframes, shape keys, actions, constraints, and baking' and enumerates 17 operations across categories, providing a specific verb+resource. However, it does not explicitly differentiate from sibling tools like blender_rigging or blender_shapekeys, though the portmanteau rationale explains the consolidation rationale.
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 by listing operation categories (e.g., Basic Animation, Shape Keys, Constraints) and notes when certain parameters are required for specific operations. However, it does not provide explicit when-to-use vs. alternatives guidance, nor does it mention exclusions or when to prefer sibling tools such as blender_shapekeys or blender_rigging.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_api_docsARead-onlyIdempotent
Look up Blender Python API documentation for an identifier.
Examples: Mesh, bpy.types.Mesh, bpy.ops.mesh.primitive_cube_add.
Use before writing bpy scripts to reduce hallucinated API calls.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_api_docs", {"identifier": "bpy.types.Object"})| Name | Required | Description | Default |
|---|---|---|---|
| search | No | ||
| identifier | No | bpy.types.Object |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds value by specifying the return format (dict with success, message, data) and the intent to reduce hallucinated API calls. This is consistent with annotations and adds context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with examples and a return format section. While the Python code example is somewhat redundant, it doesn't waste space. Overall it is appropriately sized and front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with an output schema, the description includes return format and usage intent, which is good. However, the unclear role of 'search' leaves a gap in completeness, making it not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'identifier' parameter through examples, but the 'search' parameter is never mentioned or clarified. This leaves significant ambiguity for a two-parameter tool, and the description fails to fully compensate 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 clearly states the tool's function: 'Look up Blender Python API documentation for an identifier.' It provides concrete examples (Mesh, bpy.types.Mesh, bpy.ops.mesh.primitive_cube_add) that illustrate scope. This distinguishes it from sibling tools that generate scripts or manipulate Blender scenes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use before writing bpy scripts to reduce hallucinated API calls,' which gives clear context on when to use. It does not mention when not to use or alternatives, but the primary use case is well-stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_atlasingA
Advanced material and texture atlasing for VR performance optimization.
Reduces draw calls by intelligently merging materials and textures into atlas layouts, critical for mobile VR performance on Quest and similar devices.
| Name | Required | Description | Default |
|---|---|---|---|
| padding | No | Padding between atlas regions in pixels | |
| operation | No | Atlasing operation type | create_material_atlas |
| atlas_info | No | Pre-calculated atlas information for UV layout | |
| atlas_size | No | Size of atlas texture (512, 1024, 2048, 4096) | |
| output_path | No | Path for atlas texture output | //material_atlas.png |
| target_mesh | No | Target mesh object (defaults to active) | |
| max_materials | No | Maximum materials for draw call optimization | |
| texture_paths | No | List of texture files for texture atlas | |
| combine_similar | No | Merge materials with similar properties | |
| combine_by_color | No | Merge materials with similar base colors | |
| preserve_normals | No | Maintain normal map assignments during optimization |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint false and destructiveHint false, so the tool is known to mutate state but not destroy it. The description adds that it 'merges materials and textures' and 'reduces draw calls,' which gives some behavior context. However, it does not disclose potential side effects like modification of existing materials or assets, reversibility, or whether it changes the scene permanently. This is a moderate level of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and every sentence is informative. It avoids fluff and clearly communicates the tool's value proposition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, output schema, four operation types), the description provides a high-level use case and motivation but does not detail the different operations or typical workflows. However, the rich schema and annotations fill most gaps, so only a slight deduction is warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all 11 parameters have detailed descriptions in the schema. The tool description itself adds no parameter-level details beyond the schema, so it meets the baseline but does not enhance parameter understanding. No gaps to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'material and texture atlasing for VR performance optimization' and 'Reduces draw calls by intelligently merging materials and textures.' It uses specific verbs and identifies the resource, but does not explicitly distinguish itself from sibling tools like blender_materials or blender_textures, so it falls short of a perfect 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?
The description provides clear usage context: 'critical for mobile VR performance on Quest and similar devices.' This implies when to use the tool (VR optimization scenarios) but does not explicitly mention alternatives or situations where it should not be used, so it scores just below the 5 threshold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_batchC
Batch image and mesh export operations.
Operations:
resize: resize images matching pattern (default *.png)
convert: convert image formats in input_dir
export: export mesh objects whose names contain name_pattern
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_batch", {"operation": "resize", "input_dir": "C:/images"})| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| pattern | No | *.png | |
| input_dir | No | ||
| operation | No | resize | |
| output_dir | No | ||
| name_pattern | No | ||
| export_format | No | glb | |
| source_format | No | jpg | |
| target_format | No | png |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the burden of disclosing side effects. It does not state whether files are overwritten, whether a Blender session is required, or any limitations. The operations imply file writes and modifications, but no explicit behavioral disclosure is provided.
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 appropriately concise: an intro, a three-item bullet list, a return format line, and a code example. It is well-structured and front-loads the main purpose, with no unnecessary verbosity.
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 10 parameters and three distinct operations, the description is too sparse. It lacks per-operation parameter mapping, prerequisites, and edge-case behavior. The standard return format and output schema existence do not compensate for the missing operational detail.
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?
With 0% schema coverage, the description must compensate. It explains 'pattern' defaulting to *.png and 'name_pattern' for export, but leaves unclear key parameters like width/height, source_format/target_format, and output_dir. The example demonstrates input_dir usage, but many params remain semantically opaque.
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 'Batch image and mesh export operations' and enumerates three specific operations (resize, convert, export), which defines a concrete scope. It differentiates from siblings like blender_export by focusing on batch and multi-type operations, though it doesn't explicitly contrast each mode.
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 on when to use this tool versus alternatives is given. The name implies batch use, and the operation list suggests scenarios, but there is no mention of exclusions or when to prefer a sibling like blender_export or script_execute.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_cameraA
Create and control cameras in Blender scenes.
Supports multiple operations through the operation parameter:
create_camera: Create a new camera
set_active_camera: Set the active camera
set_camera_lens: Adjust camera lens and sensor settings
| Name | Required | Description | Default |
|---|---|---|---|
| fov | No | Field of view in degrees | |
| lens | No | Camera lens focal length in mm | |
| clip_end | No | Far clipping distance | |
| location | No | Camera position coordinates | |
| rotation | No | Camera rotation angles in degrees | |
| operation | No | Camera operation type | create_camera |
| clip_start | No | Near clipping distance | |
| camera_name | No | Name for the camera | Camera |
| sensor_width | No | Camera sensor width in mm | |
| target_location | No | Target position for look_at operations |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint=false, destructiveHint=false, etc.), so the description itself must disclose behavioral traits. It only lists operations without explaining side effects, such as modifying the current scene, creating new objects, or affecting the active camera state. For example, 'Create a new camera' does not state that it adds a camera to the scene or require existing context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and uses a bulleted list for operations. Every sentence contributes useful information, and there is no redundant text.
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 are adequately documented elsewhere. However, the description lacks guidance on which parameters apply to each operation, which is important given 10 parameters and 3 operations. For instance, it doesn't explain that camera_name is needed for set_active_camera. This is a clear gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds some value by implying which parameters are relevant for each operation (e.g., set_camera_lens uses lens and sensor_width), but it does not clarify which parameters are required per operation. The parameter descriptions in the schema already cover individual meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and resource ('Create and control cameras in Blender scenes') and enumerates three distinct operations via the operation parameter. This differentiates it from siblings like blender_scene or blender_lighting, which target other aspects of Blender.
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 usage context by explaining that multiple operations are supported and listing them. While it does not explicitly name alternatives or exclusions, the camera-specific focus makes it evident when to use this tool. However, it could be improved by contrasting with other scene tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_compositorC
Compositor graph operations for post-processing.
Operations:
enable: turn on compositor nodes with render layers -> composite wiring
add_node: add a compositor node
connect_nodes: connect two compositor nodes
glow: add a glow/glare effect chain
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_compositor", {"operation": "enable"})| Name | Required | Description | Default |
|---|---|---|---|
| to_node | No | ||
| from_node | No | ||
| glow_size | No | ||
| node_name | No | ||
| node_type | No | CompositorNodeBlur | |
| operation | No | enable | |
| to_socket | No | ||
| location_x | No | ||
| location_y | No | ||
| from_socket | No | ||
| glow_quality | No | ||
| use_sequencer | No | ||
| glow_threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, providing no safety profile. The description only gives surface-level operations (e.g., 'add a compositor node') without disclosing side effects, required Blender state, or reversibility. It does include the return format for success/message/data, but that's not behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a bullet list, return format section, and example. It is concise and scannable, though the 'Operations' list could be slightly more compact if parameters were documented elsewhere.
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 13 parameters, 4 operations, no schema descriptions, and no annotations, the description falls short. It provides an overview and an example but omits parameter semantics, per-operation prerequisites, and broader Blender context needed to invoke it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not map any of the 13 parameters to operations. Some parameters are inferable (e.g., from_node/to_node for connect_nodes) but not explicitly documented, leaving users to guess the roles of glow_size, use_sequencer, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool handles 'Compositor graph operations for post-processing' and enumerates specific sub-operations (enable, add_node, connect_nodes, glow) with short explanations. While it doesn't explicitly contrast with sibling tools, the compositor focus distinguishes it from other Blender 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 implies usage for post-processing via the opening line and provides a simple example. However, it lacks explicit guidance on when to choose this tool over siblings like blender_render or blender_shaders, and does not explain when to use each sub-operation beyond their brief descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_downloadA
Download from URL and import, or get supported formats info (portmanteau).
Operations:
download: Download from url and optionally import into scene (requires url)
info: Supported file formats and usage examples
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | For download - URL to download from (http/https) | |
| timeout | No | For download - timeout in seconds (1-300) | |
| operation | No | One of download, info | download |
| custom_filename | No | For download - custom filename without extension | |
| import_into_scene | No | For download - import into current scene |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description notes 'requires url' and 'optionally import into scene', adding some behavioral context. But annotations are all false and provide no safety hints, so the description carries the burden; it doesn't disclose potential side effects of importing into the scene or what happens on failure.
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 paragraphs with a structured operation list. The term 'portmanteau' is distracting and unexplained, but the overall text is compact and includes only the essentials.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the two operations and their key requirements. With an output schema present and fully documented parameters, it is complete enough to guide usage; it lacks explicit failure behavior, but that is likely handled by the 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 descriptions cover all parameters (100%), providing a solid baseline. The description clarifies that 'operation' switches between download and info and that 'url' is expected for download, but adds no new syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it downloads from URL and optionally imports, or provides file format info. Distinguishes from sibling import tools by emphasizing the URL source and offering a distinct info operation.
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 operation list clearly indicates when to use download vs info, and the 'requires url' note implies the precondition for download. However, it does not explicitly exclude alternatives like blender_import for local files, so there's clear context but no direct when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_exportB
Export Blender scenes and objects to interchange and game-engine formats.
Operations:
export_gltf / export_glb / export_fbx / export_obj / export_stl / export_usd / export_vrm
export_unity / export_vrchat / export_unreal (platform presets)
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_export", {"operation": "export_glb", "output_path": "C:/out/model.glb"})| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | export_glb | |
| file_format | No | GLB | |
| output_path | No | ||
| global_scale | No | ||
| object_names | No | ||
| apply_transforms | No | ||
| include_materials | No | ||
| include_animations | No | ||
| use_mesh_modifiers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (all false), so the description carries the full burden. It discloses the return format but does not mention file system effects, overwrite behavior, or prerequisites like a running Blender instance. Since this tool writes files, the lack of any behavioral disclosure beyond operations is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a short intro, a bulleted list of operations, and an example. It is concise and free of excess verbiage, though the example code block and return format section add some length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters and a nontrivial set of operations, the description is incomplete. It omits parameter semantics, does not explain platform preset differences, and does not mention limitations or requirements. The output schema covers return format, but overall the description leaves significant gaps for a tool of this complexity.
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 the description only illustrates 'operation' and 'output_path' via an example, leaving other parameters (global_scale, apply_transforms, include_materials, etc.) unexplained. While the operation list adds some value, it does not compensate for the undocumented parameters, which are critical for effective use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Export Blender scenes and objects to interchange and game-engine formats.' It lists specific operations (e.g., export_gltf, export_fbx, export_unity) that distinguish it from siblings like blender_import and blender_render. The verb 'Export' is specific and the resource is well-defined.
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 on when to use the tool (exporting scenes/objects to various formats), which is implied by the operation list and example. However, it does not explicitly state when not to use it or mention alternatives like blender_import, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_export_presetsB
Platform-specific export presets for VR avatar deployment.
Handles the critical differences between VR platforms (scale, format, bone limits) ensuring your avatars work correctly in VRChat, Resonite, and Unity environments.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Target VR platform ("VRCHAT", "RESONITE", "UNITY", etc.) | VRCHAT |
| operation | No | Export preset operation type | export_with_preset |
| check_bones | No | Validate bone count and naming in validation | |
| check_scale | No | Validate scale settings in validation | |
| output_path | No | Export output path (without extension) | //export |
| preset_name | No | Name for custom preset creation | |
| base_platform | No | Platform to base custom preset on | VRCHAT |
| target_objects | No | List of object names to export/validate | |
| apply_modifiers | No | Apply modifiers before export | |
| check_materials | No | Validate material compatibility in validation | |
| custom_settings | No | Custom settings for preset creation | |
| include_textures | No | Include textures in export | |
| include_materials | No | Include materials in export |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotation hints set to false (readOnly, idempotent, destructive), the description must disclose behavioral traits, but it does not. It does not mention whether the tool exports files, modifies the scene, creates presets, or has side effects. The operation parameter indicates multiple modes, but the description leaves the agent unaware of these behaviors.
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, with two sentences that communicate the core purpose without jargon or fluff. It earns its place, though it lacks structure (e.g., no bullets or operation list) that might aid scannability.
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 complex with 13 parameters and multiple operations (export, validate, get presets, create custom), but the description does not mention these operations or how the tool fits into a broader workflow. The output schema exists, so return values are covered, but the overall context of what the tool actually does beyond 'handling differences' is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some high-level context by referencing scale, format, and bone limits, which loosely maps to check_scale, check_bones, and platform settings, but it does not provide detailed parameter semantics beyond what the schema already offers. Overall, the schema carries the load.
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 identifies the tool as providing platform-specific export presets for VR avatar deployment, mentioning specific platforms (VRChat, Resonite, Unity) and critical aspects (scale, format, bone limits). This distinguishes it from general export tools like blender_export, though it does not explicitly contrast with 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?
The description gives clear context for when to use the tool: when deploying avatars to VR platforms and needing to handle platform-specific differences. It implies usage scenarios but does not provide explicit when-not-to-use guidance or mention alternatives, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_furnitureB
Create furniture and complex objects in Blender.
Supports multiple operations through the operation parameter:
create_chair: Create chairs (dining, office, armchair, etc.)
create_table: Create tables (dining, coffee, desk, etc.)
create_bed: Create beds (single, double, bunk, etc.)
create_sofa: Create sofas and couches
create_cabinet: Create cabinets and storage
create_shelf: Create bookshelves and shelving
create_desk: Create desks and workstations
create_stool: Create stools and bar stools
create_room: Create room with walls, floor, ceiling, windows, doors
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the furniture object | Furniture |
| style | No | Style (modern, classic, rustic, industrial, etc.) | modern |
| width | No | ||
| height | No | ||
| length | No | ||
| bed_type | No | single | |
| has_door | No | ||
| location | No | Position coordinates | |
| material | No | Material type (wood, metal, fabric, etc.) | wood |
| desk_type | No | office | |
| operation | No | Furniture creation operation | create_chair |
| room_type | No | living | |
| sofa_type | No | three_seater | |
| chair_type | No | dining | |
| dimensions | No | Base dimensions (width, depth, height) | |
| shelf_type | No | bookshelf | |
| stool_type | No | bar | |
| table_type | No | dining | |
| has_windows | No | ||
| cabinet_type | No | kitchen | |
| window_count | No | ||
| wall_thickness | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (all false). The description only says 'in Blender' and 'create', without disclosing side effects, whether it modifies the current scene, or any permissions needed. No additional behavioral context is provided.
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 well-structured with a bullet list of operations, front-loading the core purpose. It avoids unnecessary prose, though it could have added brief parameter guidance 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?
Given the high complexity (22 parameters, many operation-specific) and low schema coverage, the description is incomplete. It does not explain how operation selection affects parameters, room creation specifics, or any output behavior. An output schema exists, but that does not cover usage semantics for each 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?
Schema description coverage is only 27%, so the description must compensate for poorly documented parameters. It does not explain which parameters apply to which operation, nor does it add meaning beyond listing operation values. This leaves many type-specific parameters (e.g., bed_type, has_door) 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?
The description clearly states the tool creates furniture and complex objects in Blender, with a specific verb and resource. Listing supported operations (chairs, tables, beds, sofas, etc.) distinguishes it from sibling tools by targeting a specific object category.
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 by listing supported operations, so an agent knows this tool is for furniture creation. However, it lacks explicit guidance on when to use this tool versus alternatives like construct_object or blender_mesh, and does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_geonodesB
Geometry Nodes graph operations (procedural modeling).
Operations:
create_group: create or reuse a GeometryNodeTree
add_node: add a node to the group
connect_nodes: wire two nodes in the group
assign_modifier: attach node group to an object as Geometry Nodes modifier
add_input: expose a group input socket
list_node_types: common GeometryNode types for agents
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_geonodes", {"operation": "create_group", "group_name": "MyNodes"})| Name | Required | Description | Default |
|---|---|---|---|
| to_node | No | ||
| from_node | No | ||
| node_name | No | ||
| node_type | No | GeometryNodeMeshCube | |
| operation | No | create_group | |
| to_socket | No | ||
| group_name | No | GeoNodes | |
| input_name | No | Input | |
| location_x | No | ||
| location_y | No | ||
| from_socket | No | ||
| object_name | No | ||
| socket_type | No | NodeSocketFloat | |
| default_value | No | ||
| modifier_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so no safety profile is provided. The description lists mutating operations (e.g., assign_modifier, add_node) but does not disclose side effects such as modifying the Blender scene, requiring an open project, or potential failure modes. The return format is mentioned but redundant given the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a bullet list of operations, a return format note, and an example. It is concise and front-loaded, though the return format section is redundant since an output schema exists.
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 complex with 15 parameters and 6 distinct operations, but the description only lists operations without explaining operation sequences (e.g., create_group before add_node), parameter dependencies, or preconditions. The example covers only one operation, leaving significant operational 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?
With 0% schema description coverage for 15 parameters, the description must compensate, but it only partially does. The operation names hint at relevant parameters (e.g., connect_nodes implies from_node/to_node) and the example uses group_name, but there is no explicit mapping of parameters to operations or clarification of required vs. optional fields.
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 defines the tool as 'Geometry Nodes graph operations (procedural modeling)' and lists six specific operations (create_group, add_node, etc.), distinguishing it from sibling tools like blender_modifiers or blender_shaders. The enumerated operations make the purpose concrete and actionable.
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 domain context ('Geometry Nodes graph operations') and an example call, which implies usage. However, it does not explicitly mention when to choose this tool over alternatives or state any exclusions. This meets the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_grease_pencilA
PORTMANTEAU RATIONALE: Consolidates 12 Grease Pencil 2D animation operations into a single tool.
Operations:
create: Create a new Grease Pencil object with layer and initial frame
draw_stroke: Draw strokes (LINE, BOX, CIRCLE, ARC, CURVE) with color/thickness
convert: Convert Grease Pencil to MESH, CURVE, or new GP strokes
set_material: Create and assign GP material with stroke/fill color
set_layer: Create, reorder, lock, toggle visibility of GP layers
animate_stroke: Keyframe stroke properties (location, rotation, scale) over time
onion_skinning: Enable/disable onion skin with before/after frame count
add_modifier: Apply GP modifiers (BUILD, NOISE, SIMPLIFY, SMOOTH)
fill_region: Fill enclosed stroke regions with color
interpolate: Generate in-between frames between two GP frames
delete_strokes: Remove strokes from a GP frame by selection type
list_layers: List all layers and frame info on a GP object
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for new GP object (used by: create) | GPencil |
| color | No | RGBA stroke color 0-1 (used by: draw_stroke, set_material) | |
| width | No | Box width (used by: draw_stroke BOX) | |
| cyclic | No | Close the stroke (used by: draw_stroke) | |
| height | No | Box height (used by: draw_stroke BOX) | |
| points | No | Point coordinates for LINE/CURVE strokes (used by: draw_stroke) | |
| radius | No | Circle radius (used by: draw_stroke CIRCLE) | |
| location | No | Placement location (used by: create) | |
| svg_path | No | File path to SVG (used by: import_svg) | |
| to_layer | No | Target layer (used by: set_layer) | |
| gp_object | No | Target GP object name (used by: draw_stroke, convert, set_material, etc.) | |
| operation | No | The GP operation to perform | create |
| thickness | No | Stroke thickness (used by: draw_stroke) | |
| fill_color | No | RGBA fill color 0-1 (used by: set_material, fill_region) | |
| from_layer | No | Source layer for transfer (used by: set_layer) | |
| layer_name | No | Target layer name (used by: draw_stroke, set_layer, animate_stroke) | GP_Layer |
| stroke_type | No | LINE|BOX|CIRCLE|ARC|CURVE (used by: draw_stroke) | LINE |
| target_type | No | MESH|CURVE|GP_STROKES (used by: convert) | MESH |
| after_frames | No | Frames after current (used by: onion_skinning) | |
| frame_number | No | Frame number for drawing (used by: draw_stroke, interpolate) | |
| before_frames | No | Frames before current (used by: onion_skinning) | |
| keep_original | No | Keep original after conversion (used by: convert) | |
| material_name | No | Name for new material (used by: set_material) | |
| modifier_type | No | BUILD|NOISE|SIMPLIFY|SMOOTH (used by: add_modifier) | BUILD |
| selection_type | No | ALL|VISIBLE|INVERT (used by: delete_strokes) | ALL |
| modifier_settings | No | JSON string of modifier settings (used by: add_modifier) | |
| interpolation_frames | No | Number of in-between frames (used by: interpolate) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists 'delete_strokes: Remove strokes from a GP frame' which is a destructive behavior, yet annotations declare destructiveHint=false. This contradicts the annotation's implication that the tool is not destructive. No other behavioral context (e.g., side effects, prerequisites) 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?
The description is well-structured with a clear rationale header and a bulleted operation list. It is somewhat long but each line conveys a distinct operation, so the length is justified. The use of markdown makes it scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (27 params, 12 operations), the description provides a solid overview but does not fully explain prerequisites or operation-specific parameter requirements. However, the input schema and output schema cover many details, making the description sufficient for selection and basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter already describing its 'used by' operation, so the baseline is 3. The description adds value by grouping operations into a coherent list, giving agents a high-level understanding of how parameters fit together across the 12 operations.
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 consolidates 12 Grease Pencil operations and provides an explicit list of operations, each with a brief verb+resource description. This distinguishes it from sibling tools focused on mesh, materials, or other Blender domains, leaving no doubt about its 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?
The description implies usage through its operation list ('Use for Grease Pencil 2D animation operations') but does not explicitly mention alternatives or when not to use. It names no sibling tools or exclusions, so guidance is present but indirect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_helpARead-onlyIdempotent
Get help, list tools, search, tool info, or categories (portmanteau).
Operations:
help: Comprehensive help for tools/functions (use function_name, category, detail_level)
list_tools: List all tools, optionally filtered by category
search: Search tools by name or description (use query)
tool_info: Detailed info for one tool (use tool_name)
categories: List all categories with tool counts
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | For search - search term | |
| category | No | For help/list_tools - category filter | |
| operation | No | One of help, list_tools, search, tool_info, categories | help |
| tool_name | No | For tool_info - tool to describe | |
| detail_level | No | For help - brief, normal, detailed | normal |
| function_name | No | For help - specific function name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral detail by explaining what each operation does and which parameters it consumes, going beyond the raw schema. It doesn't cover edge cases or error behavior, but for a read-only help tool, this is not 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 about 120 words and structured as a clear bullet-like list. The first sentence provides a concise overview, and each operation line is purposeful and directly informative. No redundant or filler language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 operations and 6 optional parameters, and the description covers every operation with its parameter mapping. Since an output schema exists, return-value details are not needed. The description fully addresses the tool's scope as a help/meta utility, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the schema's parameter descriptions are terse and generic (e.g., 'For help - specific function name'). The description significantly enriches semantics by linking operations to parameters, e.g., 'help: Comprehensive help... (use function_name, category, detail_level)' and 'list_tools: List all tools, optionally filtered by category'. This mapping is the key value and is not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get help, list tools, search, tool info, or categories', clearly stating the tool's five distinct operations. It distinguishes itself from sibling tools by being the meta-help/utility tool, not a specific Blender feature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly maps each operation to its relevant parameters, e.g., 'search: Search tools by name or description (use query)' and 'tool_info: Detailed info for one tool (use tool_name)'. This provides clear usage context within the tool, though it does not explicitly contrast it with sibling tools like blender_api_docs. Still, the operations define their own usage sufficiently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_importA
Import 3D files into Blender scenes.
Supports multiple operations through the operation parameter:
import_[format]: Import files in any supported format (FBX, OBJ, GLTF, STL, PLY, etc.)
import_cad: Import CAD files (STEP, STP, IGES, IGS) with automatic conversion
link_asset: Link external assets without importing
CAD IMPORT FEATURES:
Automatic STEP/STP conversion using Mayo, FreeCAD, or online tools
Mesh quality control (low/medium/high)
Scale adjustment for unit conversion
Direct integration with robotics-mcp CAD converter
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | No | Path to the file to import | |
| operation | No | Import operation type | import_fbx |
| asset_name | No | LinkedAsset | |
| file_format | No | Format of the file (FBX, OBJ, GLTF, CAD, etc.) | FBX |
| global_scale | No | Global scale factor for import | |
| mesh_quality | No | Mesh quality for CAD conversion (low, medium, high) | medium |
| import_shading | No | Import material shading | |
| cad_scale_factor | No | Scale factor for CAD unit conversion | |
| use_custom_normals | No | Import custom normals | |
| cad_conversion_tool | No | CAD conversion tool (auto, mayo, freecad, online) | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only contain false flags, so the description carries the burden. It adds useful context like automatic STEP/STP conversion with Mayo/FreeCAD/online tools and direct integration with robotics-mcp CAD converter, but it does not disclose side effects on the scene or potential failure modes.
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 well-structured with a front-loaded purpose statement, bullet lists for operations and CAD features, and no redundant or filler content. Each line adds meaningful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, output schema exists), the description covers operations and CAD specifics adequately. It does not mention prerequisites like an active Blender session, but the output schema and detailed operation list make it sufficiently complete for an agent to select and invoke.
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 high (90%), but the description enriches the operation parameter by enumerating possible values (import_[format], import_cad, link_asset) and explains the purpose of mesh_quality, cad_scale_factor, and cad_conversion_tool in the CAD features section.
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 'Import 3D files into Blender scenes' and elaborates with specific operations (import_[format], import_cad, link_asset). This distinguishes it from related tools like blender_export and provides a clear scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists operation types within the tool but gives no explicit guidance on when to use this tool versus alternatives such as import_cad_file or blender_export. There are no exclusions or comparisons to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_jobsA
Async job queue for long-running Blender Python scripts (renders, bakes, sims).
Operations:
submit: queue script, returns job_id immediately
status: poll job by job_id
list: recent jobs
cancel: cancel pending/running job
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_jobs", {"operation": "submit", "script": "import bpy; print('hello')"})| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| job_id | No | ||
| script | No | ||
| timeout | No | ||
| operation | No | status | |
| script_name | No | async_job | |
| prefer_session | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses async behavior ('returns job_id immediately'), cancel semantics, and the standard return format (success, message, data). This adds meaningful context beyond the annotations, though it omits details like error handling or whether cancel truly kills remote jobs.
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?
Well-organized with a brief summary, bulleted operations, return format, and a single example. Every section serves a purpose and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core use case, operations, return format, and a practical example, making the tool largely self-contained. The few undocumented parameters prevent a perfect score, but overall it provides enough context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The operations list and example clarify the 'operation' and 'script' parameters, but the remaining parameters (limit, job_id, timeout, script_name, prefer_session) are not explained. With schema description coverage at 0%, the description only partially compensates for the lack of structured documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Async job queue for long-running Blender Python scripts' and lists the four operations (submit, status, list, cancel), making its purpose unmistakable. This clearly distinguishes it from synchronous script execution and other Blender-specific 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?
The 'long-running' qualifier and examples (renders, bakes, sims) indicate when to use this queueing tool. However, it does not explicitly mention alternatives like script_execute or state when not to use it, leaving the exclusion guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_lightingA
PORTMANTEAU PATTERN RATIONALE: Consolidates 7 related lighting operations into single interface. Prevents tool explosion while maintaining full lighting workflow from basic lights to professional HDRI setups. Follows FastMCP 2.14.3 best practices.
Professional lighting system for Blender supporting all light types, HDRI environments, and lighting rigs.
Light Creation (4 operations):
create_sun: Generate directional sunlight with shadow control for outdoor scenes
create_point: Create omnidirectional point light for general illumination
create_spot: Generate focused spotlight with beam angle and softness control
create_area: Create rectangular area light for soft, realistic shadows
Lighting Setups (2 operations):
setup_three_point: Create professional three-point lighting rig (key, fill, rim lights)
setup_hdri: Configure HDRI environment lighting with world background
Light Management (1 operation):
adjust_light: Modify properties of existing lights (energy, color, position, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Physical size of area lights. Default: 1.0. Range: 0.01 to 100.0. Larger sizes = softer, more realistic shadows. Only used for: "create_area". | |
| color | No | Light color as RGB values. Default: (1, 1, 1) (white). Range: 0.0 to 1.0 per channel. Used for: all light creation and adjustment. | |
| energy | No | Light intensity/energy multiplier. Default: 1.0. Range: 0.0 to 100.0. Higher values = brighter light. Used for: all light creation and adjustment. | |
| location | No | 3D position coordinates (x, y, z) in world space. Default: (5, 5, 5). Used for: all "create_*" operations. | |
| rotation | No | Rotation angles in degrees (x, y, z) around each axis. Default: (0, 0, 0). Primarily affects: "create_spot" for beam direction. | |
| operation | No | The lighting operation to perform. Must be one of: "create_sun", "create_point", "create_spot", "create_area", "setup_three_point", "setup_hdri", "adjust_light". - Light creation: "create_*" operations (use: light_name, location, rotation, energy, color + type-specific params) - Lighting setups: "setup_*" operations (use: minimal parameters, auto-position lights) - Light adjustment: "adjust_light" (use: light_name + properties to modify) | create_sun |
| spot_size | No | Beam angle in degrees for spot lights. Default: 45.0. Range: 1.0 to 180.0. Smaller angles = more focused beam. Only used for: "create_spot". | |
| light_name | No | Name for the new light object. Default: "Light". Must be unique in scene. Required for: all "create_*" and "adjust_light" operations. | Light |
| light_type | No | Type of light for creation operations. One of: "SUN", "POINT", "SPOT", "AREA". Default: "SUN". Auto-detected from operation when possible. | SUN |
| spot_blend | No | Edge softness for spot lights. Default: 0.15. Range: 0.0 to 1.0. Higher values = softer beam edges. Only used for: "create_spot". | |
| shadow_soft_size | No | Shadow softness for sun lights. Default: 0.1. Range: 0.0 to 10.0. Higher values = softer shadows. Only used for: "create_sun". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations all false (readOnlyHint=false, destructiveHint=false, etc.), the description carries the burden of disclosing behavior. It states operations such as 'Generate directional sunlight', 'Create point light', and 'Modify properties of existing lights', clearly indicating mutating effects. It also notes operation-specific parameters like spot_size and shadow_soft_size, adding context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description starts with a 'PORTMANTEAU PATTERN RATIONALE' paragraph that explains tool design philosophy rather than usage. While the subsequent operation breakdown is well-structured with bullet points, the meta rationale adds length without helping an agent select or invoke the tool, making it less concise than optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 operations and 11 parameters, the description covers all operations and indicates which parameters apply to each. It implicitly communicates that it operates within Blender, consistent with sibling tools. Given the output schema exists, the lack of return-value details is acceptable. It does not mention prerequisites like an active Blender session, but this appears to be common across the sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with detailed descriptions for all 11 parameters, including usage notes like 'Only used for: create_area'. The description groups parameters by operation (create_* vs setup_* vs adjust_light), which reinforces the mapping but does not add materially new semantics beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a 'Professional lighting system for Blender' and enumerates seven distinct lighting operations (create_sun, create_point, create_spot, create_area, setup_three_point, setup_hdri, adjust_light). This separates it from sibling tools like blender_camera or blender_render by focusing specifically on lighting.
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 this is the consolidated tool for all lighting tasks, explaining that it consolidates 7 operations to prevent tool explosion. However, it does not explicitly state when to use this over alternatives or list exclusions, leaving usage guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_logsARead-onlyIdempotent
View recent logs or log buffer statistics (portmanteau).
Operations:
view: Recent log entries with optional filters (level_filter, module_filter, limit, since_minutes, include_details)
stats: Log buffer statistics (total entries, time range, level distribution)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | For view - max entries (1-100) | |
| operation | No | One of view, stats | view |
| level_filter | No | For view - DEBUG, INFO, WARNING, ERROR, CRITICAL | |
| module_filter | No | For view - partial module name match | |
| since_minutes | No | For view - logs from last N minutes | |
| include_details | No | For view - include function/line in output |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds operational behavior by describing what each operation does, including the stats output (total entries, time range, level distribution), which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, starting with a clear one-sentence purpose and using a bulleted list for operations. Every sentence contributes meaning, with no unnecessary 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 read-only nature, full schema coverage, and presence of an output schema, the description sufficiently explains the tool's functionality and parameter applicability. It does not discuss limitations or integration details, but these are not critical for a well-annotated read-only log 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?
The input schema has 100% parameter description coverage, so baseline is 3. The description adds value by explicitly grouping parameters under 'view' and 'stats', clarifying which parameters apply to which operation and what the stats operation returns, which the schema does not fully convey.
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 'View recent logs or log buffer statistics' with a specific verb and resource. It then details two distinct operations (view and stats), making the tool's purpose unambiguous and distinguishable from sibling tools like show_logs_app.
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 operation-specific parameter groupings (view vs stats) but does not explicitly state when to use this tool instead of siblings such as show_logs_app or blender_status. There are no alternative/exclusion statements, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_materialsA
Create and manage PBR materials in Blender.
Supports multiple operations through the operation parameter:
create_fabric: Create fabric material (velvet, silk, cotton, linen, etc.)
create_metal: Create metal material (gold, silver, brass, copper, etc.)
create_wood: Create wood material (oak, pine, mahogany, walnut, etc.)
create_glass: Create glass material (clear, tinted, frosted, stained)
create_ceramic: Create ceramic material (porcelain, ceramic, terra_cotta)
assign_to_object: Assign existing material to object
create_from_preset: Create material from predefined preset
| Name | Required | Description | Default |
|---|---|---|---|
| ior | No | Index of refraction (1.0-2.5) | |
| name | No | Name for the new material | Material |
| metallic | No | Metallic property (0-1) | |
| operation | No | Material operation type | create_fabric |
| roughness | No | Surface roughness (0-1) | |
| wood_type | No | Type of wood (oak, pine, mahogany, walnut, cherry, beech) | oak |
| anisotropy | No | Surface anisotropy for brushed effects (0-1) | |
| base_color | No | Base color as RGB values (0-1) | |
| glass_type | No | Type of glass (clear, tinted, frosted, stained) | clear |
| glossiness | No | Surface glossiness (0-1) | |
| metal_type | No | Type of metal (gold, silver, brass, copper, iron, aluminum) | gold |
| silk_sheen | No | Sheen intensity for silk materials (0-1) | |
| fabric_type | No | Type of fabric (velvet, silk, cotton, linen, brocade, satin, wool) | velvet |
| grain_scale | No | Scale of wood grain pattern (0.1-5.0) | |
| object_name | No | Name of object for assignment | |
| preset_name | No | Name of material preset to use | |
| sub_surface | No | Subsurface scattering amount (0-1) | |
| weave_scale | No | Scale of weave pattern (0.1-10.0) | |
| ceramic_type | No | Type of ceramic (porcelain, ceramic, terra_cotta) | porcelain |
| transmission | No | Light transmission amount (0-1) | |
| material_name | No | Name of material for assignment | |
| normal_strength | No | Normal map intensity (0-1) | |
| velvet_softness | No | Softness for velvet materials (0-1) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'create and manage' which implies modifications to the Blender scene, but it does not disclose side effects, required permissions, reversibility, or what gets destroyed/changed. Annotations provide no safety hints (all false), leaving the description to carry the burden, and it does not.
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 well-structured: a one-sentence summary followed by a bulleted list of operations. Every line adds information, and the format 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?
The description provides a solid high-level overview but misses critical operational context: it does not indicate which parameters apply to each operation (e.g., which parameters are used for create_metal vs create_fabric). An output schema exists to cover return values, but the description still leaves uncertainty about parameter usage per operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers parameter descriptions at 100%, so baseline is 3. The description adds value by explaining the operation parameter's enum values in plain language and grouping them by material type, which helps agents select the right operation. It does not map all parameters to operations, but the schema descriptions handle 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?
The description clearly states the tool's purpose as 'Create and manage PBR materials in Blender' and enumerates specific operation types (create_fabric, create_metal, etc.), making the scope explicit. It distinguishes itself from sibling tools like blender_textures or blender_shaders by focusing on PBR material creation and assignment.
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: it is for creating and managing PBR materials, with a list of sub-operations. However, it does not explicitly state when to use this tool over alternatives (e.g., blender_shaders or blender_textures) or provide exclusion criteria, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_materials_bakingA
Convert non-standard (VRM/MToon) shaders to PBR textures.
Essential for VRM avatars moving into Resonite, Unity, or other PBR-based environments. Prevents "Semantic Dilution" of artistic intent.
| Name | Required | Description | Default |
|---|---|---|---|
| margin | No | Pixel margin for UV island bleeding | |
| bake_type | No | Type of bake ("combined", "albedo", "normal", "roughness") | combined |
| operation | No | Baking operation type | bake_toon_to_pbr |
| output_dir | No | Output directory for baked textures | //bakes |
| resolution | No | Bake texture resolution (512, 1024, 2048, 4096) | |
| target_mesh | No | Specific mesh object to process (defaults to active) | |
| create_backup | No | Create backup of original materials | |
| max_atlas_size | No | Maximum atlas texture size for consolidation | |
| preserve_lighting | No | Try to maintain original lighting in conversions | |
| remove_unused_uvs | No | Clean up unused UV space during consolidation |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, leaving the description to carry the burden. The description only states the conversion outcome but doesn't disclose side effects such as file writes, material modifications, or whether original materials are backed up. The mention of 'Prevents Semantic Dilution' is a value proposition, not a behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first gives the core function, the second gives the use case. No redundant words, and the marketing-like 'Semantic Dilution' phrase adds a memorable rationale.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 params, multiple operations), the description is somewhat thin. It focuses on one operation (convert shaders) but doesn't mention other operations like consolidate_materials or optimize_for_mobile. Output schema covers return values, but the description doesn't address when to use different operations or what side effects occur, leaving 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?
All 10 parameters have schema descriptions (100% coverage), so the baseline is 3. The description doesn't elaborate on parameter meanings beyond the schema, but the high-level purpose helps interpret parameters like 'operation' and 'bake_type' in the context of converting VRM/MToon to PBR.
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 'Convert non-standard (VRM/MToon) shaders to PBR textures,' which clearly states the tool's action and target. It distinguishes from sibling tools like blender_shaders or blender_materials by focusing on conversion to PBR, and the Resonite/Unity context adds specificity.
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 'Essential for VRM avatars moving into Resonite, Unity, or other PBR-based environments' provides a clear when-to-use context. However, it doesn't name alternatives or specify when not to use, so it's not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_meshC
PORTMANTEAU PATTERN RATIONALE: Consolidates 9 related mesh operations into single interface. Prevents tool explosion while maintaining full primitive creation and object management functionality. Follows FastMCP 2.14.3 best practices.
Create and manipulate mesh objects in Blender with comprehensive primitive support.
Core Operations:
create_cube: Generate cube primitive with customizable dimensions
create_sphere: Generate sphere primitive with vertex control
create_cylinder: Generate cylinder primitive with radius/depth control
create_cone: Generate cone primitive with radius/depth control
create_plane: Generate plane primitive for ground/floor surfaces
create_torus: Generate torus primitive with ring/tube radius control
create_monkey: Generate Suzanne (monkey) primitive for testing
duplicate_object: Create copies of existing objects with transforms
delete_object: Remove objects from scene by name
extrude: Extrude mesh region along +Z in edit mode
inset: Inset selected faces
bevel_modifier: Add bevel modifier to mesh object
subdivide: Subdivide mesh edges
merge_vertices: Merge by distance (remove doubles)
delete_faces: Delete selected faces in edit mode
join: Join multiple mesh objects into one
separate_loose: Separate loose parts to new objects
triangulate: Convert quads to triangles
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the new object or object to delete. Must be unique in scene. | Object |
| depth | No | Height/depth parameter for 3D primitives (cylinder, cone). Default: 2.0. Range: 0.01 to 100.0. | |
| scale | No | Scale factors along each axis (x, y, z). Default: (1, 1, 1). Applied after object creation. | |
| radius | No | Radius parameter for curved primitives (sphere, cylinder, cone, torus). Default: 1.0. Range: 0.01 to 100.0. | |
| distance | No | ||
| location | No | World-space coordinates (x, y, z) for object placement. Default: (0, 0, 0). Used for all create operations. | |
| vertices | No | Vertex count for curved surfaces (sphere, cylinder). Default: 32. Range: 3 to 256. Higher values = smoother surfaces. | |
| operation | No | The mesh operation to perform. Must be one of: "create_cube", "create_sphere", "create_cylinder", "create_cone", "create_plane", "create_torus", "create_monkey", "duplicate_object", "delete_object". - "create_*": Create new primitive objects (require: name, may use: location, scale, radius, depth, vertices) - "duplicate_object": Copy existing object (requires: source_name, name) - "delete_object": Remove object from scene (requires: name) | create_cube |
| thickness | No | ||
| join_names | No | ||
| bevel_width | No | ||
| inset_depth | No | ||
| source_name | No | Name of source object for duplication operations. Required for "duplicate_object" operation. | |
| bevel_segments | No | ||
| merge_distance | No | ||
| prefer_session | No | ||
| primitive_type | No | Type of primitive for create operations. One of: "cube", "sphere", "cylinder", "cone", "plane", "torus", "monkey". Auto-detected from operation if not specified. | cube |
| subdivide_cuts | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly lists destructive operations such as 'delete_object: Remove objects from scene by name' and 'delete_faces: Delete selected faces', yet the annotations declare destructiveHint=false. This is a direct contradiction. Additionally, the description omits behavioral details like requirements for edit mode or permanence of deletions.
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 opens with a meta 'PORTMANTEAU PATTERN RATIONALE' that is not operationally useful and bloats the entry. The core description is then buried behind this rationale. While the operation list is structured with bullets, the overall length and unnecessary rationale make it less concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 18 parameters and many operations, the description lacks essential context such as prerequisites (e.g., needing an object in edit mode for extrude/inset), selection requirements, coordinate systems, and the mapping of parameters to operations beyond create/duplicate/delete. The output schema exists, so return values need not be explained, but the operational context is still insufficient.
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 parameter description coverage is only 50%. The description adds some value by specifying parameter requirements for create/duplicate/delete operations (e.g., 'create_* require: name'), but it fails to explain many parameters such as distance, thickness, join_names, bevel_width, inset_depth, bevel_segments, merge_distance, prefer_session, and subdivide_cuts, which remain undocumented in both schema and description.
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 creates and manipulates mesh objects in Blender with primitive support, and enumerates specific operations. However, it confusingly claims to consolidate '9 related mesh operations' while listing 18, and does not explicitly distinguish itself from sibling tools like blender_scene or blender_transform.
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 direct guidance is given on when to use this tool versus alternatives. The portmanteau rationale mentions preventing tool explosion, but it does not specify scenarios or exclusions. For a tool with many overlapping siblings, this is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_modifiersA
Apply and manage mesh modifiers in Blender.
Supports multiple operations through the operation parameter:
add_subsurf: Add subdivision surface modifier
add_bevel: Add bevel modifier
add_mirror: Add mirror modifier
add_solidify: Add solidify modifier
add_array: Add array modifier
add_boolean: Add boolean modifier
add_decimate: Add decimation modifier
add_displace: Add displacement modifier
add_wave: Add wave modifier
remove_modifier: Remove a modifier
apply_modifier: Apply modifier to mesh
get_modifiers: List all modifiers on object
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Count/repetitions (for array) | |
| width | No | Width/thickness (for solidify, bevel) | |
| levels | No | Subdivision levels (for subsurf) | |
| offset | No | Offset distance (for solidify) | |
| segments | No | Number of segments (for bevel, screw) | |
| operation | No | Modifier operation type | add_subsurf |
| angle_limit | No | Angle limit in degrees (for edge split) | |
| object_name | No | Name of object to modify | |
| modifier_name | No | Name of modifier to operate on | |
| modifier_type | No | Type of modifier to add | SUBSURF |
| render_levels | No | Render subdivision levels | |
| merge_threshold | No | Merge threshold (for mirror) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (readOnlyHint, destructiveHint are all false), so the description carries the transparency burden. It lists operations like apply_modifier and remove_modifier without warning about their potentially destructive/irreversible nature. It does reveal basic behavior through operation names, but lacks details on side effects, permissions, or workflow consequences.
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 well-structured. It opens with a clear one-sentence summary, then lists operations in a scannable bullet format. No redundant or filler content; every line adds informational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all intended operations and parameter categories sufficiently for a tool of this complexity. It could be more explicit about which parameters are required for each operation and whether object_name is mandatory. An output schema exists, so return value details are not necessary. The main gap is missing prerequisites or interaction notes, showing slight incompleteness.
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 already provides descriptions for all 12 parameters (100% coverage). The description adds value by enumerating the valid values for the 'operation' parameter and implicitly linking parameters to operations (e.g., add_array uses count, add_subsurf uses levels). This goes beyond the schema's generic 'Modifier operation type' description.
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 'Apply and manage mesh modifiers in Blender' with a specific verb and resource. It distinguishes itself from sibling tools like blender_mesh and construct_object by focusing exclusively on modifiers. The list of supported operations further clarifies the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The described operations imply when the tool should be used (e.g., add_subsurf for subdivision, remove_modifier for removal), but there is no explicit guidance on when to prefer this tool over alternatives. No exclusions or alternative tool references are provided, making the usage context 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.
blender_particlesA
Create and manage particle systems and effects.
Supports multiple operations through the operation parameter:
create_particle_system: Create basic particle system
create_hair_particles: Create hair/fur particles
create_fire_effect: Create fire/smoke particles
create_water_effect: Create water/splash particles
control_emission: Control particle emission settings
bake_particles: Bake particle simulation
set_particle_physics: Configure particle physics
| Name | Required | Description | Default |
|---|---|---|---|
| lifetime | No | Lifetime of each particle in frames | |
| end_frame | No | Frame when emission ends | |
| operation | No | Particle operation type | create_particle_system |
| object_name | No | Name of object to add particles to | |
| start_frame | No | Frame when emission starts | |
| emission_rate | No | Particles emitted per frame | |
| particle_size | No | Size of individual particles | |
| particle_count | No | Total number of particles |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint=false, etc.), leaving the description to carry the burden. The description lists multiple mutating operations (create, bake, control, set) which implies scene modification, but it does not disclose side effects like overwriting existing particles, performance costs of baking, or prerequisites. It adds some context beyond annotations but not rich behavioral detail.
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 efficiently structured with a one-sentence summary followed by a bulleted list of operations. It is slightly long due to the list, but each line earns its place and information is easy to scan. Front-loading the core purpose works well.
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 multi-operation complexity and the presence of an output schema, the description effectively outlines what operations are available. It does not explain when to choose each operation, but the operation names are self-descriptive. It lacks a note on prerequisites (e.g., object existence), but the parameter schema and output schema fill in most gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-documented. The description adds value by listing the valid values for the 'operation' parameter, which the schema does not provide as an enum. This helps the agent understand the operation sub-types beyond the schema's generic 'Particle operation type'.
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 'Create and manage particle systems and effects' and enumerates specific operations (create, control, bake, set physics), using a specific verb plus resource. It distinguishes itself from sibling tools by focusing exclusively on particle-related functionality.
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 through its title and operation list, but it does not explicitly state when to use this tool versus closely related siblings like blender_physics or blender_animation. No alternatives or exclusions are mentioned, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_physicsA
Enable and configure physics simulations for objects.
Supports multiple operations through the operation parameter:
enable_rigid_body: Add rigid body physics to object
enable_cloth: Add cloth simulation to object
enable_soft_body: Add soft body simulation to object
enable_fluid: Add fluid simulation to object
bake_physics: Bake physics simulation to keyframes
add_force_field: Add force field to scene
set_rigid_body_constraint: Add constraints between objects
configure_world: Set up physics world settings
| Name | Required | Description | Default |
|---|---|---|---|
| mass | No | Object mass in kg | |
| friction | No | Friction coefficient (0-1) | |
| operation | No | Physics operation type | enable_rigid_body |
| bounciness | No | Bounciness/restitution (0-1) | |
| object_name | No | Name of object to apply physics to | |
| physics_type | No | Type of physics (RIGID_BODY, CLOTH, SOFT_BODY, FLUID) | RIGID_BODY |
| damping_linear | No | Linear damping | |
| collision_shape | No | Collision shape type (MESH, BOX, SPHERE, etc.) | MESH |
| damping_angular | No | Angular damping | |
| rigid_body_type | No | Rigid body type (ACTIVE, PASSIVE) | ACTIVE |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no positive hints (readOnlyHint false, destructiveHint false, etc.), leaving the description to carry the burden of behavioral disclosure. The description lists operations like 'bake_physics' and 'add_force_field' but does not explain side effects, such as overwriting existing physics settings, modifying keyframes, or potentially non-reversible actions. For a mutation tool, 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 concise, structured bullet list. The opening sentence states the purpose, followed by a clear enumeration of operations. No wasted words; every line earns its place. It is front-loaded and easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, 7 distinct operations) and no positive annotations, the description is minimally adequate but incomplete. It does not explain which parameters apply to which operations, whether operations are mutually exclusive, or any dependencies (e.g., object must exist). An output schema exists but is not shown; the description could still benefit from usage scenarios or operation-specific parameter notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all 10 parameters, so the baseline is 3. The description goes beyond schema by listing valid values for the 'operation' parameter (enable_rigid_body, enable_cloth, etc.) and implicitly maps operations to physics types. This adds meaningful context that the schema's generic 'Physics operation type' lacks, enhancing parameter understanding.
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 clear purpose: 'Enable and configure physics simulations for objects.' It then enumerates specific operations, distinguishing it from sibling tools like blender_particles or blender_modifiers. The verb 'enable/configure' plus resource 'physics simulations' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for physics-related tasks but does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or prerequisites. It lists operations but without context like 'use enable_rigid_body for rigid body dynamics' or 'bake for animation export.' This is implied guidance at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_renderA
PORTMANTEAU PATTERN RATIONALE: Consolidates rendering operations into a single interface.
Render Operations:
render_preview: Generate high-quality single frame preview
render_turntable: Create 360-degree object rotation animation
render_animation: Render full timeline animation sequence
render_current_frame: Render only the current timeline frame
screenshot_viewport: Capture viewport for agent vision (prefers live GUI session)
render_multi_angle: Render N stills from orbit angles for review loops
set_engine: Configure Cycles/EEVEE engine, samples, device
configure_layers: Enable render passes on a view layer
setup_post_processing: EEVEE bloom, SSAO, motion blur, DOF
Return Format
Standard string with operation result details
Examples
await call_tool("blender_render", {"operation": "render_preview", "output_path": "C:/render/output.png"})| Name | Required | Description | Default |
|---|---|---|---|
| angles | No | ||
| device | No | GPU | |
| frames | No | ||
| samples | No | ||
| use_dof | No | ||
| use_ssao | No | ||
| frame_end | No | ||
| operation | No | render_preview | |
| use_bloom | No | ||
| layer_name | No | ViewLayer | |
| output_dir | No | ||
| file_format | No | PNG | |
| frame_start | No | ||
| output_path | No | ||
| resolution_x | No | ||
| resolution_y | No | ||
| shading_mode | No | SOLID | |
| camera_radius | No | ||
| elevation_deg | No | ||
| render_engine | No | CYCLES | |
| use_denoising | No | ||
| prefer_session | No | ||
| use_motion_blur | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the agent knows mutations are possible. The description adds a little context, such as 'screenshot_viewport: ... prefers live GUI session', but does not disclose side effects like changing Blender settings or writing files beyond the operation names. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a bullet list and example, making it easy to scan. The inclusion of 'PORTMANTEAU PATTERN RATIONALE' is unnecessary meta-commentary, but the rest is informative and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 23 parameters with no schema descriptions, the description is not fully complete. It lists operations but does not map which parameters are relevant for each operation, nor does it clarify the distinction between output_path and output_dir. The presence of an output schema helps with return values, but the parameter mapping gap remains.
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?
With 0% schema coverage, the description must compensate. It partially does by explaining operations that map to parameters (e.g., 'set_engine' covers render_engine/samples/device, 'setup_post_processing' covers bloom/SSAO/motion blur/DOF). However, many parameters like output_dir, frame_start, resolution, and elevation_deg are left undefined, so the compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'consolidates rendering operations into a single interface' and lists concrete sub-operations like render_preview, render_turntable, and render_animation. This makes it unmistakably the rendering-focused tool, distinguishing it from siblings like blender_animation or blender_scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via the operation list (e.g., use 'render_preview' for a single frame), and the example shows a typical call. However, it never explicitly says when to prefer this tool over alternatives or when not to use it, leaving the agent to infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_riggingB
PORTMANTEAU PATTERN RATIONALE: Consolidates 11 related rigging operations into single interface. Prevents tool explosion while maintaining full character rigging workflow from armature creation to humanoid mapping. Follows FastMCP 2.14.3 best practices.
Complete character rigging system for Blender supporting armatures, bones, IK, skinning, and humanoid standards.
Armature Operations (4 operations):
create_armature: Generate new skeleton object with customizable positioning
add_bone: Add individual bones to existing armature with parent/child relationships
create_bone_ik: Set up inverse kinematics constraints for realistic joint movement
create_basic_rig: Auto-generate complete biped character rig with standard bone structure
Bone Management (3 operations):
list_bones: Display all bones in armature with hierarchy and properties
pose_bone: Set bone transformations in pose mode for animation
set_bone_keyframe: Insert keyframes for bone animation at specific frames
Pose & Animation (1 operation):
reset_pose: Return armature to rest pose, clearing all pose transformations
Skinning & Weights (2 operations):
transfer_weights: Copy vertex weights between meshes using various projection methods
manage_vertex_groups: Create, rename, mirror, or remove vertex groups for weight painting
Standards & Compatibility (1 operation):
humanoid_mapping: Apply VRChat/Unity humanoid bone naming and structure standards
| Name | Required | Description | Default |
|---|---|---|---|
| head | No | Starting point coordinates for new bone creation. Required for: "add_bone". Defines bone origin in 3D space. | |
| tail | No | Ending point coordinates for new bone creation. Required for: "add_bone". Defines bone length and direction. | |
| frame | No | Timeline frame number for keyframe insertion. Default: 1. Range: 1-10000. Corresponds to animation timeline frames. | |
| location | No | 3D position coordinates (x, y, z) for armature placement. Default: (0, 0, 0). Used for: "create_armature". | |
| rotation | No | Euler rotation angles in degrees (x, y, z) for bone posing. Default: (0, 0, 0). Used for: "pose_bone". Range: -180 to 180 degrees. | |
| bone_name | No | Name of bone to create, modify, or pose. Required for bone-specific operations. Must be unique within armature. | Bone |
| connected | No | Whether new bone connects directly to parent tail. Default: False. True creates seamless bone chain, False allows bone gaps. | |
| operation | No | The rigging operation to perform. Must be one of: "create_armature", "add_bone", "create_bone_ik", "create_basic_rig", "list_bones", "pose_bone", "set_bone_keyframe", "reset_pose", "transfer_weights", "manage_vertex_groups", "humanoid_mapping". - Armature operations: "create_armature", "add_bone", "create_bone_ik", "create_basic_rig" - Bone operations: "list_bones", "pose_bone", "set_bone_keyframe" - Pose operations: "reset_pose" - Skinning operations: "transfer_weights", "manage_vertex_groups" - Standards operations: "humanoid_mapping" | create_armature |
| group_name | No | Target vertex group name. Required for most group operations. | |
| auto_rename | No | Whether to automatically rename bones to standard names. Default: True. False preserves original bone names while adding mapping. | |
| parent_bone | No | Name of parent bone for hierarchy. Optional for "add_bone". Creates bone chain when specified. | |
| pole_target | No | Empty object name for IK pole target. Optional for "create_bone_ik". Controls IK chain bending direction for natural joint movement. | |
| source_mesh | No | Source mesh object name for weight transfer. Required for: "transfer_weights". Mesh containing vertex weights to copy from. | |
| target_bone | No | Name of target bone for IK constraint. Required for: "create_bone_ik". Defines which bone the IK chain reaches toward. | |
| target_mesh | No | Target mesh object name for weight transfer. Required for: "transfer_weights". Mesh to receive copied vertex weights. | |
| chain_length | No | Number of bones in IK chain. Default: 2. Range: 1-10. Longer chains provide more flexible but complex IK solutions. | |
| max_distance | No | Maximum transfer distance for weight projection. Default: 0.1. Range: 0.001-10.0. Larger values capture more distant geometry. | |
| source_group | No | Source group name for operations like mirror. Required for: "mirror". | |
| armature_name | No | Target armature object name. Required for most operations. Must exist in scene for bone operations. | Armature |
| rotation_mode | No | Euler angle rotation order. One of: "XYZ", "XZY", "YXZ", "YZX", "ZXY", "ZYX". Default: "XYZ". Affects how rotation values are interpreted. | XYZ |
| mapping_preset | No | Humanoid bone mapping standard. One of: "VRCHAT", "UNITY", "BLENDER". Default: "VRCHAT". Defines target bone naming convention. | VRCHAT |
| new_group_name | No | New name for rename operations. Required for: "rename". | |
| vertex_indices | No | List of vertex indices for group assignment. Optional for "assign". Defaults to empty list for manual weight painting. | |
| group_operation | No | Vertex group management operation. One of: "create", "rename", "mirror", "remove", "assign". Required for: "manage_vertex_groups". | create |
| transfer_method | No | Weight projection algorithm. One of: "NEAREST_FACE", "RAY_CAST", "NEAREST_VERTEX". Default: "NEAREST_FACE". "RAY_CAST" most accurate but slower. | NEAREST_FACE |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the burden. It discloses the portmanteau design and lists operation names, but does not mention that operations are selected via the 'operation' parameter, nor describe side effects like scene modification or irreversibility (e.g., manage_vertex_groups can remove groups, reset_pose clears transformations). The description focuses on what operations exist, not how the tool behaves.
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 well-structured with clear categories, but the opening 'PORTMANTEAU PATTERN RATIONALE' paragraph is largely meta-commentary that does not aid invocation. The bullet lists are useful but partially duplicate the schema's operation enum. It earns a middle score due to organization but is padded with non-essential rationale.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (25 parameters, 11 operations), the description provides a high-level overview and grouping but fails to explain that exactly one operation is executed per call based on the 'operation' parameter, or that parameters are conditional per operation. The output schema exists but is not shown, so the description carries some burden. It is adequate but leaves practical usage flow implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's categorization of operations helps associate parameters with operations, but it does not add parameter-specific meaning beyond the schema. The parameter descriptions in the schema already cover usage details, so the description neither compensates nor detracts significantly.
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 identifies the tool as a 'Complete character rigging system for Blender' and enumerates all 11 operations across five categories. This gives a specific verb (rigging), resource (Blender armatures/bones), and distinguishes it from any sibling tool since no other rigging-specific tool is listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when character rigging is needed and lists operations grouped by workflow stage, but it does not provide explicit when-to-use vs alternatives or exclusions. It lacks statements like 'For animation keyframing, use blender_animation instead.' The rationale about preventing tool explosion gives context but no actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_sceneB
Comprehensive scene management for Blender.
Supports multiple operations through the operation parameter:
create_scene: Create a new scene
list_scenes: List all scenes in the file
clear_scene: Clear all objects from current scene
set_active_scene: Set the active scene
link_object_to_scene: Link object to a scene
create_collection: Create a new collection
add_to_collection: Add object to collection
set_active_collection: Set the active collection
set_view_layer: Set active view layer
setup_lighting: Set up scene lighting
setup_camera: Set up scene camera
set_render_settings: Configure render resolution
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Position as [x, y, z] for camera/light | |
| rotation | No | Rotation as [x, y, z] for camera | |
| operation | No | Scene operation type | list_scenes |
| layer_name | No | Name for view layer operations | |
| light_type | No | Type of light (SUN, POINT, SPOT, AREA) | SUN |
| scene_name | No | Name for scene operations | NewScene |
| object_name | No | Name of object for linking operations | |
| resolution_x | No | Render width in pixels | |
| resolution_y | No | Render height in pixels | |
| collection_name | No | Name for collection operations |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation states destructiveHint=false, but the description explicitly lists 'clear_scene: Clear all objects from current scene', which is a destructive operation. This is a direct contradiction between the description and the annotations. Additionally, the description does not disclose other behavioral traits such as parameter requirements per operation or side effects beyond the operation list.
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 efficiently structured with a one-sentence summary followed by a bulleted list of operations. Each line is concise and adds direct information. There is no unnecessary verbosity, and the front-loaded summary provides immediate orientation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and comprehensive parameter descriptions, the tool description does not explain which parameters apply to which operations. For example, setup_camera likely requires 'location' and 'rotation', but this mapping is absent. The description also omits information about default behaviors, prerequisites, or how the output varies by operation, making it incomplete for a tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage for all 10 parameters, with clear descriptions like 'Position as [x, y, z] for camera/light'. The tool description adds no additional parameter semantics beyond listing the operations, which map to the 'operation' enum already present in the schema. Baseline of 3 is appropriate since the schema does the heavy lifting.
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 identifies the tool as a comprehensive scene manager for Blender and enumerates 12 specific operations with brief explanations, such as 'clear_scene: Clear all objects from current scene'. This makes the tool's purpose unmistakable and distinguishes it from sibling tools that focus on singular operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus the many sibling tools that appear to cover the same operations (e.g., create_scene, list_scenes, set_active_scene, create_collection). No exclusions or alternative recommendations are given, leaving the agent to infer when the dispatcher-style tool is preferred over individual tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_sculptA
Sculpt mode operations for organic mesh editing.
Operations:
enter: switch object to sculpt mode
exit: leave sculpt mode (default back to OBJECT)
set_brush: assign brush with strength and radius
dynotopo: enable/disable dynamic topology
symmetrize: mirror sculpt along an axis
mask_clear: clear sculpt mask
remesh_voxel: apply voxel remesh modifier
list_brushes: common sculpt brush names
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_sculpt", {"operation": "enter", "object_name": "Cube"})| Name | Required | Description | Default |
|---|---|---|---|
| radius | No | ||
| strength | No | ||
| operation | No | enter | |
| adaptivity | No | ||
| brush_name | No | Grab | |
| voxel_size | No | ||
| object_name | No | ||
| target_mode | No | OBJECT | |
| prefer_session | No | ||
| enable_dynotopo | No | ||
| detail_resolution | No | ||
| symmetrize_direction | No | NEGATIVE_X |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, providing little safety information, so the description carries the burden of disclosing behavior. It adds useful context like 'dynotopo: enable/disable dynamic topology' and 'exit: leave sculpt mode (default back to OBJECT)', which hint at state changes. However, it does not disclose potential side effects of operations like 'mask_clear' or 'remesh_voxel', nor does it mention prerequisites (e.g., an active mesh object) or error conditions beyond a generic return format.
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 well-organized with a short intro, a bulleted operation list, a return format section, and a code example. Every element serves a purpose: the bullets cover all operations, the return format sets expectations, and the example clarifies invocation. It is concise without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, multi-operation dispatcher), the description is not fully complete. It provides a comprehensive operation list and an example, and the output schema covers return values. However, it omits critical details such as required parameters per operation, parameter ranges, and the meaning of ambiguous fields like prefer_session and adaptivity. This leaves the agent with reasonable but incomplete guidance.
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?
With 0% schema_description_coverage and 12 parameters, the description must compensate. It partially does by mapping operations to parameters (e.g., 'set_brush: assign brush with strength and radius' corresponds to strength and radius; 'remesh_voxel' implies voxel_size). The example shows usage of operation and object_name. However, many parameters like adaptivity, prefer_session, target_mode, and detail_resolution are not explained, leaving ambiguity for the agent.
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 'Sculpt mode operations for organic mesh editing' and enumerates a specific list of operations (enter, exit, set_brush, dynotopo, symmetrize, mask_clear, remesh_voxel, list_brushes) with short verb+resource explanations. It distinguishes itself from sibling tools by focusing exclusively on sculpt mode, which is a unique domain in the toolset.
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 establishes clear usage context by stating the tool is for 'Sculpt mode operations' and providing operation-specific details such as 'enter: switch object to sculpt mode' and 'exit: leave sculpt mode (default back to OBJECT)'. It implicitly tells the agent when to use this tool (when sculpt-related actions are needed) versus alternatives, but it does not explicitly name alternative tools or state 'when not to use' conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_selectionARead-onlyIdempotent
Select objects and elements in Blender scenes.
Supports multiple operations through the operation parameter:
select_objects: Select specific objects by name
select_by_type: Select all objects of a specific type
select_by_material: Select objects using a specific material
select_all: Select all objects in scene
select_none: Deselect all objects
invert_selection: Invert current selection
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Selection mode (REPLACE, ADD, SUBTRACT) | REPLACE |
| operation | No | Selection operation type | select_objects |
| object_type | No | Type of objects to select (MESH, CURVE, LIGHT, etc.) | MESH |
| object_names | No | List of object names to select | |
| active_object | No | Object to set as active after selection | |
| material_name | No | Material name to select objects by |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds the list of supported operations, which is useful context, but it does not describe selection mode interactions or any other behavioral details beyond what the operation names imply.
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, uses a clear bulleted list, and every sentence serves a purpose. It efficiently communicates the tool's capabilities without redundancy or fluff.
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 low-complexity, the schema covers all parameters, and annotations cover safety. The description lists all supported operations, making it complete for understanding the tool's main behavior. Minor gap: no mention of selection mode (REPLACE/ADD/SUBTRACT) semantics, but that is a parameter detail covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The description adds a semantic grouping of operations to parameters, but it doesn't provide additional meaning beyond the schema descriptions. Baseline 3 is appropriate when schema fully covers parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Select objects and elements in Blender scenes.' It lists specific operations (select_objects, select_by_type, etc.) that make its scope and function unambiguous, distinguishing it from generic Blender 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 implies usage by listing the available operations, but it does not explicitly explain when to use this tool versus alternatives, nor does it provide exclusions or when-not-to-use guidance. The context is clear for simple selection tasks, but it lacks explicit guidance relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_sessionA
Manage a Blender GUI session from the MCP server.
Operations:
status: check whether a Blender GUI is running under MCP control
start: launch Blender GUI (optionally opening a .blend file)
stop: kill the managed Blender GUI process
run_script: execute a Python snippet in the running Blender session (requires the bridge addon to be enabled in Blender)
demo: run a named built-in demo in Blender via the bridge Available demos: living_room_with_car, driver_training, garden, house_interior
| Name | Required | Description | Default |
|---|---|---|---|
| script | No | for run_script — Python code to execute in Blender | |
| timeout | No | for run_script/demo — seconds to wait for bridge response | |
| demo_name | No | for demo — which demo to run | living_room_with_car |
| operation | No | status | start | stop | run_script | demo | status |
| blend_file | No | for start — path to a .blend file to open (optional) | |
| script_name | No | for run_script — label for the script | mcp_script |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals key behavioral details beyond the annotations (all false), such as 'stop: kill the managed Blender GUI process' and the bridge addon requirement for run_script. This provides helpful context about side effects and prerequisites. No contradictions with annotations were found.
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 well-organized bulleted list with clear sub-points. Each line serves a purpose: defining the tool's scope, listing operations, and noting prerequisites. There is no redundancy or filler, making it efficient and 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?
Given the tool's multi-operation complexity, the description covers all operations, their parameters, and the bridge addon prerequisite. An output schema exists, so return value details are not needed. Minor gaps such as error handling or behavior when Blender is not running are not addressed, but overall completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides operation-specific descriptions for every parameter (100% coverage). The description adds value by listing the available demo names for demo_name and grouping parameters by operation, which helps disambiguate. However, it does not drastically enrich parameter meaning beyond the schema's existing descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Manage a Blender GUI session from the MCP server', which is a specific verb+resource statement. It then lists five distinct operations (status, start, stop, run_script, demo), making the tool's scope unambiguous. Although it doesn't explicitly differentiate from siblings, the operation list clearly distinguishes it from single-purpose tools like blender_render or script_execute.
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 when to use the tool by enumerating operations, but it does not explicitly state when to prefer this tool over alternatives such as script_execute or blender_status. It does provide a useful prerequisite for run_script (bridge addon enabled), but lacks exclusionary guidance or reference to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_shadersB
Shader node graph operations for materials.
Operations:
create_material: create a node-based material
create_node: add a shader node to an existing material
connect_nodes: wire two shader nodes together
list_node_types: return common ShaderNode type names
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_shaders", {"operation": "create_material", "material_name": "MyMat"})| Name | Required | Description | Default |
|---|---|---|---|
| to_node | No | ||
| from_node | No | ||
| node_name | No | ||
| node_type | No | ShaderNodeBsdfPrincipled | |
| operation | No | create_material | |
| to_socket | No | ||
| location_x | No | ||
| location_y | No | ||
| clear_nodes | No | ||
| from_socket | No | ||
| shader_type | No | ShaderNodeBsdfPrincipled | |
| material_name | No | ||
| node_properties | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint all false, so the description adds context with the return format ('Standard dict with keys: success, message, data') and example usage. However, it does not disclose potential side effects (e.g., whether connect_nodes replaces existing links, or if clear_nodes has impact). The added value is moderate.
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 moderately concise, with a summary line and a bullet list of operations. However, the structure is a bit informal and the return format is embedded in markdown rather than clearly separated. It's not overly verbose but lacks professional organization.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 parameters, multiple operations, no parameter descriptions in schema), the description is incomplete. It does not explain which parameters are relevant for each operation, how operations chain together, or any requirements. An agent would struggle to correctly invoke operations beyond the simple example.
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 partially does by listing operations and showing an example with material_name, but it does not explain the roles of most parameters (e.g., from_socket, to_socket, node_properties, clear_nodes). With 13 parameters and multiple operations, the description is insufficient for mapping parameters to operations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is for 'Shader node graph operations for materials' and lists four concrete operations (create_material, create_node, connect_nodes, list_node_types). This provides a specific verb+resource scope and differentiates from sibling tools like blender_materials by focusing on the shader node graph, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a list of operations which implies what the tool can be used for, but it does not explicitly state when to use this tool versus alternatives or provide exclusions. The examples show a minimal invocation, but no guidance on choosing between operations or handling prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_shapekeysB
Comprehensive shape key management for facial animation and VRM avatars.
Handles viseme creation for lip sync, blink animations, facial expressions, and VRM compliance checking for VR platforms.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | Animation frame to set weights at | |
| operation | No | Shape key operation type | create_viseme_shapekeys |
| target_mesh | No | Target mesh object (defaults to active) | |
| viseme_type | No | Type of viseme system ("vrm", "standard", "custom") | vrm |
| base_visemes | No | Base viseme weights for expression | |
| blink_weight | No | Blink component weight for expression | |
| auto_generate | No | Whether to auto-generate basic viseme shapes | |
| viseme_weights | No | Dictionary of viseme names to weights (0.0-1.0) | |
| base_expression | No | Base expression shape key to start from | |
| blink_intensity | No | How closed the eyes should be (0.0-1.0) | |
| expression_name | No | Name for the facial expression | expression |
| eyelid_vertices | No | Specific vertex indices for eyelid control | |
| include_statistics | No | Include deformation statistics in analysis | |
| additional_modifiers | No | Additional shape key modifiers |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=false, destructiveHint=false, and idempotentHint=false, but the description adds no behavioral details such as side effects on mesh shape keys, reversibility, or prerequisites like existing meshes. It only lists use cases without disclosing mutation behavior or error conditions beyond what annotations imply.
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 general purpose and then listing specific capabilities. It is concise and readable, though the word 'Comprehensive' is somewhat generic and the description could be tightened further.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity—14 parameters, an operation enum, and a rich schema—the description is too high-level. It does not explain how operations map to parameters, default behaviors, or what 'VRM compliance checking' entails, leaving the agent to infer critical selection and invocation details from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all 14 parameters documented including the operation enum and per-parameter descriptions. The tool description itself adds no parameter-specific meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly identifies the tool's purpose as 'shape key management for facial animation and VRM avatars' and enumerates specific capabilities: viseme creation for lip sync, blink animations, facial expressions, and VRM compliance checking. This distinguishes it from sibling tools like blender_animation, blender_rigging, and blender_vrm_metadata.
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 on when to use this tool versus alternatives such as blender_animation or blender_vrm_metadata. The description implies usage for facial/VRM shape key work, but does not state exclusions, prerequisites, or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_splattingB
Advanced Gaussian Splatting (3DGS) management for hybrid environments.
Supports importing real-world captures, cleaning them up, and preparing them for VR platforms like Resonite for immersive experiences.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | No | Radius/size of crop volume | |
| crop_type | No | Crop volume type ("sphere", "box", "cylinder") | sphere |
| file_path | No | Path to .ply or .spz splat file (for import_gs) | |
| operation | No | Splatting operation type | import_gs |
| sh_degree | No | Spherical harmonics degree (0-3) | |
| invert_crop | No | Whether to invert crop selection | |
| setup_proxy | No | Create performance proxy for large splats | |
| center_point | No | Center point for cropping | |
| target_format | No | Export format ("ply" or "spz") | ply |
| decimation_ratio | No | Mesh simplification ratio (0.1 = 10% of faces) | |
| density_threshold | No | Minimum density for collision mesh generation | |
| include_collision | No | Export collision mesh with splat | |
| optimize_for_mobile | No | Apply mobile VR optimizations | |
| smoothing_iterations | No | Laplacian smoothing passes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
All annotations are false, leaving the description to carry the transparency burden. The description mentions 'cleaning them up,' which hints at modification, but it fails to disclose that operations like crop_and_clean may alter or delete splat data, nor does it explain export side effects or any prerequisites.
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 well-structured, with the key term 'Gaussian Splatting' front-loaded. The only minor issue is the word 'Advanced,' which adds little substance, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (14 parameters, 7-operation enum), the description is too sparse. It only covers import/cleanup/prepare, omitting operations like worldlabs, generate_collision_mesh, create_proxy, and optimize_for_vr. The output schema exists, but the description still leaves significant context 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?
The schema provides full descriptions for all 14 parameters (100% coverage), so the description adds no additional parameter-level meaning. This matches the baseline of 3, as the description does not need to compensate for schema gaps.
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+resource ('Gaussian Splatting management') and lists concrete actions (importing, cleaning, preparing for VR), which clearly differentiates it from sibling tools like blender_import or blender_mesh. It also names the target platform (Resonite), making the purpose unmistakable.
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 by mentioning hybrid environments and VR platforms, implying when the tool is useful. However, it does not explicitly state when to use this tool over alternatives or give any exclusions, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_statusARead-onlyIdempotent
System status and monitoring (portmanteau).
Operations:
status: MCP server, Blender, system, and performance summary
system_info: Detailed OS, Python, env, and resources
health_check: Blender availability, resources, tool registration
performance_monitor: Sample CPU/memory/disk over duration_seconds (max 60)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| format | No | "json" for webapp dict (status only); "text" for report string | text |
| operation | No | status | system_info | health_check | performance_monitor | status |
| duration_seconds | No | For performance_monitor — sampling duration (1-60) | |
| include_performance | No | For status — include performance section | |
| include_system_info | No | For status — include system section | |
| include_blender_info | No | For status — include Blender section |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral specifics like performance_monitor sampling CPU/memory/disk over a max 60-second duration and health_check checking tool registration, which enriches the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a one-line summary followed by a bulleted list of operations. Each operation is described in a few words, with no redundant phrasing. It is front-loaded and earns every 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?
Given the tool's moderate complexity (7 optional parameters, output schema, and annotations), the description covers all operations and key constraints. It does not explain return formats in detail, but the presence of an output schema makes that unnecessary. A brief note on when to prefer this over sibling status tools would push it higher.
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 86%, meaning most parameters already have descriptive documentation. The description's mention of 'duration_seconds (max 60)' and the operation list adds minimal extra value beyond the schema's own parameter descriptions, such as 'For performance_monitor — sampling duration (1-60)'. It does not meaningfully enhance parameter understanding.
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 'System status and monitoring' and then enumerates four concrete operations (status, system_info, health_check, performance_monitor), each with a clear output scope. This clearly distinguishes it from sibling tools like server_info or blender_help, even though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for each operation, making it clear what the tool can be used for (e.g., health_check for Blender availability, performance_monitor for sampling). However, it does not explicitly state when NOT to use this tool or point to alternative tools for overlapping needs, such as server_info for server details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_texturesB
Create and manage textures in Blender.
Supports multiple operations through the operation parameter:
create_[type]: Create procedural textures (noise, voronoi, musgrave, wave, checker, brick, gradient)
assign_texture: Assign texture to material
bake_texture: Bake textures from objects
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the texture | Texture |
| width | No | Texture width in pixels | |
| height | No | Texture height in pixels | |
| operation | No | Texture operation type | create_noise |
| image_path | No | Path to image file for image textures | |
| object_name | No | Name of object for UV operations | |
| texture_type | No | Type of procedural texture | NOISE |
| material_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (readOnly=false, destructive=false, etc.), so the description must carry the burden of behavioral disclosure. It lists operations but does not explain side effects (e.g., whether baking overwrites existing textures, required scene setup, or whether assignment modifies materials irreversibly).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and well-structured: a one-sentence purpose followed by bullet points for operations. Every sentence earns its place, and the format makes it 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?
This is a multi-operation tool with 8 parameters, but the description does not map parameters to operations (e.g., assign_texture likely needs object_name and material_name; bake_texture needs object_name). It also doesn't mention image_path for image textures. The output schema exists but doesn't compensate for these operational dependencies.
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 high (88%), giving a baseline of 3. The description adds meaningful semantics for the 'operation' parameter by enumerating valid values and their effects, which is not present in the schema. It also clarifies 'texture_type' options. This adds real value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Create and manage textures in Blender' and lists specific operations (create, assign, bake), which clearly identifies the tool's purpose and distinguishes it from sibling tools like blender_materials. The 'manage' verb is a bit broad, but the operation list adds precision.
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 when to use the tool (for texture creation, assignment, and baking) but does not explicitly discuss alternatives or when not to use it. Sibling tools like blender_shaders and blender_materials exist, but no comparison is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_transformA
Transform objects in 3D space.
Supports multiple operations through the operation parameter:
set_location: Set object position
set_rotation: Set object rotation (degrees)
set_scale: Set object scale
translate: Move object by offset
rotate: Rotate object by angle
scale: Scale object by factor
apply_transform: Apply transforms to mesh
reset_transform: Reset transforms to identity
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| space | No | Coordinate space (WORLD, LOCAL, CURSOR, PARENT) | WORLD |
| scale_x | No | ||
| scale_y | No | ||
| scale_z | No | ||
| relative | No | Apply transformation relative to current values | |
| operation | No | Transform operation type | set_location |
| rotation_x | No | ||
| rotation_y | No | ||
| rotation_z | No | ||
| object_names | No | Name(s) of object(s) to transform |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations all false, the description carries the burden of behavioral disclosure. It adds value by listing operations like apply_transform and reset_transform, which hint at mesh mutation and identity resets. However, it does not elaborate on consequences such as whether transforms are destructive or reversible, or how space and relative affect behavior. Still, it goes beyond annotations by exposing the operation set.
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 well-structured: a one-sentence overview followed by a bulletized list of operations. Every bullet is short and informative. No fluff or redundancy, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema, the description is incomplete given the complexity (13 parameters, 8 operations, no enums). It doesn't mention that object_names is required, how rotation angles are specified (degrees vs radians for operations other than set_rotation), or how the space parameter influences coordinates. It also doesn't explain the behavior of relative or the effect of apply_transform. This would leave an agent uncertain about correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (31%), so the description must compensate. The operation list gives semantic meaning to the operation parameter, but it does not explain how x, y, z, rotation_x, rotation_y, rotation_z, scale_x, scale_y, scale_z map to different operations. Parameter names are somewhat self-explanatory, but the description doesn't clarify the interplay, leaving 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?
The description starts with 'Transform objects in 3D space' which clearly states the resource and action. It lists eight specific operations, distinguishing it from sibling tools like blender_selection or blender_scene. The verb 'transform' is specific and the scope 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 implies usage by enumerating operations that can be performed, but it does not explicitly state when to use this tool versus alternatives. There are no exclusions or prerequisites, and it doesn't guide the agent on choosing between set_location vs translate or when to use apply_transform. The context is clear enough but guidance is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_uvB
Manage UV mapping and texture coordinates.
Supports multiple operations through the operation parameter:
unwrap: Unwrap UV coordinates
smart_project: Smart UV projection
cube_project: Cube projection
cylinder_project: Cylindrical projection
sphere_project: Spherical projection
reset_uvs: Reset UV coordinates
get_uv_info: Get UV mapping information
| Name | Required | Description | Default |
|---|---|---|---|
| margin | No | Margin between UV islands | |
| operation | No | UV operation type | unwrap |
| object_name | No | Name of object to work with | |
| unwrap_method | No | Unwrapping method (ANGLE_BASED, CONFORMAL, etc.) | ANGLE_BASED |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations do not indicate read-only or destructive behavior, so the description carries some burden. It discloses the operation variants but does not specify which operations mutate or have side effects (e.g., reset_uvs is destructive implicitly). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise bulleted list with a clear purpose statement. Every item provides useful information with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 operations, 4 params), the description is adequate but lacks details on prerequisites, error conditions, or when specific operations are appropriate. The output schema reduces the need for return-value documentation, but more context on object requirements would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters, but the description enriches the 'operation' parameter by enumerating allowed values. This adds value beyond the vague schema description 'UV operation type'.
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 manages UV mapping and texture coordinates, listing seven specific operations. This distinguishes it from sibling tools like blender_mesh or blender_textures, though 'manage' is somewhat generic.
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 on when to use this tool versus alternatives. The operation list implies usage contexts (e.g., 'unwrap' for UV unwrapping), but no exclusions or comparisons to sibling tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_validationARead-onlyIdempotent
Comprehensive validation tools for avatars and 3D models.
Performs pre-flight checks to ensure models meet platform requirements for VRChat, Resonite, Unity, and other 3D platforms.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | Validation operation type | validate_avatar |
| bone_limit | No | Custom bone count limit override | |
| object_name | No | ||
| check_rigging | No | Whether to validate bone structure and rigging | |
| check_textures | No | Whether to validate texture requirements | |
| material_limit | No | Custom material count limit override | |
| check_materials | No | Whether to validate materials and draw calls | |
| polycount_limit | No | Custom polycount limit override | |
| target_platform | No | Target platform ("vrchat", "resonite", "unity", "generic") | vrchat |
| check_transforms | No | Whether to check for unapplied transforms |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no significant behavioral context beyond 'performs pre-flight checks', which aligns with the annotations but does not disclose additional traits like output format or side effects (though output schema exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the tool's primary function. It avoids redundancy and lists multiple target platforms in a compact manner, making every word earn 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?
Given the 10 parameters, an operation enum, and an output schema, the description provides sufficient high-level context. It does not enumerate each operation, but the schema's operation enum covers that detail. The description is complete enough for selecting and invoking the tool, though it could briefly mention the variety of checks available.
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 90%, so the baseline is 3. The tool description itself adds no parameter explanations, but the input schema already documents most parameters with descriptions. The description does not compensate for the single undocumented parameter (object_name), but overall the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Comprehensive validation tools for avatars and 3D models' with a specific verb (validation) and resource (avatars/3D models). It emphasizes 'pre-flight checks' for platform requirements, which differentiates it from sibling tools like blender_mesh or blender_export that focus on other activities.
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 'pre-flight checks to ensure models meet platform requirements' gives clear context for when to use (before platform upload). However, it does not explicitly mention when not to use or name alternative tools, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_vision_refineA
Agent vision refinement loop: capture, review bundle, apply fixes.
Operations:
capture: viewport PNG + base64 for vision models
review_bundle: screenshot + multi-angle stills + scene summary + refinement prompt
apply_script: run corrective bpy script after vision model feedback
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("blender_vision_refine", {"operation": "capture", "output_path": "C:/shot.png"})| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| angles | No | ||
| script | No | ||
| operation | No | capture | |
| output_dir | No | ||
| output_path | No | ||
| resolution_x | No | ||
| resolution_y | No | ||
| include_multi_angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations are all false and provide little safety context, so the description carries the burden. It discloses what each operation outputs but does not mention side effects like file writes, executing arbitrary scripts, or scene modifications.
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 well-structured with a bullet list, return format, and an example. It is concise but could be improved by mapping parameters to each operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and three distinct operations, the description does not clarify which parameters apply to which operation, nor does it detail the output schema beyond a generic dict. This is insufficient for reliable tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and only output_path and operation are illustrated. There is no explanation for goal, angles, script, resolution, include_multi_angle, or output_dir, leaving invocation 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?
The description clearly identifies the tool as an 'Agent vision refinement loop' with three specific operations: capture, review_bundle, and apply_scripts. This distinguishes it from sibling tools like blender_render or script_execute.
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 for a vision-model-driven refinement workflow. It does not explicitly name alternatives or exclusions, but the operational steps make the intended use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_vrm_metadataC
Comprehensive VRM metadata management for avatar configuration.
Handles all VRM-specific settings required for proper avatar functionality in VRChat, VRoid Studio, and other VRM-compatible platforms.
| Name | Required | Description | Default |
|---|---|---|---|
| offset_x | No | First person X offset from head bone | |
| offset_y | No | First person Y offset from head bone | |
| offset_z | No | First person Z offset from head bone (typically 0.1-0.2) | |
| operation | No | VRM metadata operation type | set_first_person_offset |
| output_path | No | Path for metadata export | //vrm_metadata.json |
| target_mesh | No | Specific mesh for facial operations | |
| blink_shape_key | No | Shape key name for blink animation | blink |
| include_look_at | No | Include look-at data in export | |
| target_armature | No | Specific armature to modify | |
| viseme_mappings | No | Custom viseme to shape key mappings | |
| look_at_settings | No | Eye tracking look-at configuration | |
| include_spring_bones | No | Include spring bone data in export | |
| spring_bone_settings | No | Spring bone physics configuration |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description makes broad claims ('Comprehensive', 'Handles all VRM-specific settings') without detailing any behavioral traits such as side effects, file writes, scene modifications, or required context. Annotations have all hints set to false, so there is no contradiction, but the description carries the full burden and fails to disclose specifics beyond the generic 'management' concept.
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 and brief, but the first sentence largely restates the tool name ('VRM metadata management') and the second adds platform context. It is not bloated, but the limited content could have been used more effectively to list the operation modes or key capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity with 13 parameters, 5 operation modes, and an output schema, the description is too sparse. It does not explain the different operations, how parameters interact, or what the output schema contains. An agent would need to inspect the schema carefully to understand the tool's capabilities, and the description does little to orient or guide that exploration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with detailed descriptions for all 13 parameters, including defaults and enums. The tool description adds no additional parameter information, so the baseline of 3 is appropriate. The description does not mislead or contradict the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Comprehensive VRM metadata management for avatar configuration' which indicates the general domain but does not specify the actual operations (set first-person offset, blink viseme mappings, spring bones, look-at, export) that are shown in the schema. It is not a tautology, but the verb 'management' is broad and the description relies heavily on the schema to convey what the tool actually 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?
The description provides no explicit guidance on when to use this tool versus other Blender tools. It mentions target platforms (VRChat, VRoid Studio) but gives no exclusions, alternatives, or context for choosing among the different operations. The agent is left to infer usage from the schema and enum values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_vseA
PORTMANTEAU PATTERN RATIONALE: Consolidates 20 VSE operations into a single interface. Prevents tool explosion while providing full video editing: strip management, timeline editing, effects, and rendering. Follows FastMCP 3.x best practices.
Blender's built-in Video Sequence Editor (VSE) exposed as MCP tools. Add video/audio/image strips, apply transitions, trim, cut, move, and render to video.
Strip Creation (7 operations):
add_movie: Add a video/MP4 file as a movie strip
add_sound: Add an audio file (WAV, MP3, etc.) as a sound strip
add_image_sequence: Add a folder of images as an image sequence strip
add_scene: Add a 3D scene as a strip (compositing)
add_color: Add a solid color matte strip
add_text: Add a text overlay strip
add_effect: Add a transition/filter effect between strips
Strip Editing (6 operations):
delete_strip: Remove a strip by name
cut_strip: Cut a strip at a specific frame
trim_strip: Set strip start/end frames (trim handles)
move_strip: Move a strip to a different channel or frame
mute_strip: Mute or unmute a strip
lock_strip: Lock or unlock a strip
Properties (3 operations):
set_speed: Change playback speed (creates speed effect strip)
set_blend: Set blend mode and opacity (ALPHA_OVER, CROSS, ADD, etc.)
set_transform: Set position, scale, rotation of a strip
Information (2 operations):
list_strips: List all strips in the timeline with properties
get_timeline_info: Get timeline frame range, FPS, strip count, channels
Rendering (1 operation):
render_video: Render the VSE timeline to a video file (H264/MPEG4)
Cleanup (1 operation):
clear_vse: Remove all strips from the timeline
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Frames per second. Default: 30. Used for: render_video. | |
| lock | No | True to lock, False to unlock. Default: True. Used for: lock_strip. | |
| mute | No | True to mute, False to unmute. Default: True. Used for: mute_strip. | |
| text | No | Text content. Required for: add_text. | |
| codec | No | Video codec. Options: H264, H265, THEORA, AV1. Default: H264. | H264 |
| frame | No | Frame number for placement/cutting. Default: 1. | |
| length | No | Strip duration in frames. Default: 120. Used for: add_color, add_text, add_effect. | |
| channel | No | VSE channel number (higher = on top). Default: 1. | |
| color_b | No | ||
| color_g | No | ||
| color_r | No | ||
| quality | No | Encoding quality. Options: BEST, GOOD, MEDIUM. Default: MEDIUM. Used for: render_video. | MEDIUM |
| scale_x | No | ||
| scale_y | No | ||
| cut_type | No | Cut type. SOFT (preserves handles) or HARD (snaps). Default: SOFT. | SOFT |
| filepath | No | Path to video or audio file. Required for: add_movie, add_sound. | |
| rotation | No | Strip rotation in degrees. Used for: set_transform. | |
| container | No | Video container format. Options: MPEG4, AVI, QUICKTIME, OGG, MKV. Default: MPEG4. | MPEG4 |
| directory | No | Directory path for image sequences. Required for: add_image_sequence. | |
| font_size | No | Font size in points. Default: 48. Used for: add_text. | |
| frame_end | No | End frame for render range. Default: 250. | |
| operation | No | The VSE operation to perform. | list_strips |
| blend_type | No | Blend mode. Options: ALPHA_OVER, CROSS, ADD, SUBTRACT, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, etc. Default: ALPHA_OVER. | ALPHA_OVER |
| fit_method | No | How to fit media. FIT (maintains aspect), FILL (crops), STRETCH. Default: FIT. | FIT |
| position_x | No | ||
| position_y | No | ||
| scene_name | No | Source 3D scene name. Required for: add_scene. | |
| strip_name | No | Target strip name for editing operations. Required for most edit ops. | |
| audio_codec | No | Audio codec. Options: AAC, MP3, PCM, VORBIS, FLAC. Default: AAC. Used for: render_video. | AAC |
| blend_alpha | No | Opacity 0.0-1.0. Default: 1.0. | |
| effect_type | No | Effect type. Options: CROSS, WIPE, GLOW, TRANSFORM, SPEED, ADJUSTMENT, GAUSSIAN_BLUR, TEXT, COLOR, MULTICAM. Default: CROSS. | CROSS |
| frame_start | No | Start frame for trim or render range. Default: 1. | |
| output_path | No | Output file path (.mp4 recommended). Required for: render_video. | |
| strip1_name | No | First strip name for effect creation. Required for: add_effect. | |
| strip2_name | No | Second strip name for effect creation. Required for: add_effect. | |
| resolution_x | No | ||
| resolution_y | No | ||
| speed_factor | No | Playback speed multiplier. 2.0 = double speed, 0.5 = half speed. Default: 1.0. | |
| audio_bitrate | No | Audio bitrate in kbps. Default: 192. Used for: render_video. | |
| include_audio | No | Include audio track from video. Default: True. Used for: add_movie. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden. It lists operations like clear_vse and delete_strip but does not disclose that these are destructive or that all operations mutate the current Blender session. There is no mention of side effects, permissions, or whether changes are reversible. The 'Follows FastMCP 3.x best practices' note adds no behavioral insight.
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 long (around 500 words) and includes a 'PORTMANTEAU PATTERN RATIONALE' that is partially redundant with the first paragraph. However, the categorized operation list is necessary for a 20-operation tool. The structure is clear, but some sentences could be trimmed without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (40 parameters, 20 operations), the description provides a comprehensive op list and categories. However, it does not explain how the 'operation' parameter dispatches sub-operations, what the default operation is (list_strips), or the execution context (e.g., requires running Blender). It also omits behavioral details about state persistence and error conditions. Adequate but with 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?
With 78% schema coverage, the baseline is 3. The description adds operation-to-parameter mappings (e.g., 'add_movie' requires 'filepath', 'add_effect' uses 'strip1_name' and 'strip2_name'), which is critical for a portmanteau tool with 40 parameters. This helps the agent select the right parameters per operation beyond what the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exposes Blender's Video Sequence Editor as MCP tools, with a specific verb ('add', 'apply', 'trim', 'cut', 'move', 'render') and resource (VSE). It distinguishes itself from sibling tools like blender_compositor and blender_render by focusing on VSE operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it consolidates 20 VSE operations to prevent tool explosion, which implies when to use this tool (for video editing tasks). It provides categorized operation lists that guide sub-operation selection. However, it does not explicitly mention when NOT to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blender_workflowA
Execute multiple Blender operations in a single call (macro/batch).
This tool enables complex workflows without multiple round-trips to the MCP server. Operations are executed sequentially, with optional variable passing between steps.
OPERATIONS:
list_templates: List available workflow templates
get_template: Get details of a specific template
execute: Execute a workflow (from steps or template)
STEP FORMAT: Each step is a dict with:
tool: The blender tool name (e.g., "blender_mesh")
operation: The operation within that tool
...other parameters for that operation
as: (optional) Store result with this name for later steps
if_result: (optional) Only run if previous result contains this string
VARIABLE REFERENCES: Use $varname to reference results from previous steps. Use ${varname.field} to reference specific fields from JSON results.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | List of operation steps to execute (for execute) | |
| params | No | Parameters to override in template steps | |
| template | No | Name of predefined template to use (for execute) | |
| operation | No | Workflow operation (execute, list_templates, get_template) | list_templates |
| stop_on_error | No | Stop execution on first error (default: True) | |
| template_name | No | Template name (for get_template) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries the burden. It discloses sequential execution, optional variable passing, and conditional step execution via 'if_result'. It does not mention potential side effects on Blender state, but as a workflow orchestrator, effects depend on the underlying operations.
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 well-structured with sections (OPERATIONS, STEP FORMAT, VARIABLE REFERENCES) and each sentence provides necessary information. While somewhat lengthy, no unnecessary fluff is present.
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 orchestration tool, the description covers operations, step syntax, and variable references, and the output schema likely handles return values. It lacks explicit error behavior details, but stop_on_error is in the schema. Given the tool's complexity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with basic descriptions (100% coverage), but the description adds substantial meaning by detailing the step format ('tool', 'operation', 'as', 'if_result') and variable reference syntax ($varname and ${varname.field}), which are not obvious from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Execute multiple Blender operations in a single call (macro/batch)', clearly stating the tool's purpose. It lists specific operations (list_templates, get_template, execute) and distinguishes from siblings by emphasizing multi-step workflow execution.
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 provides clear context: 'This tool enables complex workflows without multiple round-trips to the MCP server', implying use for multi-operation workflows. However, it does not explicitly name alternatives or state when not to use it, leaving some ambiguity versus tools like blender_batch or script_execute.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_sceneADestructive
Remove all objects from the current scene.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("clear_scene")| 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?
The annotation destructiveHint=true already covers the destructive nature. The description adds value by specifying the return format (keys: success, message, data) and providing a usage example, which goes beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured: a one-sentence purpose, return format, and example. Every line adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter destructive action with annotations and an output schema (implied by the return format description), the description fully covers purpose, return, and usage. No critical information 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?
This tool has zero parameters, so the description need not explain any. The schema is empty and coverage is 100%, meeting the baseline for no-parameter tools.
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 ('Remove') and a clear resource ('all objects from the current scene'). It unambiguously distinguishes this tool from siblings like create_scene or set_active_scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to clear the current scene) but does not explicitly state when to prefer this over alternatives or any exclusions. It's clear enough for a straightforward destructive action, but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_getARead-onlyIdempotent
Return current webapp config (LLM provider, URLs, selected model, etc.).
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("config_get")| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by disclosing the return format ('Standard dict with keys: success, message, data') and providing a Python example. It does not mention auth or failure modes, but for a zero-param read-only tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, front-loaded with the purpose, and includes a helpful return-format note and short example. Every sentence earns its place; no fluff 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?
For a zero-parameter, read-only tool with comprehensive annotations and an output schema, the description is complete. It states what the tool returns, gives sample keys, and provides an invocation example, leaving no significant gaps for an agent to infer.
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 an empty schema, so the baseline is 4. The description adds no parameter-specific semantics because there are none to describe. It correctly does not attempt to invent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Return current webapp config', enumerating example contents (LLM provider, URLs, selected model). This clearly distinguishes it from the sibling config_set (write operation) by implying it is the read counterpart.
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 retrieve configuration) but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions. For a simple getter, the purpose makes usage fairly evident, but explicit sibling differentiation (e.g., 'use config_set to modify') is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_setA
Update webapp config. Pass keys: server_host, server_port, theme, auto_sync, notifications, llm.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("config_set", {"theme": "dark"})| Name | Required | Description | Default |
|---|---|---|---|
| llm | No | ||
| theme | No | ||
| auto_sync | No | ||
| server_host | No | ||
| server_port | No | ||
| notifications | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive mutation. The description adds value by specifying the return format (standard dict with keys success, message, data) and providing an example. However, it does not disclose whether updates merge with existing config or overwrite it, which is a significant behavioral gap for a config setter.
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 well-structured: a one-sentence purpose, a return format section, and an example. It is easy to scan and contains no fluff, though the example could be considered optional given the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 optional parameters and no output schema shown in the prompt, the description includes return format and an example, which helps. However, it lacks information about update semantics (merge vs overwrite), default behavior, and side effects, leaving gaps for an AI agent to invoke it correctly without additional context.
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 has no descriptions for the 6 parameters (0% coverage), so the description must compensate. It lists the key names (server_host, server_port, theme, auto_sync, notifications, llm) but does not explain their semantics or allowed values beyond what the schema already shows. This is insufficient compensation for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates webapp config, uses a specific verb 'Update', and lists the distinct keys that can be set. This differentiates it from the sibling tool config_get, which is presumably for reading config.
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 that this tool is for updating webapp configuration, making the use case obvious. However, it does not explicitly mention alternatives or when not to use it, such as reading config with config_get, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
construct_objectA
PORTMANTEAU PATTERN RATIONALE: Consolidates natural language 3D construction into single agentic interface. Prevents tool explosion while enabling infinite 3D creativity through LLM-generated Blender scripts. Follows FastMCP 2.14.3 best practices.
Universal 3D object construction using natural language and LLM-generated Blender scripts.
This revolutionary tool enables creation of any 3D object through natural language descriptions by leveraging FastMCP 2.14.3 sampling to request SOTA LLM generation of Blender Python code.
Agentic Workflow:
Analysis: Parse natural language description and scene context
Sampling Request: Ask MCP client (SOTA LLM) to generate Blender Python script
Code Generation: LLM creates production-ready Blender automation code
Validation: Security and syntax validation of generated code
Execution: Safe execution in Blender with error handling
Iteration: Request refinements if needed (up to max_iterations)
Supported Complexity Levels:
simple: Basic primitives, basic transforms, simple materials
standard: Complex meshes, modifiers, materials, basic animation
complex: Advanced geometry, rigging, physics, complex materials/textures
Style Presets:
realistic: Physically accurate materials, lighting, proportions
stylized: Artistic interpretation, exaggerated features, cartoon-like
lowpoly: Minimal geometry, optimized for performance
scifi: Futuristic design, metallic materials, glowing effects
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | Yes | FastMCP context for sampling and conversational responses | |
| name | No | Name for the created object in Blender scene. Default: "ConstructedObject" | ConstructedObject |
| complexity | No | Complexity level for script generation. One of: "simple", "standard", "complex". Default: "standard". Affects detail level and operation complexity. | standard |
| description | No | Natural language description of object to create Examples: "a robot like Robbie from Forbidden Planet", "a medieval castle", "a sleek sports car" | a simple cube |
| style_preset | No | Optional style guidance. One of: "realistic", "stylized", "lowpoly", "scifi". Default: None (let LLM decide based on description). | |
| max_iterations | No | Maximum refinement iterations if initial script fails. Default: 3. Higher values allow more complex objects but increase processing time. | |
| reference_objects | No | Existing Blender objects to use as reference for style/consistency. Default: None. LLM will analyze these objects for consistent styling. | |
| allow_modifications | No | Whether LLM can modify existing scene objects. Default: True. Set to False for conservative construction that only adds new objects. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the raw annotations by detailing the multi-step workflow: analysis, sampling request to an LLM, code generation, validation, execution, and iteration. It highlights 'Security and syntax validation' and 'Safe execution in Blender with error handling.' Since annotations already indicate the tool is not read-only and not idempotent, the description adds useful context about the LLM involvement and safety measures, though it does not explicitly warn that the tool may modify existing scene objects.
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 quite verbose and front-loaded with a 'PORTMANTEAU PATTERN RATIONALE' section that discusses design rationale and FastMCP best practices, which is not directly actionable for an agent selecting the tool. While the sections are well-organized and the content is relevant, several sentences could be trimmed to improve brevity without losing essential guidance.
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 tool with 8 parameters and an output schema, the description covers a lot: the agentic workflow, supported complexity levels, style presets, and iteration behavior. It lacks some operational prerequisites (e.g., Blender must be running) and explicit alternatives, but given the rich schema and annotations, the description is largely complete for an agent to understand scope and capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage, but the description adds meaningful semantic depth by explaining the complexity levels ('simple', 'standard', 'complex') with concrete examples and the style presets ('realistic', 'stylized', 'lowpoly', 'scifi'). This helps agents choose appropriate parameter values beyond the schema's minimal descriptions. The workflow section also clarifies how max_iterations fits into the process.
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 that this tool performs 'Universal 3D object construction using natural language and LLM-generated Blender scripts.' It uses a specific verb ('construction') and resource ('3D object'), and distinguishes itself by positioning as the consolidated natural-language interface, preventing tool explosion. This differentiates it from siblings like generate_blender_script or script_execute by emphasizing its agentic, LLM-driven approach.
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 on when to use the tool: for natural language 3D construction across varying complexity levels and with style presets. It explains the agentic workflow and supported complexity levels, which implies usage scenarios. However, it does not explicitly state when not to use it or mention alternative tools (e.g., 'for direct script execution use script_execute'), leaving exclusion guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conversational_blender_assistantARead-onlyIdempotent
Conversational Blender assistant with SEP-1577 multi-step sampling.
The LLM may probe capabilities to give accurate, operation-specific answers before responding. Falls back gracefully when sampling is not available.
| Name | Required | Description | Default |
|---|---|---|---|
| max_steps | No | Maximum reasoning loops (default: 3 — keeps it snappy) | |
| user_query | Yes | Natural language question about Blender operations | |
| context_level | No | "basic" | "comprehensive" | "detailed" | comprehensive |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior; the description adds valuable behavioral context such as probing capabilities before responding and graceful fallback when sampling is unavailable. No contradiction with annotations is present.
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, front-loaded with the tool's role, and contains no filler or redundant repetition of schema/annotations. The SEP-1577 reference is technical but concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations and an output schema present, the description sufficiently conveys the core behavior of answering Blender questions via multi-step sampling and fallback. It does not mention sibling alternatives for selection clarity, but the core usage context is adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all three parameters (100% coverage), including defaults and formatting hints for context_level. The description adds no extra parameter-specific meaning, but the baseline 3 is appropriate since the schema already carries the burden.
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 identifies the tool as a conversational Blender assistant for answering natural-language Blender questions, mentioning SEP-1577 multi-step sampling and capability probing. This distinguishes it from some siblings like blender_help, though the core verb 'answer' is implied rather than explicit.
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 use for conversational Blender questions requiring multi-step reasoning, but it does not explicitly state when to use this tool versus alternatives like ai_chat or blender_help, nor does it provide exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionB
Create a new collection.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("create_collection", {"collection_name": "MyCollection"})| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only that the tool is not read-only, not idempotent, and not destructive. The description adds the return format and an example but does not disclose side effects, error handling (e.g., duplicate collection names), or any prerequisites/permissions. This leaves significant behavioral ambiguity.
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 appropriately concise, leading with the primary purpose, followed by a clearly structured return format section and a practical example. Every section earns its place with no redundancy or unnecessary verbosity.
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 one-parameter tool, the description covers the basic operation and return format. However, it lacks context about what a collection is in the surrounding domain (Blender), what happens on failure, and how this fits into the broader workflow. The output schema helps but the description remains incomplete for fully autonomous selection.
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 for explaining the parameter. It only offers an example value ('MyCollection') without describing naming rules, length limits, or uniqueness requirements. This adds minimal semantic value 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 clearly states the action: 'Create a new collection.' This is a specific verb-resource pair that distinguishes the tool from related siblings like add_to_collection, which implies adding to an existing collection rather than creating a new 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 when a new collection is needed, but it does not explicitly state when to use this tool versus alternatives such as add_to_collection. No when-not-to-use or exclusion conditions are provided, so the guidance remains implicit and minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sceneA
Create a new Blender scene with the specified name.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("create_scene", {"scene_name": "MyScene"})| Name | Required | Description | Default |
|---|---|---|---|
| scene_name | No | NewScene |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (all false) indicate this is a mutation but not destructive. The description adds the return format but does not disclose other behavioral traits like what happens if the scene name already exists, whether the new scene becomes active, or any side effects. This is some added value over annotations 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 succinct and well-structured: a clear first sentence stating purpose, a return format note, and a practical example. Every sentence adds value, with no redundant or verbose 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?
While the tool is simple and has an output schema, the description leaves gaps about important edge cases and side effects, such as behavior when the scene name already exists or whether the created scene is set active. Given sibling tools like set_active_scene, this context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has scene_name with a default but no description (coverage 0%). The description clarifies that the name is used for the new scene and provides a concrete example ('MyScene'), effectively compensating for the schema's lack of parameter documentation.
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 that the tool creates a new Blender scene with a specified name, using a specific verb ('Create') and resource ('Blender scene'). This unambiguously distinguishes it from sibling tools like list_scenes, set_active_scene, and clear_scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: you use this when you need a new scene. However, it does not explicitly mention alternatives or when not to use this tool (e.g., when you need to switch active scene, use set_active_scene). There is no explicit when-to-use vs alternatives guidance beyond the apparent purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_for_mcp_handoffA
Export a repository asset with platform-specific optimisations for cross-MCP handoff.
Supported targets: vrchat (FBX), resonite (GLB). asset_id must exist in ~/.blender-mcp/repository/. Writes actual export files to a temp directory and returns their paths.
Return Format
Standard dict with keys: success, asset_id, target_mcp, primary_files, supporting_files
Examples
await call_tool("export_for_mcp_handoff", {"asset_id": "...", "target_mcp": "vrchat"})| Name | Required | Description | Default |
|---|---|---|---|
| ctx | Yes | ||
| asset_id | Yes | ||
| target_mcp | Yes | ||
| quality_level | No | high | |
| include_metadata | No | ||
| optimization_preset | No | automatic |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (all false), so the description bears the burden. It discloses that the tool 'Writes actual export files to a temp directory and returns their paths', which is a key side effect. It also implies non-destructive behavior by writing to temp, matching annotations. Lacks explicit error handling info but is sufficiently transparent.
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 well-organized and front-loaded: first sentence states purpose, then bullets cover targets, prerequisite, behavior, return format, and an example. Every line adds value and the structure aids quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (file-writing side effects, multiple parameters, no helpful annotations), the description covers the essential elements: purpose, supported targets, prerequisite, temp-file behavior, return format, and a usage example. It falls short on optional parameter semantics and error cases, but is still reasonably complete for selection and initial invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains asset_id (must exist in repository) and target_mcp (lists allowed values 'vrchat' and 'resonite'). However, it leaves ctx, quality_level, include_metadata, and optimization_preset entirely undocumented, even though some have defaults. This partial compensation is useful but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource ('Export a repository asset with platform-specific optimisations for cross-MCP handoff') and lists supported targets (vrchat with FBX, resonite with GLB). This differentiates it from generic export tools like blender_export and provides a specific, actionable 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?
The description provides clear context: it is for cross-MCP handoff to specific targets and requires asset_id to exist in the repository. However, it does not explicitly mention alternative tools or when not to use it. The prerequisite is stated, which is valuable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_blender_scriptB
Generate a Blender Python script from a natural language prompt using a local LLM (Ollama).
Return Format
Standard dict with keys: success, script, error
Examples
await call_tool("generate_blender_script", {"prompt": "create a cube at origin", "model": "llama3.2"})| Name | Required | Description | Default |
|---|---|---|---|
| model | No | llama3.2 | |
| prompt | Yes | ||
| ollama_url | No | http://localhost:11434 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the burden of disclosure. It does mention the return format (success, script, error) and the generation nature (not execution), but fails to disclose prerequisites like Ollama running or potential failure modes. Moderate transparency, but not rich enough to fully anticipate behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with a clear purpose line, a return format section, and a practical example. Every section adds value, and the formatting aids quick understanding. 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?
For a simple generation tool, the description covers purpose, return format, and an example. However, it lacks error conditions, prerequisites (e.g., Ollama availability), and differentiation from similar siblings. Given the 3 parameters and output schema, additional context on when to use this tool and what could go wrong would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not systematically explain the parameters. The example shows 'prompt' and 'model' in use, but does not define ollama_url or clarify the meaning of 'model' beyond being a parameter. This is insufficient for a 3-parameter tool where the description must compensate.
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 generates a Blender Python script from a natural language prompt using Ollama, with a specific verb and resource. It adds specificity by mentioning 'Blender Python script' and 'local LLM (Ollama)', but does not explicitly distinguish it from similar siblings like blender_ai_generate.
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 on when to use this tool versus alternatives. The description implies use when a natural language prompt needs to be converted to a Blender script, but sibling tools that might overlap (e.g., blender_ai_generate) are not mentioned, offering no exclusion criteria or decision framework.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_cad_fileB
Import CAD files (STEP, IGES) into Blender with automatic conversion.
This function handles the complete pipeline:
Detect CAD file format
Convert to mesh format using appropriate tool
Import converted mesh into Blender
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to CAD file | |
| cad_format | No | CAD format (STEP, STP, IGES, IGS) | STEP |
| global_scale | No | Blender import scale | |
| mesh_quality | No | Mesh quality (low, medium, high) | medium |
| scale_factor | No | CAD unit conversion scale | |
| import_shading | No | Import material shading | |
| conversion_tool | No | Conversion tool to use (auto, mayo, freecad, online) | auto |
| use_custom_normals | No | Import custom normals |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, providing no meaningful safety profile. The description outlines the conversion pipeline but does not disclose potential side effects, prerequisites, error behavior, or whether external tools/services are required. It adds procedural detail but lacks consequential transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the main purpose, and uses a numbered list for the pipeline. Every sentence contributes useful information without unnecessary verbosity.
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 complex with a multi-step pipeline and 8 parameters, but the description covers only high-level steps. Prerequisites, mesh destination, and error cases are omitted. However, full schema parameter coverage and an output schema mitigate some 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?
All 8 parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds no extra parameter-level meaning, only referencing an 'appropriate tool' which maps to conversion_tool without clarifying distinctions like global_scale vs scale_factor.
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 ('Import CAD files') and specific formats (STEP, IGES), with a numbered pipeline that further defines the scope. This distinguishes it from generic import tools like 'blender_import'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The pipeline is described, but there are no exclusions, conditions, or references to other import tools, leaving usage context only implied by the CAD-specific name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligent_3d_processingC
Intelligent batch 3D scene processing via FastMCP 3.1 SEP-1577 multi-step sampling.
The LLM autonomously queries material, modeling, and IO capabilities to build a processing pipeline tailored to each scene's needs.
| Name | Required | Description | Default |
|---|---|---|---|
| scenes | Yes | List of scene dicts (keys: name, objects, format, etc.) | |
| max_steps | No | Maximum reasoning loops (default: 5) | |
| processing_goal | Yes | What to achieve (e.g. "optimize all scenes for real-time rendering") | |
| processing_strategy | No | "adaptive" | "parallel" | "sequential" | adaptive |
| available_operations | Yes | Operations the orchestrator may use |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false and provide no positive safety profile. The description mentions multi-step sampling and autonomous capability queries, but does not disclose side effects, whether scenes are modified, or how other tools may be invoked. The jargon 'SEP-1577' adds no behavioral clarity.
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 and reasonably compact. However, the first sentence includes unexplained jargon ('FastMCP 3.1 SEP-1577') that could be removed without losing 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?
This is a complex autonomous tool, yet the description is sparse, lacking usage scenarios, expected side effects, and explanation of the multi-step orchestration. The output schema exists, but the description does not sufficiently cover the tool's operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains scenes, processing_goal, and available_operations. The description adds no parameter-specific meaning, so it merely meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as 'Intelligent batch 3D scene processing' and mentions autonomous pipeline building, which conveys the primary function. However, it does not explicitly differentiate from siblings like agentic_blender_workflow or blender_batch, so it falls short of fully distinguishing the 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 provided about when to use this tool versus alternatives. The description explains what the tool does but gives no context on suitable use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_local_modelsARead-onlyIdempotent
Discover local LLM models from Ollama and LM Studio.
Return Format
Standard dict with keys: success, summary, result
Examples
await call_tool("list_local_models")| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the return format (standard dict with success/summary/result) and uses the verb 'Discover,' reinforcing a safe, read-only operation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loads the purpose, and provides a structured 'Return Format' section and an example. Every part serves a purpose, and the structure makes it 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?
For a zero-parameter, read-only list tool, the description fully covers the action, sources, and return format. It is complete enough for an agent to select and invoke the tool correctly. The presence of an output schema further avoids the need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is fully self-explanatory. The description does not need to add parameter details, and the baseline of 4 applies. It does not attempt to explain non-existent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Discover') and resource ('local LLM models from Ollama and LM Studio'). It is specific and distinguishes the tool from generic model tools, but it does not explicitly differentiate from the sibling tool 'llm_models'.
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 versus alternatives. It does not mention exclusions, prerequisites, or contextual scenarios. The description simply states what it does, leaving usage inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scenesARead-onlyIdempotent
List all scenes in the current Blender file.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("list_scenes")| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe read behavior is disclosed. The description adds the 'current Blender file' scope and a generic return format ('success, message, data') but does not provide deeper context about the contents of 'data' or pagination/limits. This is marginal added value beyond the annotations and likely the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise: a single purpose statement followed by structured 'Return Format' and 'Examples' sections. Every sentence serves a purpose, and key information (purpose, return shape, usage example) is front-loaded without fluff.
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 zero-parameter read-only listing tool, the description is fully adequate. It states the scope (current Blender file), provides the return format, includes an example invocation, and benefits from an available output schema. No further details are needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (empty). Per the rubric, a baseline of 4 is appropriate since there are no parameter semantics to document. The description adds no parameter-level information, but that is not 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 starts with a specific verb and resource: 'List all scenes in the current Blender file.' This clearly distinguishes it from sibling tools such as create_scene, set_active_scene, and clear_scene, and there is no ambiguity about 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?
The description implies its usage through the purpose statement but does not explicitly state when to use it versus alternatives like scene_get_hierarchy or set_active_scene. There are no exclusions or alternative references, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_modelsB
Portmanteau: list, pull, or remove Ollama models (CRUD for local LLM models).
Operations:
list: return installed Ollama model names (and LM Studio if reachable).
pull: pull model from Ollama registry (requires model_name). Slow for large models.
remove: delete an Ollama model from disk (requires model_name).
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | list, pull, or remove | list |
| model_name | No | required for pull and remove (e.g. llama3.2, codellama) | |
| ollama_url | No | Ollama API base URL | http://localhost:11434 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that remove deletes a model from disk and pull is slow, which is valuable behavioral context. However, it directly contradicts the annotations' destructiveHint=false, since removal is inherently destructive. This inconsistency is a severe transparency failure.
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 well-structured with a one-line summary followed by a bulleted list of operations. Each sentence provides necessary information with no fluff, making it appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all three operations, parameter requirements, performance implications, and the scope (Ollama and LM Studio). Given the tool's moderate complexity and the presence of an output schema, it is nearly complete, though edge cases like unreachable API URLs are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters (operation, model_name, ollama_url) are already described in the schema. The description adds little beyond a performance note for pull and restates the model_name requirement, which the schema already covers. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool as a 'Portmanteau' for list, pull, or remove Ollama models, with specific verbs (list, pull, remove) and resource (Ollama models). It enumerates operations and details each one, distinguishing it from sibling list_local_models by including pull and remove 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 offers operation-specific guidance (e.g., model_name required for pull/remove, pull is slow for large models) which implies when each operation should be used. However, it does not explicitly discuss alternatives, such as when to prefer sibling list_local_models for simple listing, so usage exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_asset_libraryA
PORTMANTEAU: Poly Haven + Sketchfab asset discovery and import (fleet subprocess Blender).
Operations:
info: Capabilities and env vars (SKETCHFAB_API_TOKEN).
polyhaven_categories: List category counts for hdris | textures | models.
polyhaven_search: Search catalog (uses api.polyhaven.com/assets).
polyhaven_import: Download + import — HDRIs set as world env; textures/models via files API bundles.
sketchfab_search: Sketchfab v3 search (requires token).
sketchfab_import: Download + import glTF from Sketchfab (requires token + downloadable model).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Results page for polyhaven_search. | |
| query | No | Sketchfab search query. | |
| asset_id | No | Poly Haven asset slug (e.g. venice_sunset) or Sketchfab UID for import. | |
| operation | No | Which operation to run. | info |
| asset_type | No | For Poly Haven: hdris, textures, models, or all (search). | hdris |
| categories | No | Optional comma-separated Poly Haven categories filter. | |
| resolution | No | 1k | 2k | 4k | 8k | 16k where applicable. | 4k |
| file_format | No | For HDRIs: hdr | exr. For models: gltf | fbx | blend preference chain start. | |
| model_prefer | No | Preferred model package: gltf, fbx, or blend. | gltf |
| search_limit | No | Max Sketchfab results (1-100). | |
| sketchfab_uid | No | Model UID for sketchfab_import. | |
| sketchfab_token | No | Optional; defaults to SKETCHFAB_API_TOKEN env. | |
| downloadable_only | No | Sketchfab search filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses significant behavior beyond the all-false annotations: it launches subprocess Blender ('fleet subprocess'), downloads and imports assets (HDRIs set as world env, textures/models via files API bundles), and requires tokens for Sketchfab. It doesn't mention scene side effects, but the import behavior is explicitly stated.
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 compact: a one-sentence preamble plus a bulleted list of six operations. Each line delivers a distinct capability or prerequisite (tokens, env vars, import behavior), with zero filler and the core purpose front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 13-parameter, six-operation tool, the description covers the main purpose, operations, prerequisites (tokens, env vars), and import behaviors. An output schema exists, so return value details are not needed, but it could still expand on error handling or local repository integration.
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?
With 100% schema description coverage, the baseline is 3. The description adds operational context (e.g., asset_id used for both Poly Haven and Sketchfab, downloadable_only filter), but it largely restates schema descriptions rather than providing new syntax or examples.
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 opening line explicitly defines the tool as a composition of Poly Haven and Sketchfab asset discovery/import, then enumerates five concrete operations. This clearly distinguishes it from sibling tools like list_local_models or blender_import.
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 operation list implies strong usage context (search vs import, Poly Haven vs Sketchfab, token requirements), but it never explicitly states when not to use this tool or names alternatives like list_local_models. Clear context, no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_blender_addonsA
Blender addon management (compatibility alias — prefer blender_addons).
Operations mirror blender_addons: search, install_known, install_url, list_installed, enable, disable, info.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("manage_blender_addons", {"operation": "search", "query": "gaussian splat"})| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| query | No | ||
| operation | No | search | |
| addon_name | No | ||
| enable_after | No | ||
| enabled_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all neutral (no readOnly/destructive flags), so the description carries the burden. It discloses the return format and that operations mirror blender_addons, but it does not describe side effects of operations like install/disable, nor does it explain permission requirements. The alias relationship adds some transparency, but details are deferred to the sibling 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 compact, front-loaded with the alias notice, and uses clear sections for return format and examples. Every sentence contributes, and the example demonstrates real usage without redundancy. It is a model of concise documentation.
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 compatibility alias with an output schema, the description provides the essential operation list and return format, which is useful. However, it lacks parameter-to-operation mapping and details on operation effects, though an agent can consult the primary blender_addons tool. Given the complexity (6 params, 0% schema descriptions), more explanation would be needed for full self-sufficiency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 6 parameters with 0% description coverage, requiring the description to compensate. It provides an operation list and one example (operation=search, query), but does not explain parameters like url, addon_name, enable_after, or enabled_only. The operation names imply some usage, but this is insufficient for a 6-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 clearly identifies the tool as a Blender addon management compatibility alias, explicitly listing the operations it mirrors (search, install_known, etc.). It also distinguishes itself from the sibling tool blender_addons by stating that blender_addons is preferred, making the purpose and relationship 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?
Explicitly states 'prefer blender_addons', giving clear guidance on when to use the alternative instead. It also notes that operations mirror blender_addons, so the agent knows this alias is functionally equivalent, which is strong usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_object_constructionA
AI-powered object construction and modification via sampling.
construct: natural language → Blender Python → execute in scene
construct_and_save: construct then immediately save to repository
modify: find stored script for object, sample modification, validate, execute
Requires a client that supports MCP sampling (Claude Desktop, Antigravity, etc.)
Return Format
Standard dict with keys: success, message, object_name, scene_objects_created
Examples
await call_tool("manage_object_construction", {"operation": "construct", "description": "A red cube", "name": "MyCube"})| Name | Required | Description | Default |
|---|---|---|---|
| ctx | Yes | ||
| name | No | ConstructedObject | |
| operation | No | construct | |
| complexity | No | standard | |
| description | No | ||
| object_name | No | ||
| style_preset | No | ||
| max_iterations | No | ||
| preserve_original | No | ||
| reference_objects | No | ||
| allow_modifications | No | ||
| modification_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotation hints false, the description carries the transparency burden. It discloses that scripts are executed in the scene, that modifications are validated, and that construct_and_save persists to a repository. However, it does not elaborate on side effects, failure handling, or whether operations are reversible, leaving notable gaps.
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 well-structured with bullet points, a return format section, and a worked example. It is reasonably concise and front-loaded, though the code block and extra headings add length without significantly increasing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema and a return format note, the tool is complex (12 params, 0% schema coverage, no annotations). The description gives a high-level overview but omits param semantics, usage prerequisites beyond sampling, and edge cases. It is insufficient for fully autonomous selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the operation values and provides an example mapping operation, description, and name, but leaves most of the 12 parameters (complexity, style_preset, max_iterations, reference_objects, allow_modifications, etc.) undefined. The required ctx parameter is also opaque.
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 ('AI-powered object construction and modification via sampling') and enumerates three concrete operations (construct, construct_and_save, modify) with pipelines. It clearly distinguishes this tool from more specialized Blender tools by emphasizing the sampling-based natural-language workflow.
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 states a prerequisite (client supporting MCP sampling) and provides an example call. It explains the three operation modes but does not explicitly name alternatives or specify when not to use this tool. It is clear enough for an agent to infer appropriate contexts, 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.
manage_object_repoA
Object repository management: save, load, search, list_objects.
save: export Blender object to ~/.blender-mcp/repository/ with metadata
load: append saved object into current scene with optional transforms
search: filter index by query, category, tags, quality
list_objects: return full index
Repository location: ~/.blender-mcp/repository/
Return Format
Standard dict with keys: success, message, objects
Examples
await call_tool("manage_object_repo", {"operation": "list_objects"})| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | No | ||
| scale | No | ||
| author | No | ||
| public | No | ||
| version | No | ||
| category | No | general | |
| position | No | ||
| object_id | No | ||
| operation | No | list_objects | |
| complexity | No | ||
| description | No | ||
| min_quality | No | ||
| object_name | No | ||
| target_name | No | ||
| quality_rating | No | ||
| object_name_display | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries full responsibility for disclosing side effects. It states that save exports to disk and load appends to the current scene, and it provides the return format. It does not mention overwrite behavior or selection requirements, but the main behavioral traits are 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?
The description is well-structured: it opens with the purpose, uses a bullet list for operations, includes the repository location, return format, and a concrete example. Every sentence contributes value with 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 tool with 18 optional parameters and four distinct operations, this description is under-specified. It lacks per-operation parameter explanations, examples for save/load/search, and details about input requirements. The return format in the description mitigates only a small part of the completeness 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?
The schema has 18 parameters with 0% description coverage, so the description must compensate. It only mentions 'operation', 'query', 'category', 'tags', 'quality', and 'optional transforms' indirectly. Most parameters (e.g., author, public, version, complexity, target_name) remain unexplained, leaving a significant 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 verb ('manage') on a resource ('object repository') and then enumerates four concrete operations: save, load, search, list_objects. It also names the repository path, making it distinct from sibling asset or addon management 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 implies usage through the operation list and repository path, but it does not explicitly state when to prefer this tool over alternatives like manage_asset_library, nor does it mention prerequisites or exclusions. Usage context is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scene_get_hierarchyARead-onlyIdempotent
Get the full scene hierarchy as a JSON-formatted string.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("scene_get_hierarchy")| 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?
Annotations already declare this as read-only, idempotent, and non-destructive, covering the safety profile. The description adds that the return is a JSON-formatted string with a specific dict structure, but no additional behavioral context like performance, data size, or error cases. This is adequate but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose, a return format note, and a simple example. Every component is useful and nothing is wasted, making it an efficiently structured description.
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 zero-parameter, read-only tool with a clear output schema and strong annotations, the description is complete. It explains what it returns and provides an example, which is sufficient for an agent to invoke and understand the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema is fully covered (100%), so the description has no parameter semantics to add. Baseline 4 is appropriate for a no-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 clearly states the tool gets the full scene hierarchy as a JSON string, using a specific verb and resource. However, it does not explicitly distinguish this from sibling tools like list_scenes or blender_scene, which may overlap somewhat in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description gives an example but lacks contextual cues about when this is the right choice, such as when a full hierarchy is needed versus just listing scenes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
script_executeC
Execute Python script in Blender (headless).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python script source (Blender/bpy API). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (all false), so the description carries the burden. It adds only 'headless', which is minimal. It does not disclose that executing arbitrary code can have broad side effects, modify scene state, or be potentially destructive, nor does it warn about error handling or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words, front-loaded with the primary action and resource. Concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having one well-documented parameter and an output schema, the tool's complexity as arbitrary code execution warrants more context. The description lacks details about the execution environment, scope of access, side effects, or when to use specialized sibling tools. This is a powerful tool and the description is too sparse.
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 covers 100% of the sole parameter with the description 'Python script source (Blender/bpy API)'. The tool description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes Python scripts in Blender headless, with a specific verb and resource. It doesn't explicitly differentiate from sibling tools, but the purpose 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?
No guidance is provided on when to use this tool versus the many sibling tools. It doesn't mention that this is for arbitrary scripts not covered by specialized tools, nor does it give exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoARead-onlyIdempotent
Return Blender MCP server information, version, and status.
Return Format
JSON string with keys: name, version, status, blender_executable, blender_status, platform, python_version
Examples
await call_tool("server_info")| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the exact return format (JSON string with keys: name, version, status, etc.), which goes beyond the annotations and clarifies what the agent will receive.
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 highly concise: one opening sentence, a brief return-format section, and a short example. Every element earns its place without redundancy, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only info tool, the description is complete: it states the purpose, lists the return keys, and provides a usage example. The presence of an output schema also reduces the need to explain return values further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds meaning by showing an example call (`await call_tool("server_info")`) and documenting the return shape, which is sufficient for a parameterless 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 ('Return') and clear resource ('Blender MCP server information, version, and status'). It unambiguously distinguishes from sibling tools like blender_status by focusing on the MCP server itself rather than Blender state.
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 as a simple server info query and provides a code example, but it does not explicitly state when to use this tool vs alternatives (e.g., blender_status) or any exclusions. Since it is a zero-parameter diagnostic tool, guidance is minimal but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_sceneA
Set the active scene by name.
Return Format
Standard dict with keys: success, message, data
Examples
await call_tool("set_active_scene", {"scene_name": "Scene"})| Name | Required | Description | Default |
|---|---|---|---|
| scene_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (write operation) and destructiveHint=false (not destructive). The description adds the return format ('Standard dict with keys: success, message, data'), but does not disclose potential side effects, error conditions, or that it changes the global active scene state. This provides some value beyond annotations but leaves gaps.
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 with the main action. It uses clear markdown sections for return format and examples, which are easy to scan. The example is redundant with the schema? but adds clarity. Slight penalty for not including usage guidance, but overall well-structured for its size.
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 (one parameter) and has an output schema, so the description does not need to explain return values beyond what schema provides. However, it lacks critical context: it does not mention that the scene must already exist, that this is a write operation affecting Blender's active state, or how it interacts with other scene tools. This makes it minimally adequate but incomplete.
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 has a single required parameter 'scene_name' with no description. The description compensates by stating the action is 'by name' and provides a concrete example: {"scene_name": "Scene"}. This clarifies the expected format and semantics, though it does not detail constraints like case sensitivity or existence 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 clearly states the action: 'Set the active scene by name.' It uses a specific verb ('set') and a clear resource ('active scene'), and the tool name matches. This distinguishes it from sibling tools like create_scene, list_scenes, and clear_scene, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., the scene must exist), related tools, or any exclusions. The only context is the action itself and an example, which implies usage but does not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_blender_status_appARead-onlyIdempotent
Show Blender MCP server status as a rich dashboard card.
Return Format
Prefab card with KPIs and system status
Examples
await call_tool("show_blender_status_app")| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds value by disclosing the return format ('Prefab card with KPIs and system status'), which is not captured in annotations or an output schema. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the purpose in the first sentence, followed by a Return Format section and an Example. Every section is useful and there is no redundant or filler text.
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 zero-parameter, no-output-schema tool, the description provides sufficient context: what it shows, the return format, and an invocation example. It could elaborate on what specific KPIs or status metrics are included, but the information is adequate for an agent to select and call the tool 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 zero parameters, and the schema is an empty object, so there are no parameter semantics to document. The description does not need to compensate for any schema gaps, giving a baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Show Blender MCP server status as a rich dashboard card.' The verb 'Show' plus the resource 'Blender MCP server status' and output format 'rich dashboard card' make it specific and distinguishable from sibling tools like show_tools_app or show_logs_app.
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 explicit guidance on when to use this tool versus alternatives such as blender_status or server_info. It relies purely on the name and purpose, without saying 'use this when...' or 'instead of...'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_logs_appBRead-onlyIdempotent
Show recent log entries as a scrollable Prefab card.
Return Format
Prefab card with timestamped log entries
Examples
await call_tool("show_logs_app", {"limit": 10})| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| level_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the safety profile is clear. The description adds the return format (timestamped log entries in a Prefab card) but does not disclose behaviors like filter handling or potential volume limits. This is acceptable but not rich.
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 well-structured, opening with a clear purpose, then a return format section, and a practical example. It uses headings and a code block effectively, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two optional parameters and no output schema, the description covers the basic purpose and return format, but omits the meaning of 'level_filter' and any pagination/limitation behaviors. It is largely sufficient for basic use but incomplete for advanced cases. Sibling differentiation is also 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 only mentions 'limit' in the example without explaining its semantics, and 'level_filter' is entirely absent. The defaults in the schema provide some info, but the description adds little value beyond what the schema already shows.
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 'Show recent log entries' with a specific output format (scrollable Prefab card), which clearly identifies the tool's function. It does not explicitly differentiate from sibling tools like 'blender_logs', but the tool name and phrasing are sufficiently specific.
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 versus alternatives. No mention of use cases, exclusions, or relationships to sibling tools. The example shows how to call it but does not contextualize when it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_tools_appARead-onlyIdempotent
List all tools organized by category as a Prefab card.
Return Format
Prefab card with Headings per category and Rows per tool
Examples
await call_tool("show_tools_app")| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds the return format (Prefab card with Headings/Rows), which is valuable because there is no output schema. This provides behavior expectations beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line purpose statement followed by Return Format and Example sections. Every sentence earns its place, and the example clarifies invocation.
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, no-parameter tool with comprehensive annotations, the description covers purpose, output structure, and a usage example. There is no apparent gap that would prevent correct invocation or interpretation of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so there are no parameter semantics to clarify. The baseline of 4 is appropriate because the description cannot add value where no parameters exist.
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 'List all tools organized by category as a Prefab card,' combining a specific verb and resource. This distinguishes it from siblings like show_logs_app, which focus on logs rather than tool listing.
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 discovering available tools but does not explicitly state when to use it versus alternatives or provide exclusion criteria. The example call is useful for invocation but not situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.11.1- Added
ai_chat - Changed
generate_blender_script4 fields changed- added
Output schema / additionalPropertiesAdded value: +true - removed
Output schema / propertiesRemoved value: -{ - "result": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "result" -] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
llm_models4 fields changed- added
Output schema / additionalPropertiesAdded value: +true - removed
Output schema / propertiesRemoved value: -{ - "result": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "result" -] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Added
show_blender_status_app - Added
show_logs_app - Added
show_tools_app
15 tool updates
v0.5.0- Changed
blender_addons3 fields changed- changed
Input schema / properties / addon_name / descriptionPrevious value: -"For uninstall_addon."New value: +"For uninstall_addon, enable, disable, install_known." - changed
Input schema / properties / enable_on_install / descriptionPrevious value: -"For install_addon."New value: +"Enable addon after install operations." - changed
Input schema / properties / operation / descriptionPrevious value: -"list_addons | install_addon | install_from_url | uninstall_addon | search"New value: +"list_addons | list_installed | install_addon | install_from_url | install_known | ..."
- Added
blender_ai_generate - Added
blender_api_docs - Added
blender_batch - Added
blender_compositor - Changed
blender_export10 fields changed- removed
Input schema / properties / apply_transforms / descriptionRemoved value: -"Apply object transforms before export" - added
Input schema / properties / file_formatAdded value: +{ + "default": "GLB", + "type": "string" +} - removed
Input schema / properties / global_scale / descriptionRemoved value: -"Global scale factor for export" - removed
Input schema / properties / include_animations / descriptionRemoved value: -"Include animations in export" - removed
Input schema / properties / include_materials / descriptionRemoved value: -"Include materials in export" - removed
Input schema / properties / object_names / descriptionRemoved value: -"List of specific object names to export (None = all objects)" - changed
Input schema / properties / operation / defaultPrevious value: -"export_fbx"New value: +"export_glb" - removed
Input schema / properties / operation / descriptionRemoved value: -"Export operation type" - removed
Input schema / properties / output_path / descriptionRemoved value: -"Path where to save the exported file" - removed
Input schema / properties / use_mesh_modifiers / descriptionRemoved value: -"Apply mesh modifiers before export"
- Added
blender_geonodes - Added
blender_jobs - Changed
blender_mesh9 fields changed- added
Input schema / properties / bevel_segmentsAdded value: +{ + "default": 2, + "type": "integer" +} - added
Input schema / properties / bevel_widthAdded value: +{ + "default": 0.1, + "type": "number" +} - added
Input schema / properties / distanceAdded value: +{ + "default": 0.5, + "type": "number" +} - added
Input schema / properties / inset_depthAdded value: +{ + "default": 0, + "type": "number" +} - added
Input schema / properties / join_namesAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / merge_distanceAdded value: +{ + "default": 0.001, + "type": "number" +} - added
Input schema / properties / prefer_sessionAdded value: +{ + "default": true, + "type": "boolean" +} - added
Input schema / properties / subdivide_cutsAdded value: +{ + "default": 2, + "type": "integer" +} - added
Input schema / properties / thicknessAdded value: +{ + "default": 0.1, + "type": "number" +}
- Changed
blender_render23 fields changed- added
Input schema / properties / anglesAdded value: +{ + "default": 4, + "type": "integer" +} - added
Input schema / properties / camera_radiusAdded value: +{ + "default": 5, + "type": "number" +} - added
Input schema / properties / deviceAdded value: +{ + "default": "GPU", + "type": "string" +} - added
Input schema / properties / elevation_degAdded value: +{ + "default": 25, + "type": "number" +} - removed
Input schema / properties / file_format / descriptionRemoved value: -"Output image format. One of: \"PNG\", \"JPEG\", \"TIFF\", \"EXR\", \"HDR\", \"WEBP\".\nDefault: \"PNG\". \"EXR\" recommended for post-processing, \"PNG\" for previews." - removed
Input schema / properties / frame_end / descriptionRemoved value: -"Ending frame number for animation rendering. Default: 250.\nMust be greater than frame_start. Corresponds to timeline frame numbers." - removed
Input schema / properties / frame_start / descriptionRemoved value: -"Starting frame number for animation rendering. Default: 1.\nMust be less than frame_end. Corresponds to timeline frame numbers." - removed
Input schema / properties / frames / descriptionRemoved value: -"Number of frames for turntable animation. Default: 60. Range: 8 to 360.\nHigher values create smoother rotation but increase render time." - added
Input schema / properties / layer_nameAdded value: +{ + "default": "ViewLayer", + "type": "string" +} - removed
Input schema / properties / operation / descriptionRemoved value: -"The render operation to perform. Must be one of: \"render_preview\",\n\"render_turntable\", \"render_animation\", \"render_current_frame\".\n- \"render_preview\": Single frame with custom settings (uses: output_path, resolution_*, file_format, render_engine, samples)\n- \"render_turntable\": 360° rotation animation (uses: output_dir, frames, resolution_*, file_format, render_engine, samples)\n- \"render_animation\": Full timeline render (uses: output_dir, frame_start, frame_end, resolution_*, file_format, render_engine, samples)\n- \"render_current_frame\": Current frame only (uses: output_path, resolution_*, file_format, render_engine, samples)" - removed
Input schema / properties / output_dir / descriptionRemoved value: -"Directory path for multi-frame output. Required for: \"render_turntable\", \"render_animation\".\nDirectory must exist and be writable. Files named with frame numbers." - removed
Input schema / properties / output_path / descriptionRemoved value: -"File path for single frame output. Required for: \"render_preview\", \"render_current_frame\".\nFormat: absolute path with extension (.png, .jpg, .exr). Directory must exist." - added
Input schema / properties / prefer_sessionAdded value: +{ + "default": true, + "type": "boolean" +} - removed
Input schema / properties / render_engine / descriptionRemoved value: -"Blender render engine. One of: \"CYCLES\", \"EEVEE\", \"WORKBENCH\".\nDefault: \"CYCLES\". \"EEVEE\" fastest, \"CYCLES\" most realistic, \"WORKBENCH\" technical." - removed
Input schema / properties / resolution_x / descriptionRemoved value: -"Horizontal resolution in pixels. Default: 1920. Range: 64 to 8192.\nCommon values: 1920 (FHD), 3840 (4K), 7680 (8K)." - removed
Input schema / properties / resolution_y / descriptionRemoved value: -"Vertical resolution in pixels. Default: 1080. Range: 64 to 8192.\nMaintains aspect ratio with resolution_x for standard formats." - removed
Input schema / properties / samples / descriptionRemoved value: -"Render quality samples for Cycles/EEVEE. Default: 128. Range: 1 to 4096.\nHigher values reduce noise but increase render time. Use 16-32 for previews." - added
Input schema / properties / shading_modeAdded value: +{ + "default": "SOLID", + "type": "string" +} - added
Input schema / properties / use_bloomAdded value: +{ + "default": true, + "type": "boolean" +} - added
Input schema / properties / use_denoisingAdded value: +{ + "default": true, + "type": "boolean" +} - added
Input schema / properties / use_dofAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / use_motion_blurAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / use_ssaoAdded value: +{ + "default": true, + "type": "boolean" +}
- Added
blender_sculpt - Added
blender_shaders - Changed
blender_validation2 fields changed- added
Input schema / properties / object_nameAdded value: +{ + "default": "", + "type": "string" +} - changed
Input schema / properties / operation / enumPrevious value: -[ - "validate_avatar", - "validate_model", - "check_polycount", - "check_materials", - "check_rigging", - "check_transforms", - "check_textures" -]New value: +[ + "validate_avatar", + "validate_model", + "validate_geometry", + "check_manifold", + "check_polycount", + "check_materials", + "check_rigging", + "check_transforms", + "check_textures" +]
- Added
blender_vision_refine - Changed
manage_blender_addons6 fields changed- removed
Input schema / properties / addon_name / descriptionRemoved value: -"Addon name for install_known / enable / disable" - removed
Input schema / properties / enable_after / descriptionRemoved value: -"Enable addon after installation (default True)" - removed
Input schema / properties / enabled_only / descriptionRemoved value: -"For list_installed, only show enabled addons" - removed
Input schema / properties / operation / descriptionRemoved value: -"Operation to perform (see above)" - removed
Input schema / properties / query / descriptionRemoved value: -"Search query for 'search' operation" - removed
Input schema / properties / url / descriptionRemoved value: -"URL for install_url operation"
58 tool updates
v0.1.0- First observed
add_to_collection - First observed
agentic_blender_workflow - First observed
blender_addons - First observed
blender_animation - First observed
blender_atlasing - First observed
blender_camera - First observed
blender_download - First observed
blender_export - First observed
blender_export_presets - First observed
blender_furniture - First observed
blender_grease_pencil - First observed
blender_help - First observed
blender_import - First observed
blender_lighting - First observed
blender_logs - First observed
blender_materials - First observed
blender_materials_baking - First observed
blender_mesh - First observed
blender_modifiers - First observed
blender_particles - First observed
blender_physics - First observed
blender_render - First observed
blender_rigging - First observed
blender_scene - First observed
blender_selection - First observed
blender_session - First observed
blender_shapekeys - First observed
blender_splatting - First observed
blender_status - First observed
blender_textures - First observed
blender_transform - First observed
blender_uv - First observed
blender_validation - First observed
blender_vrm_metadata - First observed
blender_vse - First observed
blender_workflow - First observed
clear_scene - First observed
config_get - First observed
config_set - First observed
construct_object - First observed
conversational_blender_assistant - First observed
create_collection - First observed
create_scene - First observed
export_for_mcp_handoff - First observed
generate_blender_script - First observed
import_cad_file - First observed
intelligent_3d_processing - First observed
list_local_models - First observed
list_scenes - First observed
llm_models - First observed
manage_asset_library - First observed
manage_blender_addons - First observed
manage_object_construction - First observed
manage_object_repo - First observed
scene_get_hierarchy - First observed
script_execute - First observed
server_info - First observed
set_active_scene
TDQS
Many tools overlap heavily: standalone create_collection, list_scenes, clear_scene duplicate operations inside blender_scene; blender_addons and manage_blender_addons are aliases; construct_object and manage_object_construction both build objects from natural language. Agents will struggle to pick the right tool when the same capability is exposed through multiple entry points.
Naming mixes conventions: verb_noun (create_collection, list_scenes), noun_specific (blender_mesh, blender_scene), generic (config_get, server_info), and verbose portmanteaus (agentic_blender_workflow, intelligent_3d_processing). The blender_ prefix is used inconsistently, and there is no clear predictable pattern across the tool set.
71 tools is an extreme count, far exceeding even the 50+ threshold for a mismatch. While many tools consolidate operations via portmanteau patterns, the sheer number of exposed tools overwhelms context windows and makes selection impractical for an agent.
The set covers an exceptionally broad range of Blender workflows: modeling, animation, rigging, materials, rendering, VSE, sculpt, physics, import/export, AI generation, asset repositories, and platform validation. Despite some missing micro-features (e.g., explicit file save), the surface is remarkably complete for its stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Cloud Blender for AI agents: scenes, assets, renders, MP4, STL, GLB — over hosted remote MCP.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseBqualityDmaintenanceConnects Blender to Claude AI through the Model Context Protocol (MCP), enabling prompt-assisted 3D modeling, scene creation, and manipulation.17MIT
- AlicenseBqualityDmaintenanceConnects Blender to Claude AI through the Model Context Protocol (MCP), enabling prompt-assisted 3D modeling, scene creation, and manipulation directly from Claude.17MIT
- AlicenseBqualityDmaintenanceBlenderMCP enables Claude AI to directly interact with and control Blender for prompt-assisted 3D modeling, scene creation, and manipulation. It supports object and material control, scene inspection, and execution of Python code through natural language commands.17MIT
- AlicenseAqualityDmaintenanceConnects Blender to Claude AI and Cursor via MCP, enabling 3D modeling and scene manipulation through natural language.139MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/blender-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server