blend-ai
One-line summary: An MCP server that lets AI assistants drive Blender end-to-end — building geometry, materials, lighting, animation, and renders — over a local connection.
Scene management — read scene info, list/create/delete scenes, set frame range, fps, units, gravity, and render engine; suggest helpful Blender extensions
Object creation & management — primitives (cube, sphere, cylinder, cone, torus, plane, circle, monkey, empty), polygon prisms, threaded shafts; delete, duplicate, rename, select, parent, join, visibility, origin, convert type, auto-smooth shading, single-user data
Transforms — set location/rotation (euler or quaternion)/scale, apply transforms, snap to grid
Modeling — add/remove/apply modifiers (SUBSURF, MIRROR, ARRAY, BEVEL, BOOLEAN, etc.), tune modifier properties, boolean operations, subdivide, extrude faces, bevel edges, loop cut, merge vertices, separate mesh, bridge edge loops, smooth/flat shading
Materials & shader nodes — create, assign, duplicate, delete materials; Principled BSDF color and property control; blend modes; image texture nodes; add/connect/disconnect/remove shader nodes; inspect node trees; set node inputs and node-level properties; full ColorRamp editing (add/move/remove stops, interpolation, color mode)
Procedural & raster materials — one-call generation of full procedural graphs (fire, wood, veins, and more) with scale/detail/distortion/colors, plus pattern listing and pixel-based texture generation (e.g. runes)
Lighting — create point/sun/spot/area lights, set energy/color/shadow/spot/area properties, world background color or HDRI, and prebuilt rigs (three-point, studio, rim, outdoor)
Cameras — create cameras, set lens/clip/sensor/DOF/ortho/shift properties, set active camera, aim at objects or coordinates, match the viewport view
Viewport capture — fast screenshots saved to a file or returned as base64
Animation — insert/delete/list keyframes, set current frame and frame range, choose interpolation, follow-path constraints, clear animation data
Rendering — set engine (EEVEE/Cycles/Workbench), resolution, samples, output format, render stills or animation sequences, and EEVEE light-path intensities (Blender 5.1+)
Curves & text — create Bezier/NURBS/path curves, add points, set resolution/bevel/extrude/fill properties, reverse direction, set handle types, convert to mesh, and make 3D text objects
Provides a comprehensive suite of over 100 tools to control Blender's 3D creation pipeline, enabling modeling, scene setup, material management, lighting, animation, and rendering through natural language.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@blend-aiCreate a glossy red sphere on a plane with three-point lighting"
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.
blend-ai
The most intuitive and efficient MCP Server for Blender. Control Blender entirely through AI assistants like Claude — create 3D models, set up scenes, animate, render, and more, all through natural language.
blend-ai goes beyond tool exposure: it guides the LLM to produce professional 3D results through expert prompts, proven workflows, visual feedback, and mesh quality analysis.
This was created via Claude Code using the Haiku model and 20 random reference images. It took 5 minutes:

Fifteen procedural materials, each built by a single create_procedural_material call. The selected ball's node graph below was generated entirely by that one call — coordinates, mapping, noise, height mask, colour ramp, and Principled BSDF, laid out and wired:

Key Features
186 tools across 27 modules covering every major Blender domain: modeling, mesh editing, materials, shader nodes, lighting, camera, animation, rendering, sculpting, UV mapping, physics, geometry nodes, rigging, curves, sweeps along a path, 3D-print checking, annotations, collections, file I/O, Bool Tool, viewport control, mesh quality analysis, and extension suggestions
12 expert prompts — topology best practices, real-world scale references, lighting principles, studio setup, character basemesh workflow, PBR material guide, auto-critique feedback loop, and more
Visual feedback loop — fast viewport screenshots via OpenGL render (~ms, not seconds) with auto-critique prompts that guide the LLM to check its own work
Mesh quality analysis — structured reports covering non-manifold edges, loose vertices, zero-area faces, duplicate vertices, and wire edges
Extension suggestions — proactively recommends Bool Tool, LoopTools, and Node Wrangler when a task would benefit from them (skips already-installed extensions)
Sandboxed code execution —
execute_blender_codeblocks dangerous imports (os,subprocess,socket, etc.) and dangerous builtins (exec,eval,open) while allowing safe Blender operationsRender-aware — automatically detects when Blender is rendering and queues commands. Recovers from stuck render guards via
load_posthandler and reset commandBlender 4.2+ compatible — ships as a Blender Extension; tested against Blender 5.1 with EEVEE identifier, Annotation API, sculpt stroke_method, SLIM UV unwrap, Raycast shader node, and EEVEE light path intensity controls
Custom port — configure the server port from the N-panel UI (default: 9876, range: 1024–65535)
Zero telemetry — no usage tracking, no analytics, no data collection. Everything runs locally on
127.0.0.1Zero-dependency addon — the Blender addon uses only Python stdlib +
bpy. Nothing to pip install inside BlenderThread-safe architecture — background TCP server with queue-based main-thread execution, TCP keepalive for stale connection detection
1190 tests — comprehensive coverage across tools, handlers, validators, prompts, and the cross-platform installer (ubuntu/macos/windows × py3.11/3.13 in CI)
Related MCP server: BlenderMCP
Quickstart
1. Install the MCP server
git clone https://github.com/HoldMyBeer-gg/blend-ai.git
cd blend-ai
uv pip install -e .2. Install the Blender addon
Download the latest addon zip from GitHub Releases
Open Blender 4.2 or later
Go to Edit > Preferences > Get Extensions, click the dropdown (▾) top-right, and choose Install from Disk...
Select the downloaded
.zipfileEnable "blend-ai" in the extensions list
Blender 4.0 / 4.1 users: Not supported. blend-ai ships as a Blender Extension, which requires Blender 4.2 (LTS) or later. Please upgrade Blender from blender.org/download.
If you're developing on blend-ai, symlink the addon folder into Blender's user extensions directory instead. Replace <ver> with your Blender version (e.g. 4.2, 5.1).
# macOS
ln -s "$(pwd)/addon" ~/Library/Application\ Support/Blender/<ver>/extensions/user_default/blend_ai
# Linux
ln -s "$(pwd)/addon" ~/.config/blender/<ver>/extensions/user_default/blend_ai
# Windows (run as admin)
mklink /D "%APPDATA%\Blender Foundation\Blender\<ver>\extensions\user_default\blend_ai" "%cd%\addon"Then enable the extension in Blender preferences under Get Extensions > User.
3. Start the server in Blender
In Blender's 3D Viewport, open the N-panel (press N), find the blend-ai tab. Set your preferred port (default: 9876), then click Start Server.
4. Connect your AI assistant
claude mcp add blend-ai -- uv run --directory /path/to/blend-ai blend-aiReplace /path/to/blend-ai with the actual path to your clone. Make sure Blender is running with the addon server started before using the tools.
Usage:
$ claude
> Create a red metallic sphere on a white plane with three-point lighting
> Add a subdivision surface modifier to the sphere and set it to level 3
> Analyze the mesh quality of the sphere and fix any issues
> Set up a turntable animation and render it to /tmp/turntable/Add blend-ai to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"blend-ai": {
"command": "uv",
"args": ["run", "--directory", "/path/to/blend-ai", "blend-ai"]
}
}
}Replace /path/to/blend-ai with the actual path to your clone.
Restart Claude Desktop. The Blender tools will appear in the tool list.
blend-ai is a standard MCP server using stdio transport. Any MCP-compatible client can connect by running the server directly:
uv run --directory /path/to/blend-ai blend-ai
# or: python -m blend_ai.serverThe exact config location and format vary by client (typically JSON or TOML under ~/.<client>/). The command is uv and the args are ["run", "--directory", "/path/to/blend-ai", "blend-ai"].
The server communicates over stdin/stdout using the MCP protocol. It connects to Blender's addon over TCP on 127.0.0.1:9876 (or your configured port).
Updating
Whichever way you installed, Blender must be fully restarted — not "Reload Scripts". The addon runs a background TCP server thread that survives a script reload, so reloading leaves a stale handler registered and the old socket still bound.
One command (zip installs)
python install_addon.py upgradeWith no argument it finds your Blender installations and offers them as a numbered list, so there is no path to get wrong. You can still pass one explicitly:
# macOS - the binary inside the bundle, not the .app itself
python install_addon.py upgrade /Applications/Blender.app/Contents/MacOS/Blender
# Linux
python install_addon.py upgrade /usr/local/bin/blender
# Windows
python install_addon.py upgrade "C:\Program Files\Blender Foundation\Blender 4.2\blender.exe"It refuses to run while Blender is open, checks the path before touching anything,
removes every blend-ai install across all Blender version directories, rebuilds the
zip from addon/, and installs it through Blender's own extension machinery. It also
handles the case that bites people most: an older copy left behind under a previous
Blender version.
Two companion commands:
python install_addon.py doctor # list every blend-ai install found, and where
python install_addon.py uninstall --yes # remove them all (omit --yes for a dry run)Start with doctor if the addon is behaving strangely — a duplicate install under an
old Blender version is the usual cause.
Developer symlink installs
If you symlinked addon/ into Blender's extensions directory, there is nothing to
install. git pull and restart Blender. Use doctor to confirm which kind of install
you have; it reports symlinks distinctly.
By hand, through the GUI
If the server is running, open the N-panel blend-ai tab and click Stop Server.
In Blender, open Edit > Preferences > Get Extensions, find blend-ai, and click Uninstall.
Quit and restart Blender (this clears cached
blend_aimodules).Install the new
.zipvia the ▾ > Install from Disk... menu and enable it.
Expert Guidance
blend-ai includes 12 MCP prompts that guide the LLM toward professional-quality results:
Prompt | What It Teaches |
| Bool Tool preference, mesh editing patterns, modifier workflow |
| Quad topology, edge flow, poles, n-gon cleanup, face density |
| Real-world dimensions for 8 common objects, unit system setup |
| Three-point lighting, HDRI, EEVEE vs Cycles, color temperature |
| 6-step studio lighting workflow with specific energy values |
| 7-step character base mesh from cube with mirror + subdivision |
| PBR materials, Principled BSDF recipes, texture color spaces |
| Visual feedback loop — when to screenshot, what to check, token budget |
| Professional product shot setup guide |
| Character modeling guide |
| Scene organization workflow |
| Turntable animation setup |
Tool Domains
Full reference with every parameter: blend-ai.holdmybeer.gg
Domain | Tools | Highlights |
Scene | 6 | Get scene info, set frame range, manage scenes, suggest helpful extensions |
Objects | 15 | Create primitives, duplicate, parent, join, visibility, origin, convert, auto-smooth |
Transforms | 6 | Position, rotation (euler/quat), scale, apply, snap |
Modeling | 13 | Modifiers, booleans, subdivide, extrude, bevel, loop cut, bridge edge loops |
Mesh Editing | 16 | Inset, fill, grid fill, mark seam/sharp, normals, dissolve, knife project, spin, crease |
Selection | 6 | Select by index, by axis, by face sides, by similarity; invert; report what is selected |
Mesh Quality | 3 | Analyze mesh defects: non-manifold, loose verts, zero-area faces, duplicates and repair them; decimate to reduce polycount |
Bool Tool | 4 | Auto union, difference, intersect, slice (via Blender's Bool Tool addon) |
Materials | 25 | Principled BSDF, procedural and raster textures, textures, blend modes, shader node graph (add/connect/remove nodes, including 5.1 Raycast node) |
Lighting | 7 | Point/sun/spot/area lights, HDRIs, light rigs, shadows |
Camera | 6 | Create, aim, DOF, viewport capture, active camera |
Animation | 8 | Keyframes, interpolation, frame range, follow path |
Rendering | 7 | Engine, resolution, samples, output format, render, EEVEE light path intensity |
Curves | 10 | Bezier/NURBS/path, 3D text, convert, reverse, handle types, cyclic, subdivide |
Sweep | 2 | Sweep a profile along a 3D path for tubes, hoses, cables and rails, with flip-free framing; check a path for bends too tight for the profile |
3D Printing | 1 | Reversed normals, self-intersection, thin walls, shells and overhangs via Blender's 3D Print Toolbox |
Sculpting | 8 | Brushes, remesh, multires, symmetry, dynamic topology, stroke_method |
UV Mapping | 4 | Smart project, unwrap (ANGLE_BASED, CONFORMAL, SLIM), projection, pack islands |
Physics | 9 | Rigid body, cloth, fluid, particles (velocity, rendering, delete), bake |
Geometry Nodes | 5 | Create node trees, add/connect nodes, set inputs |
Armature | 6 | Bones, constraints, auto weights, pose |
Annotations | 5 | Annotation layers and strokes (5.1 Annotation API) |
Collections | 4 | Create, move objects, visibility, delete |
File I/O | 5 | Import/export (FBX, OBJ, glTF, USD, STL...), save/open |
Viewport | 3 | Shading mode, overlays, focus on object |
Screenshot | 1 | Fast viewport capture (OpenGL) or full render, base64 output |
Code Exec | 1 | Sandboxed Python execution in Blender (dangerous imports blocked) |
Architecture
AI Assistant <--stdio/MCP--> blend-ai server <--TCP socket--> Blender addon <--bpy--> BlenderMCP Server (
src/blend_ai/): Python process using themcpSDK. Exposes tools, resources, and prompts over stdio. Validates all inputs before forwarding to Blender.Blender Addon (
addon/): Runs a TCP socket server inside Blender on a background thread. Commands are queued and executed on the main thread viabpy.app.timersto respect Blender's threading model.Render Guard: Tracks render state via
bpy.app.handlers. During renders, the server immediately returns a "busy" status. Automatically recovers from crashed renders viaload_posthandler. Can be force-reset via MCP command.Protocol: Length-prefixed JSON messages over TCP with SO_KEEPALIVE for stale connection detection. Each message is a 4-byte big-endian length header followed by a UTF-8 JSON payload.
Privacy & Security
Zero telemetry — blend-ai collects no usage data, sends no analytics, and makes no network requests beyond the local TCP connection to Blender.
Fully local — all communication stays on your machine. No cloud services, no external APIs, no phone-home behavior.
Open source — the entire codebase is auditable. What you see is what runs.
Localhost only: The TCP socket binds to
127.0.0.1— never exposed to the network.Sandboxed code execution:
execute_blender_codeblocks 25 dangerous imports (os,subprocess,socket,shutil,sys,ctypes,importlib,pathlib,signal,multiprocessing,pickle,shelve,tempfile,http,urllib,ftplib,smtplib,xmlrpc,code,codeop,compileall,webbrowser,antigravity,turtle,tkinter) and removes dangerous builtins (__import__,exec,eval,compile,open,globals,locals,vars,input,breakpoint,exit,quit,help,memoryview). Safe Blender imports (bpy,bmesh,mathutils,math,json) are allowed.Input validation: All inputs pass through validators before reaching Blender — name sanitization, path traversal prevention, numeric range checks, enum allowlists.
File safety: Import operations disable
use_scripts_auto_executeto prevent script injection from imported files. File extensions are checked against allowlists.Command allowlist: The addon dispatcher only processes explicitly registered commands. Unknown commands are rejected.
Shader node allowlist: Only 64 known shader node types can be created — prevents arbitrary type injection.
Limitations
Blender must be running: The MCP server communicates with Blender over TCP. Blender must be open with the addon enabled and server started.
Single connection: The addon accepts one client connection at a time. Multiple AI assistants cannot control the same Blender instance simultaneously.
Selection is persistent, not per-call: Selection lives on the mesh in Blender, so it stays set between calls. Choose geometry with the
select_*tools, then passselection="CURRENT"to a mesh tool. The default is still"ALL". Because the selection is shared state, two assistants working on the same mesh would step on each other.Sculpt strokes cannot be simulated: You can configure brushes, symmetry, dyntopo, and remeshing, but actual brush strokes are not yet exposed.
Node graphs require sequential calls: Both shader node trees and geometry node trees must be built one node/connection at a time.
No undo integration: Operations appear in Blender's undo history individually but there's no MCP-level undo/redo or transaction grouping.
Viewport capture requires a visible 3D viewport: Headless Blender may not support viewport screenshots.
No real-time feedback: The MCP protocol is request/response. There's no streaming of viewport updates or render progress.
Development
# Install with dev dependencies
uv pip install -e ".[dev]"
# Run tests (1190 tests)
uv run --extra dev pytest
# Run tests with coverage
uv run --extra dev pytest --cov=blend_ai
# Lint
ruff check src/ tests/
# Format
ruff format src/ tests/blend-ai/
├── src/blend_ai/ # MCP server
│ ├── server.py # FastMCP entry point
│ ├── connection.py # TCP client to Blender (with busy-retry)
│ ├── validators.py # Input validation
│ ├── tools/ # 27 tool modules (186 tools)
│ ├── resources/ # MCP resources (scene, objects, materials)
│ └── prompts/ # 12 expert prompt templates
├── addon/ # Blender addon (zero external deps)
│ ├── blender_manifest.toml # Blender 4.2+ Extension manifest
│ ├── __init__.py # bl_info (legacy fallback) + register/unregister
│ ├── server.py # TCP socket server (SO_KEEPALIVE)
│ ├── dispatcher.py # Command routing + allowlist
│ ├── thread_safety.py # Main-thread execution queue
│ ├── render_guard.py # Render state tracking + crash recovery
│ ├── ui_panel.py # N-panel UI (start/stop + port config)
│ └── handlers/ # 23 handler modules
└── tests/ # 1186 unit testsLicense
AGPL-3.0-or-later. See LICENSE.
Copyright © 2026 jabberwock.
Available Tools
186 toolsadd_annotation_layerA
Add a layer to an annotation.
Layers organize annotation strokes. Each layer can have its own blend mode, opacity, and color.
Args: annotation_name: Name of the annotation data block. layer_name: Name for the new layer.
Returns: Confirmation dict with annotation and layer names.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| annotation_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure burden. It mentions the return type but lacks details on prerequisites (e.g., annotation must exist), side effects, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, includes structured Args and Returns sections, and front-loads the primary purpose without extraneous 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?
The description is fairly complete, covering purpose, parameters, and return value. However, it could mention that the annotation must exist before adding a layer, given the context of sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description adds clear parameter descriptions ('Name of the annotation data block', 'Name for the new layer'), compensating for the schema's lack of detail.
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 ('Add a layer to an annotation') and the resource, distinguishing it from sibling tools like add_annotation_stroke and remove_annotation_layer.
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 explains the role of layers but does not provide explicit guidance on when to use this tool versus alternatives, such as add_annotation_stroke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_annotation_strokeA
Add a stroke to an annotation layer.
Creates a new stroke with the given points on the specified layer. Note: AnnotationStroke does not support per-point strength/opacity.
Args: annotation_name: Name of the annotation data block. layer_name: Name of the layer to add the stroke to. points: List of XYZ coordinates, e.g. [[0,0,0], [1,1,0], [2,0,0]]. Maximum 10000 points. pressure: Pen pressure for all points. Range: 0.0-1.0.
Returns: Confirmation dict with point count.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| pressure | No | ||
| layer_name | Yes | ||
| annotation_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries burden. Discloses new stroke creation, lack of per-point strength/opacity, max 10000 points, pressure range, and return type. Lacks mention of appending behavior or error handling, but sufficient for basic understanding.
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 and well-structured: purpose statement, note, parameter list, return type. Each sentence serves a purpose, no fluff. Front-loaded with primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers parameters, return, and key behavioral notes. Lacks error conditions (e.g., missing layer or invalid points) and does not confirm append vs. overwrite behaviour. Output schema exists but not provided; still, description sufficient for typical 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?
With 0% schema description coverage, description fully compensates by explaining each parameter: annotation_name (data block name), layer_name (target layer), points (XYZ list with example and limit), pressure (range). Adds essential meaning beyond 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 adds a stroke to an annotation layer, creating a new stroke with points. Distinguishes from siblings like add_annotation_layer (layer) and set_annotation_stroke_property (modify).
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?
Implied usage from name and description, but no explicit when-to-use or alternatives guidance. Could mention when to use this vs. add_annotation_layer or set_annotation_stroke_property.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_boneA
Add a bone to an armature. Enters edit mode automatically.
Args: armature_name: Name of the armature object. bone_name: Name for the new bone. head: XYZ position of the bone head (root). Defaults to (0, 0, 0). tail: XYZ position of the bone tail (tip). Defaults to (0, 0, 1). parent_bone: Optional name of the parent bone for hierarchy.
Returns: Dict with the created bone's name, head, and tail positions.
| Name | Required | Description | Default |
|---|---|---|---|
| head | No | ||
| tail | No | ||
| bone_name | Yes | ||
| parent_bone | No | ||
| armature_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses automatic edit mode entry and return value format. No annotations exist, so description bears full burden; it provides key behavioral context beyond the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Opening sentence clearly states purpose. Args/Returns structure is efficient, though including default values inline adds slight 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?
Covers all main aspects: action, parameters, automatic behavior, and return value. Could mention error cases (e.g., armature not found) but is adequate for typical 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?
Adds meaning beyond schema: describes armature_name, bone_name, head/tail as XYZ positions, and parent_bone as optional. Compensates for 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds a bone to an armature and automatically enters edit mode. This distinguishes it from other add_* tools (e.g., add_modifier, add_constraint) which operate on different entities.
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 adding bones to armatures but lacks explicit guidance on when to use versus alternatives, prerequisites (e.g., armature must exist), or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_cloth_simB
Add a cloth physics simulation to an object.
Args: object_name: Name of the mesh object. quality: Simulation quality steps (1-80). mass: Mass of the cloth in kg.
Returns: Confirmation dict with cloth settings.
| Name | Required | Description | Default |
|---|---|---|---|
| mass | No | ||
| quality | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral context. It only mentions adding simulation, with no details on side effects, prerequisites (e.g., object must be a mesh), or potential failures. The return type is vague ('confirmation dict').
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?
Description is short and to the point: one sentence for purpose followed by parameter descriptions. No excess words, though structure could front-load the purpose more clearly.
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?
Tool performs a complex operation (cloth simulation) but lacks details on object requirements, behavior if conditions fail, or comprehensive return information. Output schema is present but not shown, and return description is minimal.
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 description compensates by naming parameters and providing brief explanations: object_name as mesh object, quality with range (1-80), and mass in kg. This adds meaning beyond the schema's type and title.
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 'Add a cloth physics simulation to an object', using a specific verb and resource. It distinguishes from sibling tools like add_fluid_sim and add_rigid_body.
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. Siblings include many simulation and physics-related tools, but the description offers no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_color_ramp_elementA
Add a colour stop to a ColorRamp (ShaderNodeValToRGB) node.
A new ramp starts with two stops, black at 0.0 and white at 1.0. Add stops to shape a gradient: fire needs dark red, orange, yellow, white bunched toward the top; rust needs a hard break between metal and oxide.
Args: material_name: Name of the material. node_name: Name of the ColorRamp node. position: Stop position along the ramp, 0.0 to 1.0. color: RGB or RGBA color, components 0.0 to 1.0. RGB gains alpha 1.0.
Returns: Dict with the new element's index, position, and color.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| position | Yes | ||
| node_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains the default stops (black at 0.0, white at 1.0) and the bounds for position and color. It does not mention potential limits or side effects, but for a non-destructive add operation, the transparency 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 well-structured but slightly verbose with the fire and rust examples. However, these examples are illustrative and not wasteful. Parameters are clearly listed with their meanings, and the return type is specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers all necessary aspects: purpose, parameter details, usage context, and return value. No gaps remain for the 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?
Since schema description coverage is 0%, the description fully compensates by explaining all four parameters: material_name, node_name, position (range 0-1), and color (RGB or RGBA, components 0-1, RGBA gains alpha 1.0). This adds critical meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a colour stop to a ColorRamp node, uses specific verb 'Add', and distinguishes from sibling tools like remove_color_ramp_element and set_color_ramp_element by focusing on the addition action. Examples (fire, rust) reinforce the 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 for when to use the tool (shaping gradients by adding stops) and gives practical examples. It does not explicitly mention when not to use or alternatives, but the purpose is clear enough that an agent can infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_constraintB
Add a constraint to an object or bone.
Args: object_name: Name of the object (armature for bone constraints). bone_name: Name of the bone (empty string for object-level constraints). constraint_type: Constraint type. One of: IK, COPY_ROTATION, COPY_LOCATION, COPY_SCALE, COPY_TRANSFORMS, TRACK_TO, DAMPED_TRACK, LOCKED_TRACK, LIMIT_ROTATION, LIMIT_LOCATION, LIMIT_SCALE, STRETCH_TO, FLOOR, CLAMP_TO, TRANSFORM, MAINTAIN_VOLUME, CHILD_OF, PIVOT, ARMATURE. properties: Optional dict of constraint properties to set (e.g., target, subtarget, chain_count, influence, etc.).
Returns: Dict with the created constraint's name and type.
| Name | Required | Description | Default |
|---|---|---|---|
| bone_name | No | ||
| properties | No | ||
| object_name | Yes | ||
| constraint_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the return shape ('Dict with the created constraint's name and type') and the object/bone scoping rule, but says nothing about failure modes (missing object/bone), idempotency, or whether the operation is reversible, which matters for a state-changing 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?
Front-loaded with the one-line purpose, then structured Args/Returns blocks. Every element earns its place; the enum list is long but necessary given 0% schema coverage. Slightly docstring-heavy formatting but not wasteful.
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 4-parameter mutation tool with an output schema, the definition covers all inputs plus return shape. The only gap is behavioral detail (errors, prerequisites) that an agent would want before invoking a constraint-creation call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it mostly does: it explains object_name, bone_name (empty string for object-level constraints), the full constraint_type enum, and gives example property keys (target, subtarget, chain_count, influence). It adds clear meaning beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a constraint to an object or bone') and immediately clarifies the object-vs-bone scope. It does not name an alternative sibling, but no other constraint-adding tool exists in the sibling list, so the purpose stands on its own.
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 says what the tool does but never says when to reach for it versus adjacent tools like add_modifier or set_bone_property, nor does it state prerequisites such as needing an armature for bone constraints beyond a parenthetical. Usage context is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_curve_pointA
Add a control point to an existing curve.
Args: curve_name: Name of the curve object to add a point to. location: 3D location for the new point as (x, y, z). handle_type: Handle type - AUTO, VECTOR, ALIGNED, or FREE.
Returns: Dict with curve name and new point count.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | ||
| curve_name | Yes | ||
| handle_type | No | AUTOMATIC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the curve must exist (implied mutation, adds state) and gives the return shape ('Dict with curve name and new point count'), which is useful behavioral context. However, it does not state whether the point is appended, inserted, or placed at an index, what happens if curve_name doesn't exist, or what units/coordinate space 'location' uses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, then Args/Returns structure. No wasted prose. Slightly verbose in the Returns block for information already covered by the output schema, but efficient overall.
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 output schema exists, so Returns is redundant but harmless. With no annotations, no schema descriptions, and an enum the description only partially reflects, the definition is adequate for a 3-param mutation but leaves gaps: no prerequisites (curve must exist, edit mode?), no error behavior, and an incomplete enum list that could mislead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does: curve_name ('Name of the curve object to add a point to'), location ('3D location for the new point as (x, y, z)'), and handle_type explains the enum intent ('Handle type - AUTO, VECTOR, ALIGNED, or FREE'). The enum lists 4 of the 7 schema values (AUTOMATIC, FREE_ALIGN, TOGGLE_FREE_ALIGN omitted), a small mismatch, but the parameters are otherwise well documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Add a control point to an existing curve.' Distinguishes from siblings like create_curve (creates the curve) and set_handle_type (modifies existing handles). An agent can immediately identify the 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?
No when-to-use guidance, no exclusions, no named alternatives. The sibling set includes several curve tools (set_handle_type, subdivide_curve, smooth_curve, toggle_cyclic) and the description offers no routing logic. What remains is the constraint that the curve must already exist, which is implied rather than stated as a prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_fluid_simB
Add a fluid physics simulation to an object.
Args: object_name: Name of the object. type: Fluid type - DOMAIN (container), FLOW (emitter), or EFFECTOR (obstacle). domain_type: Domain simulation type - GAS (smoke/fire) or LIQUID. Only used when type is DOMAIN.
Returns: Confirmation dict with fluid settings.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | DOMAIN | |
| domain_type | No | GAS | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the result is a 'Confirmation dict with fluid settings,' but omits essential mutational context: whether the object must be a mesh, what happens if a fluid sim already exists, required permissions, or whether the operation is reversible. For a write-style physics tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and front-loaded, with the core purpose stated first and arguments/returns listed afterward. The Args/Returns structure is standard and readable, though the return line duplicates information already carried by the output 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?
The tool is simple and an output schema exists, so return-value explanation is not needed in detail. The description does well with parameters, but for a mutation tool with no annotations it is still thin on behavioral and prerequisite context, leaving an agent without guidance on side effects or required object state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it defines object_name, explains that type maps to DOMAIN (container), FLOW (emitter), or EFFECTOR (obstacle), and clarifies that domain_type is GAS (smoke/fire) or LIQUID and only used with DOMAIN. That adds real meaning beyond the bare enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add a fluid physics simulation to an object.' It clearly identifies the tool's scope (fluid simulation) and separates it from cloth or rigid-body siblings by naming the simulation type. However, it never explicitly contrasts itself with adjacent physics tools like add_cloth_sim or add_rigid_body, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. The description only lists arguments and a return value; it never explains under what conditions an agent should pick this tool over add_cloth_sim, add_rigid_body, or set_physics_property.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_geometry_nodeA
Add a node to a geometry nodes modifier's node group.
Args: modifier_name: Name of the geometry nodes modifier (used to find the node group). node_type: Blender node type identifier, e.g. GeometryNodeMeshCube, GeometryNodeSetPosition, GeometryNodeTransform, ShaderNodeMath, GeometryNodeJoinGeometry, etc. location: XY position for the node in the node editor. Defaults to (0, 0).
Returns: Dict with the created node's name and type.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | ||
| node_type | Yes | ||
| modifier_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the action (add) and return value but does not mention side effects, permissions, or undo behavior. Adequate but not thorough.
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 with a clear header, Args, and Returns sections. Every sentence adds 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?
The tool has a simple function (add a node) and an output schema. The description covers the return value (dict with name and type) and the parameters adequately, making it complete for this 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 coverage is 0%, so the description compensates by explaining each parameter: modifier_name finds the node group, node_type provides examples, location specifies XY position. Good detail for selecting and invoking.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and the resource 'a node to a geometry nodes modifier's node group'. It distinguishes from sibling tools like add_shader_node and add_texture_node by specifying geometry nodes specifically.
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 geometry nodes modifiers but does not explicitly state when to use this tool over alternatives or any prerequisites. No exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_modifierA
Add a modifier to a mesh object (non-destructive workflow).
TIP: For BOOLEAN type, consider using booltool_auto_union/difference/intersect/slice instead — they apply the boolean immediately and handle cutter cleanup automatically. Only use add_modifier with BOOLEAN when you want a non-destructive modifier stack.
Args: object_name: Name of the object to add the modifier to. modifier_type: Type of modifier. Must be one of: SUBSURF, MIRROR, ARRAY, BEVEL, BOOLEAN, SOLIDIFY, DECIMATE, REMESH, WIREFRAME, SHRINKWRAP, SMOOTH, EDGE_SPLIT, TRIANGULATE, WEIGHTED_NORMAL, SIMPLE_DEFORM, LATTICE, CURVE, CAST, WAVE, DISPLACE, SCREW, SKIN, MASK, WELD, CORRECTIVE_SMOOTH, LAPLACIAN_SMOOTH, SURFACE_DEFORM, MESH_DEFORM, HOOK. name: Optional custom name for the modifier.
Returns: Confirmation dict with modifier details.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| object_name | Yes | ||
| modifier_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It discloses the non-destructive nature and implies stacking via 'modifier stack', and contrasts with booltool's immediate application. It does not cover prerequisites (e.g., object mode), side effects on existing modifiers, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with purpose first, a useful TIP, then args and returns. The enum list is repeated from the schema, adding unnecessary length, but overall it is 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?
Given no annotations and a present output schema, the description covers purpose, usage tip, parameter meanings, and return shape. It lacks details on object mode requirements or modifier interaction, but is sufficient for an agent with basic Blender knowledge to invoke it.
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 labels object_name and modifier_type and clarifies that name is optional, but the explanations are largely tautological with parameter names and the enum list duplicates the schema. It does not explain what each modifier type does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a modifier to a mesh object') and scopes it with 'non-destructive workflow'. The TIP explicitly differentiates it from the booltool_* siblings for boolean operations, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance for the BOOLEAN case, naming the alternative booltool_* tools and the condition (want non-destructive modifier stack). However, it offers no guidance for other modifier types or against siblings like subdivide_mesh or apply_modifier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_multires_modifierB
Add a Multiresolution modifier for sculpting detail.
Args: object_name: Name of the mesh object. levels: Number of subdivision levels to add (1-6).
Returns: Dict with object name and modifier info.
| Name | Required | Description | Default |
|---|---|---|---|
| levels | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the tool's effect (adds multiresolution modifier for sculpting) but lacks disclosure of behavioral traits such as increased vertex count, potential performance impact, or that the operation is destructive. No annotations provided to offset this.
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 docstring with front-loaded purpose. Parameter section is succinct but adds little beyond schema. No wasted sentences, though could be more 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?
Missing usage context (required mode, mesh requirement) and does not guide selection among sibling modifier tools. Output schema exists but return values are not elaborated; description is minimal for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. The description provides range for 'levels' (1-6) but repeats schema info for 'object_name'. Fails to mention default value (2) or any validation beyond range.
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 the action (Add), resource (Multiresolution modifier), and purpose (for sculpting detail). The verb+resource combination distinguishes it from generic siblings like 'add_modifier'.
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 like 'add_modifier', or what prerequisites exist (e.g., must be in object mode, mesh must be selected). Missing exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_particle_systemB
Add a particle system to an object.
Args: object_name: Name of the mesh object. count: Number of particles (max 1000000). lifetime: Particle lifetime in frames. emit_from: Emission source - VERT, FACE, or VOLUME.
Returns: Confirmation dict with particle system settings.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| lifetime | No | ||
| emit_from | No | FACE | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a concrete bound (max 1000000 particles), units for lifetime (frames), and the shape of the return value, but says nothing about side effects such as mutating the object's modifier stack or whether the new system becomes active/selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line summary followed by tightly grouped Args and Returns sections, with no filler sentences. The Args block duplicates schema titles slightly but earns its place given the zero schema coverage.
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 the Returns note is redundant but harmless. For a mutation tool with no annotations, the description stops short of stating permissions, side effects, or failure modes, leaving meaningful gaps for an agent deciding whether it is safe to call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: every one of the four parameters is named and explained (mesh name, particle count with a hard cap, lifetime in frames, emission source with the enum values VERT/FACE/VOLUME). Only object_name's type expectation is left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a particle system to an object'), which clearly separates it from read-side siblings like get_object_info. It does not explicitly contrast with delete_particle_system or set_particle_rendering, but the action 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 when-to-use guidance, no prerequisites (e.g. object must be a mesh, must exist, must be in object mode), and no mention of alternatives. The agent must infer that this is the creation step before set_particle_velocity/set_particle_rendering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_rigid_bodyA
Add a rigid body physics simulation to an object.
Args: object_name: Name of the object. type: Rigid body type - ACTIVE (affected by physics) or PASSIVE (static collider). mass: Mass of the object in kg. friction: Surface friction coefficient (0.0-1.0). restitution: Bounciness (0.0-1.0).
Returns: Confirmation dict with rigid body settings.
| Name | Required | Description | Default |
|---|---|---|---|
| mass | No | ||
| type | No | ACTIVE | |
| friction | No | ||
| object_name | Yes | ||
| restitution | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose some behavior: what ACTIVE vs PASSIVE means and what the return value is. But it omits key operational facts for a mutation tool — whether an existing rigid body is overwritten, whether the object needs to be visible/selected, and any dependency or ordering constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by compact Args and Returns blocks; every line carries information and there is no filler. Slightly formulaic, but appropriately sized for a 5-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the Returns line is supplementary rather than required, and parameter coverage is thorough. The remaining gap is the absent when-to-use/alternative guidance, which matters given the many sibling physics tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: all five parameters are documented with meaning, and the numeric ones include ranges (friction 0.0-1.0, restitution 0.0-1.0, mass in kg) plus the enum semantics for type. This is meaningfully richer than the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Add a rigid body physics simulation to an object.' An agent immediately knows this is a physics-simulation setup tool. However, it does not distinguish itself from closely related siblings such as add_cloth_sim, add_fluid_sim, or add_particle_system, nor from set_physics_property.
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 prerequisites (e.g., object must be a mesh, object must exist), and no exclusions or pipeline context. The Args block documents parameters but not usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_shader_nodeB
Add a shader node to a material's node tree.
Args: material_name: Name of the material. node_type: Blender shader node type (e.g. ShaderNodeBsdfPrincipled). location: Node location as [x, y], default [0, 0].
Returns: Dict with material, node_name, and node_type.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | ||
| node_type | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but discloses little beyond the basic add operation and return shape. It does not mention prerequisites (e.g., material must exist, node tree must be active), error behavior, or whether the operation is reversible.
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 front-loaded, uses structured Args and Returns sections, and avoids unnecessary prose. The Returns section is slightly redundant given the output schema, but it does not bloat the definition.
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 a simple mutation, and the description covers parameters and output. However, given no annotations and many sibling node-creation tools, it lacks usage context and behavioral details (e.g., prerequisites, side effects) that would help an agent 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?
Schema description coverage is 0%, so the description must explain parameters. It does so for all three: material_name, node_type (with an example), and location (format and default). This meaningfully compensates for the empty schema descriptions, though it omits that node_type must be one of the enum values.
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 combo: 'Add a shader node to a material's node tree.' This clearly states what the tool does, but it does not distinguish itself from sibling tools like add_texture_node or add_geometry_node, which could also add nodes to trees.
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 only lists arguments and return values, leaving the agent to infer context from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_texture_nodeA
Add an image texture node to a material and connect it to the Principled BSDF Base Color.
Args: material_name: Name of the material. image_path: Absolute path to the image file. Must exist on disk. label: Label for the texture node, default "Image Texture".
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Image Texture | |
| image_path | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states that the node is added and connected, but does not disclose whether existing nodes are overwritten, if the material must already exist, or other side effects. Missing important behavioral context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: one sentence for the action, followed by a clear Args list. No redundant information, 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?
Given tool simplicity and presence of output schema, the description covers the main points but lacks mention of prerequisites (e.g., material must exist) and behavior if node already exists. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds specific meaning to parameters beyond the schema: material_name is name of material, image_path must be absolute and exist on disk, label defaults to 'Image Texture'. Schema coverage is 0%, so description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and the resource 'image texture node', and specifies it connects to Principled BSDF Base Color. This distinguishes it from generic siblings like 'add_shader_node' and provides a specific action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to add an image texture node, but it does not explicitly state when to use this tool versus alternatives (e.g., add_shader_node for other node types). No guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_mesh_qualityA
Analyze mesh topology quality and return a structured defect report.
Checks for non-manifold edges, loose vertices, zero-area faces, duplicate vertices, and wire edges. Returns counts and sample indices (capped at 50 per category) for each defect type.
Args: object_name: Name of the mesh object to analyze.
Returns: Dict with vertex/edge/face counts, defect counts and sample indices, and an issues_found boolean.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the burden. It lists the checks performed and mentions return details (counts, sample indices capped at 50). It does not explicitly state it is read-only or describe side effects, but the analysis nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an intro, list of checks, return info, and Args. It is concise but could be slightly more streamlined without losing 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?
Given the tool's simplicity (one parameter, output schema exists), the description adequately covers what it does and returns. It does not mention error conditions or performance, but overall is complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, object_name, is explained in the Args section as 'Name of the mesh object to analyze.' This adds clear meaning beyond the schema's title and type, compensating for 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it analyzes mesh topology quality and returns a structured defect report, listing specific defect types (non-manifold edges, loose vertices, etc.). This is specific and distinguishes it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for mesh quality checking but does not explicitly state when to use this tool versus alternatives or provide any exclusions. No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_sweep_pathA
Check whether a path can carry a profile of a given radius, without building it.
Where a path's radius of curvature falls below the profile radius, the swept rings pass through each other on the inside of the bend. The result still reports as watertight and manifold with no degenerate faces, so no ordinary mesh check catches it. Call this before sweeping, or to find where an existing path needs widening.
Args: path_points: Centreline as a list of [x, y, z] points, in order. radius: Outer radius of the profile you intend to sweep. resolution: Samples between path points, matching what you will pass to sweep_profile_along_path so the check covers the same curve.
Returns: Dict with min_clearance_ratio (curvature radius over profile radius at the tightest station; below 1.0 self-intersects), tightest_index, tightest_point, self_intersects, and counts of stations below 1.0 and below 1.5. Aim for 1.5 or more for a clean surface.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | No | ||
| resolution | No | ||
| path_points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers: it discloses the specific failure mode (swept rings interpenetrate on the inside of bends), the non-obvious fact that the result still reports watertight and manifold so ordinary mesh checks miss it, and the numeric threshold (1.5+) for a clean surface. It omits cost/performance characteristics, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then rationale, then Args and Returns. Every sentence contributes, though the middle explanatory paragraph is slightly verbose for a tool whose name is already descriptive.
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?
Even though an output schema exists, the description usefully explains the returned fields and their interpretation thresholds (min_clearance_ratio below 1.0 self-intersects, aim for 1.5+). Combined with full parameter semantics and the failure-mode context, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and does: it defines path_points as the ordered centreline in [x,y,z] form, radius as the outer profile radius to be swept, and resolution as samples between points that must match the sweep call. Meaning is added well beyond the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('check whether a path can carry a profile of a given radius, without building it') and immediately distinguishes itself from the sweep operation it precedes. An agent knows this is a validation tool, not a construction tool, without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit invocation timing ('Call this before sweeping, or to find where an existing path needs widening') and couples its resolution parameter to sweep_profile_along_path so the check matches the eventual sweep. It stops short of naming an alternative to use instead when the check fails, but the when-to-use context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_modifierC
Apply a modifier to an object, making its effect permanent.
Args: object_name: Name of the object. modifier_name: Name of the modifier to apply.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| modifier_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It mentions 'making its effect permanent', implying a destructive or irreversible action, but does not clarify side effects like whether the modifier is removed after application or if the original object data is altered permanently.
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 short and efficiently conveys the core action, including a note on return type. However, it could be more concise by removing the docstring format, but overall it is well-structured 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?
The tool has an output schema, but the description does not provide enough context about error conditions, prerequisites (e.g., modifier and object must exist), or what happens if the modifier is already applied. The minimal description leaves many gaps for agent understanding.
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 2 string parameters with no descriptions (0% coverage). The description only restates the parameter names without adding any meaning, constraints, or examples. It fails to compensate 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 verb 'apply' and the resource 'modifier to an object' with the specific outcome 'making its effect permanent'. It distinguishes from sibling tools like 'add_modifier' which adds a modifier without applying it permanently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'add_modifier' or 'remove_modifier'. There is no mention of prerequisites or conditions for applying a modifier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_transformsB
Apply (freeze) transforms on an object, making current transforms the new basis.
Args: object_name: Name of the object. location: Apply location transform. Defaults to True. rotation: Apply rotation transform. Defaults to True. scale: Apply scale transform. Defaults to True.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| location | No | ||
| rotation | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It explains that transforms are frozen and become the new basis, but it does not disclose irreversibility, required permissions, or how object data is affected beyond that implied effect. This is a mutation tool with significant safety/profile 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 structured with a clear opening sentence followed by Args and Returns sections. It is front-loaded and not bloated, though the repeated 'Apply ... transform' phrasing is slightly repetitive.
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 the description need not explain return values. It covers the operation and all parameters adequately for invocation, but it lacks usage context and safety/irreversibility details that would make it complete for a transform-mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document parameters. It lists all four parameters, explains each boolean toggle ('Apply location/rotation/scale transform'), and gives defaults, which meaningfully compensates for the empty 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 states a specific verb and resource: 'Apply (freeze) transforms on an object.' It also explains the effect ('making current transforms the new basis'), which distinguishes it from setters like set_location or set_rotation. However, it does not explicitly name or contrast with any sibling tool, so the distinguishing is implicit 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 gives the operation and parameter defaults but no guidance on when to use this tool versus alternatives such as set_location, set_rotation, set_scale, or apply_modifier. There is no explicit context, prerequisite, or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_materialC
Assign a material to an object.
Args: object_name: Name of the target object. material_name: Name of the material to assign.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only mentions returning a confirmation dict, but does not clarify whether the material replaces existing ones, adds to a slot, or modifies the object's material 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 short and front-loaded, using a standard docstring format. However, for a simple tool it is acceptable but not highly informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (inferred from context signals), the description could rely on it, but still lacks details on prerequisites, side effects, or error scenarios. Many sibling tools exist but no comparative context is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only adds minimal phrasing ('Name of the target object', 'Name of the material to assign') which is already implied by the schema titles. Without compensation, the description fails to enrich 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 uses a specific verb ('assign') and identifies both resource ('material') and target ('object'), clearly distinguishing it from sibling tools like 'create_material' or 'set_material_color'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on prerequisites, when to use vs alternatives, or conditions that might cause failure (e.g., material or object does not exist). The description simply states the action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bake_physicsB
Bake a physics simulation for an object.
Args: object_name: Name of the object with physics. physics_type: Optional physics type to bake. If empty, bakes all physics on the object.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| physics_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It does not say that baking is a heavy/long-running write operation, whether it overwrites an existing bake, or whether physics must already exist on the object — all material facts for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in one sentence, and the Args block is clean. The 'Returns: Confirmation dict' line is mildly redundant given an output schema exists, but it costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive-ish, potentially slow simulation bake with no annotations, the description covers arguments adequately but omits operational context (duration, overwrite behavior, prerequisites). The output schema does relieve it of return-value 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?
Schema description coverage is 0%, so the description must compensate, and it does document both parameters, including the non-obvious semantics that an empty physics_type bakes all physics on the object. The enum values themselves are self-descriptive and left to the schema, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Bake a physics simulation for an object'), which is clearly distinct from sibling mutation tools like add_cloth_sim or set_physics_property. It does not, however, contrast itself with those siblings, so an agent must infer when baking is the right call versus adding or configuring physics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g., that physics must already be attached to the object), and no mention of related tools such as set_physics_property or add_particle_system. The only usage hint is the inferred effect of leaving physics_type empty.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bevel_edgesA
Bevel all edges of a mesh.
Args: object_name: Name of the mesh object. width: Bevel width. segments: Number of bevel segments. Range: 1-100.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| segments | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the operation mutates mesh geometry and returns a confirmation dict, but says nothing about destructiveness, reversibility/undo, whether it needs edit mode or a selected/active object, or how it interacts with existing modifiers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-sentence statement of purpose, followed by a compact args list and a one-line return note. The per-parameter lines partly restate the schema, but they are short and readable, so nothing is wasteful enough to penalize heavily.
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 4-parameter mesh-editing tool, the description covers purpose, scoping, all parameters, and the return shape, and an output schema exists so return values need no elaboration. The remaining gap is contextual preconditions (edit mode, active object) given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it explains object_name, width, the 1-100 range on segments, and the meaning plus default of the ALL/CURRENT enum. Only the units/semantics of width (absolute vs relative) remain unstated, a small residual 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 first line gives a specific verb and resource ('Bevel all edges of a mesh'), which distinguishes it from neighboring tools like dissolve_edges, bridge_edge_loops, or inset_faces. Minor friction: 'all edges' sits awkwardly next to a selection parameter that can restrict the operation to a subset, but the intent 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?
Explicitly tells the agent how to scope the operation: 'ALL' vs 'CURRENT', and directs it to the select_* sibling tools to make a selection first. It stops short of naming other bevel-like alternatives or stating when a bevel is the wrong choice, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boolean_operationA
Perform a boolean operation between two objects using a modifier.
NOTE: For destructive booleans, prefer the booltool_auto_* tools instead (booltool_auto_union, booltool_auto_difference, booltool_auto_intersect, booltool_auto_slice). They handle selection and cutter cleanup automatically. Use this tool only when you need a non-destructive boolean modifier workflow.
Args: object_name: Name of the object to apply the boolean to. target_name: Name of the target/cutter object. operation: Boolean operation type. One of: UNION, DIFFERENCE, INTERSECT.
Returns: Confirmation dict with operation details.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | DIFFERENCE | |
| object_name | Yes | ||
| target_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the load, and it does disclose the key trait: this is a non-destructive modifier workflow that does NOT handle selection or cutter cleanup automatically. It also states the return shape. It stops short of saying whether the cutter is hidden/consumed or whether the modifier is applied, which matters for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then a clearly marked NOTE routing to alternatives, then Args and Returns. Well structured and skimmable; the NOTE is slightly verbose in repeating all four sibling names but earns its place as routing 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?
With an output schema present, the return-value explanation is redundant but harmless. Together with usage routing and per-parameter documentation, the definition is nearly complete; the only real gap is lifecycle behavior of the cutter object, which is 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 description coverage is 0%, and the description compensates by documenting all three parameters, notably clarifying that target_name is the 'target/cutter object' — meaning beyond the bare schema title. The enum values for operation are restated from the schema, so the gain is uneven but the cutter semantics are genuinely additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (boolean operation between two objects) plus the mechanism (using a modifier), and explicitly differentiates itself from the booltool_auto_* siblings by naming them. An agent can tell exactly which tool fits which situation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not guidance ('For destructive booleans, prefer the booltool_auto_* tools') with all four alternatives named, and states the condition that selects this tool ('non-destructive boolean modifier workflow'). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booltool_auto_differenceA
Auto boolean difference: subtract the target object from the main object.
The target object is used as a cutter and removed after the operation.
Uses Bool Tool extension if installed, otherwise falls back to native boolean modifier (a warning will be included in the response).
Args: object_name: Name of the object to cut from. target_name: Name of the cutter object (will be removed).
Returns: Confirmation dict with operation details. May include a 'warning' field if Bool Tool is not available and native fallback was used.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| target_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: the target object is removed after the operation, and it falls back to native boolean modifier if the Bool Tool extension is not installed, with a warning in the response. This adds context beyond the operation itself. However, it does not mention potential prerequisites or constraints.
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 leads with the purpose, then explains fallback behavior, followed by parameter and return descriptions. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description adequately summarizes the return value. It covers the operation, fallback, and parameter meanings. However, it could mention prerequisites (e.g., objects must be mesh) or potential side effects for full 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 description explains each parameter in the Args section: object_name is the object to cut from, target_name is the cutter object that will be removed. This adds meaning beyond the schema, which only has titles and types. The schema description coverage is 0%, so the description compensates well.
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 performs a boolean difference by subtracting the target object from the main object. The name and description make the purpose evident, but it does not explicitly differentiate from sibling tools like booltool_auto_union or boolean_operation, which could cause confusion.
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 it is for subtraction, but does not state when not to use it or mention alternatives like booltool_auto_intersect or the generic boolean_operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booltool_auto_intersectA
Auto boolean intersect: keep only the overlapping volume of two objects.
The target object is removed after the operation.
Uses Bool Tool extension if installed, otherwise falls back to native boolean modifier (a warning will be included in the response).
Args: object_name: Name of the main object. target_name: Name of the intersecting object (will be removed).
Returns: Confirmation dict with operation details. May include a 'warning' field if Bool Tool is not available and native fallback was used.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| target_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully explains the operation: the target object is removed, and there is a fallback mechanism (Bool Tool extension vs native boolean modifier) with a warning in the response. This covers key behavioral traits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with a front-loaded purpose statement and structured bullet points for arguments and returns. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and the description detailing the return (confirmation dict with warning), the tool is well described. Minor omissions like prerequisites or error conditions are not critical given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description provides clear docstrings for both parameters: object_name is the main object, target_name is the intersecting object (and will be removed). This adds significant meaning beyond the parameter names.
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 'keep only the overlapping volume of two objects', providing a specific verb (intersect) and resource (two objects). The tool name and description distinguish it from siblings like booltool_auto_difference and booltool_auto_union.
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 use for intersection operations and notes that the target object is removed, which serves as a caution. However, it does not explicitly state when to use it over alternatives, but the context of sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booltool_auto_sliceA
Auto boolean slice: split the main object using the target as a cutter.
Creates two separate pieces from the intersection. The target object is removed after the operation.
Uses Bool Tool extension if installed, otherwise falls back to native boolean modifier (a warning will be included in the response).
Args: object_name: Name of the object to slice. target_name: Name of the cutter object (will be removed).
Returns: Confirmation dict with operation details. May include a 'warning' field if Bool Tool is not available and native fallback was used.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| target_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: target object is removed, fallback to native boolean with warning. This provides necessary transparency about destructive effects and dependency, though details like reversibility or material handling are absent.
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 title line, explanation, args, and returns. Every sentence adds value without redundancy, making it quick to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema needed due to its presence), the description covers purpose, parameters, behavior, fallback, and return value. It is complete for effective agent 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?
Schema description coverage is 0%, but the description compensates by defining both parameters: object_name as the object to slice and target_name as the cutter (noting it will be removed). This adds crucial meaning beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'split' and the resource 'main object using the target as a cutter', and distinguishes itself from sibling boolean operations (difference, intersect, union) by specifying it creates two pieces from the intersection.
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 explains the tool's behavior (cutter removed, two pieces created) and fallback mechanism, but does not explicitly contrast with alternatives like booltool_auto_difference or boolean_operation. Usage context is clear but not directly compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booltool_auto_unionA
Auto boolean union: merge two mesh objects into one.
The target object is consumed and joined into the main object. This is useful for permanently joining meshes so parts don't float away from their bodies.
Uses Bool Tool extension if installed, otherwise falls back to native boolean modifier (a warning will be included in the response).
Args: object_name: Name of the main object to keep. target_name: Name of the object to merge into the main object.
Returns: Confirmation dict with operation details. May include a 'warning' field if Bool Tool is not available and native fallback was used.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| target_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses that the target object is consumed (destructive), the fallback behavior to native boolean modifier if Bool Tool is missing, and that a warning may be included in the response.
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 separate sections for usage, args, and returns, and each sentence is informative. It is concise but could be slightly tighter without losing 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?
Given the tool's simplicity (2 string params, output schema exists), the description covers purpose, behavior, parameters, return value, and fallback mechanism, making it complete for an agent to use 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 description explains both parameters: object_name is the main object to keep, target_name is the object to merge in, adding significant meaning beyond the bare schema titles. With 0% schema coverage, the description provides all parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs an auto boolean union to merge two mesh objects into one, specifying the target is consumed. This distinguishes it from sibling booltool variants (difference, intersect, slice) and other mesh 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?
It explains the tool is useful for permanently joining meshes so parts don't float away, providing a clear use case. However, it does not explicitly contrast with alternatives like 'boolean_operation' or 'join_objects'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_edge_loopsA
Bridge two edge loops to create connecting geometry.
Select two edge loops on a mesh before calling this. The operation creates faces connecting the two loops, useful for connecting separate mesh parts, creating holes between surfaces, or building tube-like geometry.
Args: object_name: Name of the mesh object with selected edge loops. segments: Number of segments in the bridge. Range: 1-1000. profile_shape_factor: Shape of the bridge profile. Range: -1.0 to 1.0. 0.0 is straight, positive values bulge outward, negative inward.
Returns: Confirmation dict with bridge details.
| Name | Required | Description | Default |
|---|---|---|---|
| segments | No | ||
| object_name | Yes | ||
| profile_shape_factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that faces are created, but lacks details on mutation, side effects, or error conditions. The prerequisite is mentioned, but not all 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 with a short summary followed by a docstring-style breakdown. It is informative without being overly verbose, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no annotations, and an output schema (implied by Return description), the description covers prerequisites, parameter ranges, and return value. Use cases are listed. It lacks error conditions or detailed postconditions but is largely complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain parameters. It does so effectively: object_name (mesh object with selected loops), segments (range 1-1000), profile_shape_factor (range -1.0 to 1.0, with meaning of values). This adds significant 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 clearly states the tool's purpose: 'Bridge two edge loops to create connecting geometry.' It uses specific verbs ('bridge') and resources ('edge loops'), and distinguishes itself from sibling tools (e.g., grid_fill, fill_faces) by its unique 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 description provides explicit prerequisite: 'Select two edge loops on a mesh before calling this.' It also lists use cases: 'connecting separate mesh parts, creating holes between surfaces, or building tube-like geometry.' However, it does not mention when not to use or suggest alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_viewportB
Render the viewport to a file or return as base64.
Args: filepath: Optional absolute path for output image. If empty, returns base64-encoded image. width: Render width in pixels, default 1920. height: Render height in pixels, default 1080.
Returns: Dict with filepath or base64 image data.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| filepath | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides some behavioral context: it explains the conditional output (file or base64) and default dimensions. However, it does not disclose whether the render is synchronous, if it requires the UI, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main action, followed by clear parameter descriptions. It avoids fluff, though it could be more structured (e.g., bullet points) for readability.
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 and the presence of an output schema, the description covers the core functionality and return value. It is largely complete for a rendering tool, though it omits image format and edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description explains all three parameters: filepath (behavior when empty), width and height (defaults). This adds meaning beyond the schema's titles and defaults.
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 renders the viewport to a file or base64, specifying the resource and verb. However, it does not explicitly differentiate from the sibling 'get_viewport_screenshot', which likely has similar 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?
No guidance is provided on when to use this tool versus alternatives (e.g., get_viewport_screenshot). There are no prerequisites, when-not-to-use, or context-specific instructions, leaving the agent without usage clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_3d_printabilityA
Check whether a mesh will 3D print, using Blender's 3D Print Toolbox.
Catches three defects a mesh can carry while still passing analyze_mesh_quality, because each one leaves the mesh manifold, watertight and free of degenerate faces:
Bad contiguous edges: a shell whose normals agree with each other but collectively face inward. Recalculating normals reports nothing to fix, and the slicer rejects the file as having reversed faces.
Intersect faces: the surface passing through itself.
Thin faces: walls thinner than the nozzle, which slice away to nothing.
It also reports shell count, zero-area faces and edges, non-flat faces, sharp edges and overhanging faces. Index lists are capped at 50 samples and can be fed straight to select_by_index to see the problem in Blender.
Requires the 3D Print Toolbox extension, which ships with Blender but is off by default. If it is disabled this returns an error saying how to enable it; suggest_extensions also reports whether it is on.
Args: object_name: Name of the mesh object to check. checks: Which checks to run - any of SOLID (non-manifold and bad contiguous edges), INTERSECT, DEGENERATE (zero faces and edges), THICKNESS, SHARP, OVERHANG, NONPLANAR. Omit or pass an empty list to run everything, which also reports shell count. Counts are only returned for checks that actually ran. overhang_angle: Overhang threshold in RADIANS. Faces steeper than this need support. 0.785 (45 degrees) is the usual FDM limit. Leave unset to keep the toolbox's current setting. min_thickness: Minimum wall thickness in Blender units. Set it to your nozzle width. Leave unset to keep the current setting. sharp_angle: Sharp-edge threshold in RADIANS. nonplanar_angle: Non-flat face threshold in RADIANS. zero_threshold: Area below which a face counts as zero-area.
Returns: Dict with a count (and sample indices) per check that ran, plus checks_run, issues_found, and print_blocking: the defects that stop a print, as opposed to overhangs and sharp edges which are advisory.
| Name | Required | Description | Default |
|---|---|---|---|
| checks | No | ||
| object_name | Yes | ||
| sharp_angle | No | ||
| min_thickness | No | ||
| overhang_angle | No | ||
| zero_threshold | No | ||
| nonplanar_angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does: it defines each defect semantically, discloses the 50-sample index cap, explains the error returned when the toolbox extension is disabled, and distinguishes print_blocking defects from advisory ones like overhangs. Safety-relevant behavior (read-only check, no mutation) is implied clearly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and defect rationale, then Args/Returns; each section earns its place, though the bulleted defect explanations and extension note make it longer than strictly minimal. Structure is clear and navigable.
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 7-parameter tool with a non-trivial domain, the description covers purpose, defect semantics, parameter meanings, error behavior, sampling limits, and return shape. Even with an output schema present, the extra description of print_blocking vs advisory adds necessary 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 0%, so the description must compensate, and it does: it enumerates the SOLID/INTERSECT/DEGENERATE/THICKNESS/SHARP/OVERHANG/NONPLANAR values, states radians and gives a 45-degree FDM example for overhang_angle, and explains unset defaults for every optional angle/threshold. This is far beyond what the JSON schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('check whether a mesh will 3D print') and immediately differentiates from the sibling analyze_mesh_quality, naming the exact defect classes that pass that tool but fail here. An agent can tell the two apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames when to use this over analyze_mesh_quality, explains the checks option (omit/empty list runs all), documents the extension prerequisite, notes the error path when disabled, and points to suggest_extensions for checking its state. Alternatives and conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_animationB
Remove all animation data from an object.
Args: object_name: Name of the object.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the effect (remove all animation data) and confirms a return value, but does not specify whether this deletes keyframes, drivers, or actions, nor if the operation is reversible. The description is adequate but lacks depth for a destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the purpose. It efficiently covers the argument and return value in two lines. However, for a one-parameter tool, it could be slightly more structured (e.g., separating args and returns clearly), but overall it is concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is incomplete. It omits error scenarios, the exact scope of animation data cleared (e.g., f-curves vs. drivers), and the structure of the confirmation dict. For a destructive operation, more context on what is removed and any side effects is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no meaning beyond the schema: 'object_name: Name of the object.' is essentially a tautology of the parameter title. It does not clarify naming conventions, format, or source (e.g., Blender object name). This fails to compensate for the schema's lack of 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 uses the specific verb 'remove' and clearly states the resource 'all animation data from an object'. This distinguishes it from sibling tools that deal with individual keyframes or animation paths, such as delete_keyframe or create_animation_path.
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 like delete_keyframe for selective removal. It does not mention prerequisites (e.g., object must have animation) or when not to use it, leaving the agent to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_geometry_nodesB
Connect two nodes in a geometry nodes modifier's node group.
Args: modifier_name: Name of the geometry nodes modifier. from_node: Name of the source node. from_socket: Index of the output socket on the source node. to_node: Name of the destination node. to_socket: Index of the input socket on the destination node.
Returns: Confirmation dict with connection details.
| Name | Required | Description | Default |
|---|---|---|---|
| to_node | Yes | ||
| from_node | Yes | ||
| to_socket | Yes | ||
| from_socket | Yes | ||
| modifier_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description must disclose effects; it only says 'connect two nodes' without detailing constraints (socket compatibility, overwriting existing connections, permanent modification).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus clean Args list; main purpose stated upfront, no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers basic purpose and parameter definitions; lacks context on valid values, error handling, and behavioral expectations despite having an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%; description clarifies that from_socket/to_socket are indices, but does not specify ranges or how to obtain them. Basic meaning added, but not rich.
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 action ('connect two nodes'), the specific resource ('in a geometry nodes modifier's node group'), and distinguishes from siblings like add_geometry_node (which adds nodes) and get_node_tree (which retrieves the tree).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use versus alternatives, prerequisites (e.g., existing node group, modifier), or conditions under which connection is valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_shader_nodesC
Connect two shader nodes in a material's node tree.
Args: material_name: Name of the material. from_node: Name of the source node. from_socket: Name of the output socket on the source node. to_node: Name of the destination node. to_socket: Name of the input socket on the destination node.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| to_node | Yes | ||
| from_node | Yes | ||
| to_socket | Yes | ||
| from_socket | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose whether existing connections are overwritten, socket compatibility checks, error handling, or side effects. The return value is vaguely 'Confirmation dict' without structure.
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 short and structured with a clear one-line summary and docstring arguments. However, the docstring is somewhat redundant with the initial sentence. Still, it is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 required parameters and no schema descriptions, the description is too brief. It lacks information on error conditions, return value details, and prerequisites. The tool's complexity is not fully 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?
Input schema has 0% description coverage. The docstring repeats parameter names (e.g., 'material_name: Name of the material.') but adds no meaningful detail about valid values, format, or constraints beyond the schema's title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Connect' and resource 'shader nodes in a material's node tree'. It distinguishes from siblings like 'add_shader_node' (adds nodes) and 'disconnect_shader_nodes' (disconnects).
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. Missing prerequisites such as nodes must exist, sockets must be compatible, or that the material must be created first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_curve_to_meshC
Convert a curve object to a mesh object.
Args: curve_name: Name of the curve object to convert.
Returns: Dict with the converted object name.
| Name | Required | Description | Default |
|---|---|---|---|
| curve_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, so the description must convey behavioral traits. It does not disclose whether the conversion is destructive, if the original curve remains, or any side effects. The return description is vague ('Dict with the converted object name').
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 short and front-loaded with the main action. However, it omits critical usage and behavioral details, so it is not fully earning its place despite its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple conversion with one parameter and an output schema, the description should cover what happens to the original object, selection state, or error conditions. It does not, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description for parameter 'curve_name' simply restates its name ('Name of the curve object to convert') with no additional meaning beyond the schema's title and type. With 0% schema coverage, it adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Convert a curve object to a mesh object,' which is a specific verb+resource pair. It distinguishes the tool from siblings like 'convert_object' by specifying the exact conversion type. This is a precise purpose statement.
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 (e.g., 'convert_object') or what prerequisites are required (e.g., object must be a curve). The description lacks any contextual hints for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_objectC
Convert an object to a different type.
Args: object_name: Name of the object to convert. target: Target type. One of: MESH, CURVE, SURFACE, META, FONT, CURVES, POINTCLOUD, GPENCIL.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | MESH | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says the return is a 'Confirmation dict,' but it does not disclose whether conversion is destructive, whether it replaces the original object, what data may be lost, or what side effects occur.
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 short and front-loads the core purpose before a structured Args/Returns block. It is efficient, though the 'Returns: Confirmation dict' line is somewhat redundant given the output 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?
For a conversion tool with no annotations, the description is incomplete about behavioral effects such as whether the original object is modified or replaced. The output schema covers return values, but key mutation and safety context 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?
Schema description coverage is 0%, and the description adds little beyond the schema. The allowed target values it lists are already present as an enum, and `object_name` is described only as 'Name of the object to convert' with no further detail. It does not mention the default target of MESH or clarify required versus optional arguments.
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 first sentence states a specific verb and resource: 'Convert an object to a different type.' It is clear what the tool does, but it does not differentiate from the sibling `convert_curve_to_mesh`, which is a more specific conversion 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 description provides no guidance on when to use this tool versus alternatives such as `convert_curve_to_mesh` or `create_curve`. It also omits any prerequisites or exclusions for performing a conversion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_animation_pathB
Make an object follow a path (curve) using a Follow Path constraint.
Args: object_name: Name of the object to animate along the path. path_object: Name of the curve object to use as the path.
Returns: Confirmation dict with constraint details.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| path_object | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only states the tool creates a Follow Path constraint and returns a confirmation dict. It does not reveal potential side effects (e.g., whether keyframes are added, if existing constraints are affected, or if the object's transform changes).
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: one sentence for purpose, followed by Args and Returns sections. No unnecessary words, and the main action is front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool simplicity (2 params, no annotations) and that an output schema exists, the description is adequate but not thorough. It explains the core function but omits details like whether the path must be a curve type, or that the Follow Path constraint requires additional setup (e.g., keyframes for offset).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides brief explanations for both parameters in the Args section, adding meaning beyond the property names. Schema description coverage is 0%, so the description partly compensates. However, it lacks details on type validation (e.g., must be existing objects) or formatting.
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 makes an object follow a path using a Follow Path constraint. It specifies the action (Make an object follow a path) and the resource (object and path curve). This is distinct from sibling tools like 'add_constraint' or 'insert_keyframe', which are more general.
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 alternatives like 'add_constraint' or other animation tools. No prerequisites, exclusions, or context for use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_annotationA
Create a new annotation data block.
Annotations are viewport overlays used for drawing marks, notes, and guides. Unlike Grease Pencil objects, annotations are not positioned in 3D space.
Args: name: Optional name for the annotation. Auto-generated if empty.
Returns: Dict with the created annotation's name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the name is optional and auto-generated, and clarifies annotations are not 3D objects. However, it does not mention side effects, permissions, or limitations (e.g., maximum count, persistence). Adequate for a simple creation tool but not fully 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 concise with a clear structure: purpose sentence, explanatory paragraph, then Args/Returns sections. Every sentence adds value; no redundant or irrelevant information. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description sufficiently covers purpose, parameter, and return value. It lacks details on how the annotation interacts with other tools (e.g., layers, strokes) but that may be handled by sibling tool descriptions. Slightly incomplete but adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so the description must compensate. It explains the 'name' parameter: optional, auto-generated if empty. This adds meaningful context beyond the schema, helping the agent understand the parameter's purpose and behavior.
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 an annotation data block, explains it as viewport overlays for marks/notes/guides, and distinguishes it from Grease Pencil objects. This is a specific verb+resource with good context and differentiation from sibling tools like add_annotation_layer.
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 explains what annotations are and how they differ from Grease Pencil, but it does not explicitly state when to use this tool versus alternatives like add_annotation_layer or add_annotation_stroke. No guidance on prerequisites or non-use cases. Adequate but lacks explicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_armatureA
Create a new armature object.
Args: name: Name for the armature. Defaults to "Armature". location: XYZ position for the armature. Defaults to origin.
Returns: Dict with the created armature's name and location.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Armature | |
| location | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only states creation without disclosing behavioral traits such as scene context, naming conflicts, or side effects. This is minimal 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 concise with two sentences plus a structured Args/Returns block. Every sentence adds value, and the essential 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 simple creation tool with an output schema mentioned, the description is largely complete. It explains parameters and return format, but could mention the scene context or default object behavior.
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 0% description coverage, but the tool description provides parameter explanations (name and location) with defaults and meanings, adding significant value beyond the schema's type-only definitions.
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 a new armature object', using a specific verb and resource. It distinguishes from sibling create_ tools by naming the object type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit when-to-use or when-not-to-use guidance. It implies usage only for creating armatures but lacks comparisons to alternatives like parent_mesh_to_armature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cameraA
Create a new camera in the scene.
Args: name: Name for the camera, default "Camera". location: XYZ location as [x, y, z], default [0, 0, 0]. rotation: XYZ Euler rotation in radians as [x, y, z], default [0, 0, 0]. lens: Focal length in mm, default 50.
Returns: Confirmation dict with camera name and properties.
| Name | Required | Description | Default |
|---|---|---|---|
| lens | No | ||
| name | No | Camera | |
| location | No | ||
| rotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It only states creation and parameter details, missing prerequisites, side effects (e.g., overwriting existing cameras), or return behavior beyond a confirmation dict.
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 Args and Returns sections. However, the Args list partially duplicates parameter names from the schema, making it slightly verbose. Still clear and organized.
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 4 parameters and no annotations, the description covers parameter semantics and return type. Missing context includes which scene the camera is added to, potential errors, or updates to the active camera. Adequate but not comprehensive.
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%, but the description compensates fully by explaining each parameter with defaults and units (e.g., 'XYZ Euler rotation in radians', 'Focal length in mm'). This adds significant meaning beyond the empty 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 'Create a new camera in the scene' with a specific verb and resource. It distinguishes from sibling tools like create_light or create_object by specifying 'camera'.
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 creating cameras but provides no explicit when-to-use or when-not-to-use guidance, nor does it compare with alternatives like set_camera_property.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionA
Create a new collection, optionally nested under a parent collection.
Args: name: Name for the new collection. parent: Optional name of parent collection to nest under. Empty string uses the scene's root collection.
Returns: Dict with the created collection's name and parent.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| parent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It states the tool creates a collection and optionally nests it, but does not disclose potential side effects (e.g., behavior if parent doesn't exist) or permission requirements. Minimal but not misleading.
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, with a one-sentence summary followed by structured Args and Returns sections. Every part earns its place, no superfluous 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?
Given the tool's simplicity, the description covers creation, nesting, parameters, and return value. The output schema is present, so return format is handled. Complete for an 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?
Both parameters are explained: 'name' is the new collection's name, 'parent' is optional and defaults to root. This adds meaning beyond the schema, which only has types and defaults. Schema coverage is 0%, so description compensates well.
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 a new collection, optionally nested under a parent collection.' It identifies the specific action (create) and resource (collection), and distinguishes from siblings like 'delete_collection' or 'move_to_collection'.
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 explains the optional nesting feature, providing clear context for when to use this tool. However, it does not explicitly mention when not to use it or name alternatives like 'move_to_collection' for existing collections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_curveC
Create a new curve object.
Args: type: Curve type - BEZIER, NURBS, or PATH. name: Optional name for the curve object. location: 3D location as (x, y, z).
Returns: Dict with created curve name and type.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| type | No | BEZIER | |
| location | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It signals a write operation via 'Create' but says nothing about side effects: which collection the curve lands in, whether it becomes the active/selected object, or whether any existing state is touched. The Args/Returns text is documentation of structure, not behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and the docstring-style Args/Returns block is compact. The Returns section is mildly redundant given an output schema exists, but nothing is bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return description is not strictly needed, and parameters are covered by the description. But for a mutation tool with zero annotations, the description omits the context an agent needs to call it correctly — target collection, mode requirements, and post-creation selection state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names all three parameters and gives meaning for each (type enum choices, optional name, location as x/y/z), which adds real value over the bare schema. It stops short of edge cases such as whether location is absolute or relative to the cursor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new curve object'), which is unambiguous on its own. However, in a sibling set that includes create_object, create_text, and convert_curve_to_mesh, the description does nothing to distinguish when a curve rather than a generic object is wanted.
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 when-to-use guidance, no prerequisites (e.g. object mode vs edit mode, required scene/collection), and no routing to alternatives such as create_object or convert_curve_to_mesh. The agent must infer all selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_geometry_nodesA
Create a Geometry Nodes modifier on an object.
Args: object_name: Name of the object to add the modifier to. name: Name for the geometry nodes modifier. Defaults to "GeometryNodes".
Returns: Dict with modifier name and node group name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | GeometryNodes | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden but only states the basic action and return value. It does not disclose potential side effects (e.g., creating a new node tree), failure conditions (e.g., object not found), or whether it replaces an existing modifier.
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, using a one-sentence purpose and clear parameter explanations. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no annotations, includes return description), the description covers the core functionality and param meanings adequately. However, it lacks mention of prerequisites like object existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains both parameters (object_name and name) with their purposes and default values, adding value beyond the schema which has 0% coverage. It compensates well for the missing 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 'Create a Geometry Nodes modifier on an object', specifying the verb and resource, which effectively distinguishes it from siblings like add_modifier (generic) and add_geometry_node (adds node to node tree).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as add_geometry_node for adding nodes to an existing tree, or set_geometry_node_input for modifying inputs. Neither context nor exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lightB
Create a new light in the scene.
Args: type: Light type. One of: POINT, SUN, SPOT, AREA. name: Optional name for the light. location: XYZ location as [x, y, z], default [0, 0, 0]. energy: Light energy/power, default 1000. color: RGB color as [r, g, b], default [1.0, 1.0, 1.0].
Returns: Confirmation dict with light name and properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| type | Yes | ||
| color | No | ||
| energy | No | ||
| location | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It does state the return shape ('Confirmation dict with light name and properties'), which helps, but it never says which scene or collection the light lands in, whether it becomes selected/active, or what permissions are needed for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by a compact Args/Returns block; each line carries information. Slightly more boilerplate than necessary, but nothing wasted.
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 the Returns line is redundant rather than filling a gap. For a mutation tool with no annotations and no output-schema-based side-effect info, the description should say more about where the light is created and its default state, so it is 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?
Schema description coverage is 0%, so the description is the only source of parameter meaning — and it delivers: it enumerates all five parameters, the enum values for type, and the defaults for name, location, energy, and color. Minor gap is that it doesn't specify the length/format constraints on color and location beyond 'as [x, y, z]'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new light in the scene'), which is unambiguous and distinct from the many read/delete siblings. It does not, however, distinguish itself from the closely related create_light_rig, so an agent gets no explicit help choosing between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling create_light_rig as an alternative. The agent must infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_light_rigA
Create a pre-built lighting rig (multiple lights arranged for common setups).
Args: type: Rig type. One of: THREE_POINT, STUDIO, RIM, OUTDOOR. target: Optional name of the object the rig should point at. intensity: Overall intensity of the lights, default 1000.
Returns: Confirmation dict with names of all created lights.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| target | No | ||
| intensity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the operation creates multiple lights and returns their names, but says nothing about whether created lights are parented/grouped, whether an existing rig is replaced or duplicated, permissions, or reversibility (delete_light exists as the inverse).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by documented args and returns; the docstring structure is clean and every line contributes. Slightly verbose as a Google-style docstring for such a simple tool, but no wasted prose.
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 3-param creation tool with an output schema present, the description covers purpose, all param semantics, and the return shape, so the agent has what it needs to invoke correctly. It stops short only on behavioral edges (grouping, idempotency, replacement of existing rigs).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does well: it names the enum options (THREE_POINT, STUDIO, RIM, OUTDOOR), explains target as the object the rig points at, and gives the intensity default (1000). Minor gap: it doesn't state intensity units.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a pre-built lighting rig') and even parenthetically clarifies it makes multiple lights arranged for preset setups, which distinguishes it from the sibling create_light. An agent can immediately tell this composes a rig rather than a single light.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when/when-not guidance and no mention of alternative siblings (create_light, set_light_property, list_lights). The description never says when to prefer a pre-built rig over manually placing individual lights, so an agent must infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_materialC
Create a new material with a Principled BSDF shader node.
Args: name: Name for the new material.
Returns: Confirmation dict with the created material name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states it creates a material and returns a confirmation dict, but does not disclose what happens if the material name already exists, if it requires an active object, or any side effects. Since annotations are absent, the description should provide more 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 concise with a clear purpose sentence followed by a structured Args/Returns section. No unnecessary words, though the Args section is redundant with 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?
Despite having an output schema, the description lacks completeness for a creation tool. It does not mention duplicate handling, prerequisites, or impact on the scene, leaving significant gaps for an agent to use 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?
With 0% schema description coverage, the description adds minimal value beyond the parameter name: 'name: Name for the new material.' It does not provide constraints, format, 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 description clearly states 'Create a new material with a Principled BSDF shader node', providing a specific verb and resource, and distinguishes it from siblings like 'create_principled_material' by specifying the shader node type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool vs alternatives like 'assign_material' or 'create_principled_material'. There are no prerequisites or context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_objectA
Create a primitive object in the scene.
Args: type: Primitive type. One of: CUBE, SPHERE, UV_SPHERE, ICO_SPHERE, CYLINDER, CONE, TORUS, PLANE, CIRCLE, MONKEY, EMPTY. name: Optional name for the object. Auto-generated if empty. location: XYZ position as a 3-element list/tuple. Defaults to origin. rotation: XYZ Euler rotation in radians as a 3-element list/tuple. scale: XYZ scale as a 3-element list/tuple. Defaults to (1,1,1).
Returns: Dict with the created object's name, type, and location.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| type | Yes | ||
| scale | No | ||
| location | No | ||
| rotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose useful traits: name is auto-generated when empty, and each transform parameter has a default. However, it says nothing about where the object lands (active collection?), whether it becomes selected/active, error behavior on invalid enums, or whether the operation is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by compact Args/Returns blocks. The enum listing is slightly redundant with the schema but keeps the description self-contained, and no sentence is wasted.
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 the Returns section is somewhat redundant, though harmless. For a 5-param mutation tool with no annotations, the description is nearly complete; only the side effects of creation (selection state, target collection) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it gives units for rotation (radians), the required shape/format for vector params ('3-element list/tuple'), defaults for location and scale, and the meaning of an empty name. This adds real meaning beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a primitive object in the scene') and the 'primitive' qualifier distinguishes it from sibling creators like create_text, create_curve, create_armature, or create_polygon_prism. An agent can identify this as the entry point for adding generator-based primitives without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description (this is the tool for adding a primitive), but there is no explicit when/when-not guidance and no sibling is named. With dozens of create_* siblings in the list, a sentence like 'use create_text/create_curve for non-primitive geometry' would have materially helped routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_polygon_prismA
Create an N-sided regular prism (polygon-based cylinder).
Useful for hex sockets, octagonal columns, triangular prisms, or any straight-sided geometry where a 32-sided round cylinder is the wrong primitive. For a hex socket cutter on an M3 button-head screw, use sides=6.
Args: sides: Number of sides for the polygon base. Range: 3-64. radius: Circumscribed radius (center to vertex). Must be > 0. depth: Height of the prism along its Z axis. Must be > 0. name: Optional name for the object. Auto-generated if empty. location: XYZ position as a 3-element list/tuple. Defaults to origin. rotation: XYZ Euler rotation in radians as a 3-element list/tuple. scale: XYZ scale as a 3-element list/tuple. Defaults to (1,1,1).
Returns: Dict with the created object's name, type, location, and sides.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| depth | No | ||
| scale | No | ||
| sides | Yes | ||
| radius | No | ||
| location | No | ||
| rotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the tool creates a prism with specified parameters and returns object info, but doesn't disclose side effects (e.g., whether it modifies existing objects) or permissions. Adequate but not exhaustive.
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 clear sections for args and returns. Every sentence serves a purpose, including practical examples. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 7 parameters and the presence of an output schema, the description covers the core functionality, parameter meanings, and return value. It lacks error conditions or constraints beyond ranges, but it is sufficiently complete for typical 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?
Schema description coverage is 0%, but the description compensates by explaining each parameter: sides (range 3-64), radius (>0), depth (>0), name (optional), location (XYZ), rotation (XYZ radians), scale (XYZ). This adds meaning 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 'Create an N-sided regular prism' and gives concrete examples like hex sockets and octagonal columns. It distinguishes from round cylinders, making the tool's purpose very specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage scenarios (e.g., 'for a hex socket cutter on an M3 button-head screw, use sides=6') and contrasts with round cylinders. However, it does not explicitly exclude alternative tools or describe when not to use it, leaving room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_principled_materialA
Create a fully configured Principled BSDF material in one call.
Args: name: Name for the new material. color: Base color as RGBA list, default [0.8, 0.8, 0.8, 1.0]. metallic: Metallic value 0.0-1.0, default 0.0. roughness: Roughness value 0.0-1.0, default 0.5. specular: Specular IOR level 0.0-1.0, default 0.5. emission_strength: Emission strength, default 0.0. emission_color: Emission color as RGBA list, default [1.0, 1.0, 1.0, 1.0]. alpha: Alpha value 0.0-1.0, default 1.0. transmission: Transmission weight 0.0-1.0, default 0.0. ior: Index of refraction, default 1.45.
Returns: Confirmation dict with material name and all set properties.
| Name | Required | Description | Default |
|---|---|---|---|
| ior | No | ||
| name | Yes | ||
| alpha | No | ||
| color | No | ||
| metallic | No | ||
| specular | No | ||
| roughness | No | ||
| transmission | No | ||
| emission_color | No | ||
| emission_strength | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses all parameters, defaults, and ranges, and states the return format. However, it does not mention side effects (e.g., whether it replaces an existing material, whether it is added to a specific object, or if it requires an active object). Basic transparency is present but missing behavioral context beyond the parameters.
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 as a concise docstring with first-line summary, Args section, and Returns section. While the Args list repeats parameter information already in the schema, it is justified given 0% schema coverage. The first sentence effectively front-loads the purpose. Minor redundancy with schema titles is acceptable.
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 10 parameters, no annotations, but an output schema, the description explains all parameters and return format. However, it omits important context such as whether the material is automatically assigned to an object, whether it replaces existing materials, or if there are prerequisites like an active mesh object. This leaves the agent needing to infer missing usage requirements.
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 systematically lists each parameter with default values, ranges, and semantic explanations (e.g., 'metallic: Metallic value 0.0-1.0', 'transmission: Transmission weight'). This adds meaning beyond the schema titles and types, though could be slightly more explicit about the color list format (e.g., RGBA values between 0 and 1).
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 a fully configured Principled BSDF material in one call,' using a specific verb (create) and resource (Principled BSDF material). Among sibling tools like 'create_material', this distinguishes itself by specifying the shader model and the 'fully configured' aspect.
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 creating a Principled BSDF material but does not explicitly state when to use this tool versus alternatives like 'create_material' or 'assign_material'. No when-not-to-use guidance or context about prerequisites (e.g., needing an active object with a material slot) is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_procedural_materialA
Build a complete procedural texture as a material, in one call.
Prefer this over hand-wiring texture nodes. It creates the full graph — coordinates, mapping, the pattern's texture nodes, a tuned colour ramp, and the Principled BSDF — and returns the node names so you can adjust anything afterwards with set_shader_node_input or the colour ramp tools.
Procedural beats image textures here: no files, no UV unwrap needed, and it stays sharp at any camera distance.
Call list_procedural_patterns() to see what each pattern looks like.
Args: name: Name for the new material. pattern: One of the supported patterns, e.g. 'fire', 'wood', 'veins'. scale: Feature size. Lower is bigger and broader, higher is finer and busier. 5.0 is a sensible default; try 1-3 for large forms and 20+ for fine detail. detail: Fractal octaves, 0-15. Higher adds finer sub-detail at the cost of render time. Applies to noise, cloud, wood, marble, plasma and fire. The cellular patterns (voronoi, veins, scales, sparks), stripes, weave and gradient have no detail socket and ignore it. distortion: Warps the pattern. Small values (0.5-2.0) make wood and marble look organic rather than machine-perfect. Applies to noise, cloud, stripes, wood, marble, plasma and fire. The cellular patterns, weave and gradient ignore it. roughness: Surface roughness 0-1 for the Principled BSDF. metallic: Metallic 0-1 for the Principled BSDF. colors: Optional list of RGB or RGBA colours for the ramp, in order. Omit to use the pattern's own tuned palette. banded: Use CONSTANT ramp interpolation, giving hard-edged bands instead of smooth blending. Turns noise into discrete regions: scale plates, cracked mud, cel shading. connect_to_bsdf: Wire the result into the Principled BSDF base colour so the material renders immediately. Set False to leave the pattern subtree unconnected for manual wiring.
Returns: Dict with the material name, the created node names, and ignored_params listing any arguments this pattern could not use.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| scale | No | ||
| banded | No | ||
| colors | No | ||
| detail | No | ||
| pattern | Yes | ||
| metallic | No | ||
| roughness | No | ||
| distortion | No | ||
| connect_to_bsdf | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses the created graph, the return value (including ignored_params), and connectivity behavior. It explains which parameters affect which patterns and provides practical examples.
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 and informative, though slightly lengthy; however, every sentence adds value, and the parameter list is necessary given the lack of schema descriptions.
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 and the presence of an output schema (implied by the return dict description), the description covers all necessary aspects: purpose, usage, parameter behaviors, and return values, leaving no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds thorough meaning for all 10 parameters, including defaults, ranges, pattern-specific behavior, and visual effects like banding and scale suggestions.
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 builds a complete procedural texture as a material in one call, distinguishes it from hand-wiring and image textures, and compares favorably to siblings like create_material and create_principled_material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly prefers this over hand-wiring, explains when procedural beats image textures, and suggests calling list_procedural_patterns() to see available patterns. It also details parameter applicability per pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_raster_textureA
Generate an image texture for patterns shader nodes cannot express.
Use this only for patterns that place discrete marks. Shader nodes evaluate a function per point and have no way to say "draw a glyph here, then another over there", so runes need real pixels. Everything else should go through create_procedural_material, which stays sharp at any resolution.
The image is packed into the blend file. No file is written to disk.
Args: name: Name for the generated image datablock. pattern: A raster pattern. Currently 'runes'. size: Pixel width and height, up to 2048. Cost grows with the square. count: How many marks to stamp. 0 leaves a blank field. seed: Change for a different arrangement; the same seed always reproduces the same image. foreground: RGB or RGBA colour of the marks. background: RGB or RGBA colour behind them.
Returns: Dict with the image name, size, and mark count.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| seed | No | ||
| size | No | ||
| count | No | ||
| pattern | Yes | ||
| background | No | ||
| foreground | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavioral traits: explains why shader nodes fail, that image is packed in blend file, cost scales quadratically with size, seed reproducibility, and blank field when count is 0.
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-structured with a clear title sentence, usage context, then a clean args list. Every sentence adds value without redundancy. Highly efficient use of space.
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 no annotations but an output schema described, the description covers all necessary context: use case, limitations, parameter details, side effects, and return value. No gaps remain.
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 comprehensively explains all 7 parameters, adding details like 'runes' for pattern, max size 2048, cost scaling, blank field for count=0, seed reproducibility, and RGBA for colors.
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 image textures for patterns shader nodes cannot express, specifically for discrete marks like runes. It distinguishes from create_procedural_material by explaining the fundamental limitation of shader nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use and when-not-to-use guidance, naming the alternative tool create_procedural_material for non-discrete patterns. Also notes that the image is packed into the blend file and no file is written to disk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sceneB
Create a new scene.
Args: name: Name for the new scene.
Returns: Confirmation dict with the created scene name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions a return value but does not disclose what happens if the scene already exists, default settings, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, with no wasted words. However, the use of an Args/Returns style is slightly non-standard for MCP tool descriptions.
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 only one parameter and an output schema exists (not shown), so the description is somewhat complete. However, missing behavioral details like response to duplicates or constraints reduce 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%, but the description adds minimal meaning by stating 'name: Name for the new scene.' This partially compensates but lacks details like validation rules or formatting.
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 a new scene.' with a specific verb and resource. It distinguishes from sibling tools like delete_scene, list_scenes, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when not to use it, or comparison with related tools like create_object.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_textA
Create a 3D text object.
Args: text: The text string to display. name: Optional name for the text object. location: 3D location as (x, y, z). size: Font size. font: Optional path to a font file. Uses default Blender font if empty.
Returns: Dict with created text object name.
| Name | Required | Description | Default |
|---|---|---|---|
| font | No | ||
| name | No | ||
| size | No | ||
| text | Yes | ||
| location | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description mentions a return dict and default font behavior but doesn't disclose side effects or prerequisites like required mode.
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 Args and Returns sections, though each sentence is necessary; no 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?
Covers parameters and return value but lacks details on object placement (e.g., active collection) and return key name; adequate for a simple 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?
With 0% schema coverage, the description adds meaningful explanations for each parameter, such as clarifying that location is a 3D tuple and font uses Blender default if empty.
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 a 3D text object' with a specific verb and resource, distinguishing it from siblings like 'create_object' or 'create_curve'.
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 explains each parameter but lacks guidance on when to use this tool versus alternatives such as 'create_object' or 'create_curve'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_threaded_shaftA
Create a cylindrical shaft with helical external threads.
Produces a single mesh object — a threaded rod at the given diameter and length, with helical thread ridges following the specified pitch. Suitable for boolean-union onto a screw-head or direct use as a threaded fastener.
Thread geometry: a 60-degree V profile swept along a Z-axis helix via the Screw modifier.
Args: diameter: Major diameter of the shaft (outer thread peaks). Must be > 0. length: Axial length of the shaft (under-head length, like real fastener spec). Must be > 0. pitch: Distance between thread peaks along the axis. Must be > 0 and <= length. thread_depth: Radial depth of the thread (major radius - minor radius). If 0 (default), auto-computed as pitch * 0.54. segments: Rotational resolution of the helix (steps per revolution). Range: 3-256. Higher = smoother helix, more geometry. thread_runout: Smooth (unthreaded) region at the top of the shaft. Defaults to 0 (full-length threads) — gives the strongest print because threads under the head form a continuous stress path. Leaving a smooth runout creates a thin-walled neck at minor_r that snaps under torque in FDM prints. Pass a positive value only if a head's deep hex socket would otherwise reach thread peaks. name: Optional name for the object. Auto-generated if empty. location: XYZ position of the shaft base as a 3-element list/tuple.
Returns: Dict with the created object's name, diameter, length, pitch, and the number of thread iterations actually generated.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| pitch | Yes | ||
| length | Yes | ||
| diameter | Yes | ||
| location | No | ||
| segments | No | ||
| thread_depth | No | ||
| thread_runout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations exist, the description fully bears the disclosure burden. It explains that the tool produces a single mesh object, uses a Screw modifier, auto-computes thread depth, and includes a warning about thread_runout effects on print strength, providing useful 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: starts with a clear one-line purpose, followed by technical details, a formatted argument list, and return value. Every sentence adds value without redundancy, and front-loads key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters and no annotations or schema descriptions, the description covers return values, geometry details, and constraints. It could mention the workspace context (e.g., active object, scene), but overall it provides sufficient completeness for an agent to use 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?
With 0% schema description coverage, the detailed 'Args' section in the description adds significant meaning: constraints, auto-computation formulas, ranges, and defaults are explained, fully compensating 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 creates a cylindrical shaft with helical external threads, using specific verbs and resource. It distinguishes itself from sibling tools (which are general modeling operations) by focusing on threaded fasteners.
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 indicates the tool is suitable for boolean-union onto a screw-head or direct use as a threaded fastener, providing context for when to use it. It does not explicitly mention alternative tools, but the unique function is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decimate_meshA
Reduce a mesh's polygon count, collapsing edges to hit a target.
The counterpart to subdivision: an agent that has stacked Subdivision modifiers has otherwise no way back down, and a dense mesh slows every later operation.
Args: object_name: Name of the mesh object to simplify. ratio: Fraction of faces to keep, between 0 and 1. 0.5 halves the face count. 1.0 keeps everything and is refused as a no-op.
Returns: Dict with the face count before and after.
| Name | Required | Description | Default |
|---|---|---|---|
| ratio | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does useful work here: it names the mechanism (edge collapse), and discloses the non-obvious refusal of ratio=1.0 as a no-op. It omits whether the original topology is recoverable/undoable and whether the object must be in a particular mode, which matters for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in sentence one, followed by a short rationale, then Args/Returns. The rationale paragraph is slightly padded, and the Returns block partly duplicates the output schema, but nothing is genuinely wasted.
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 two-param mutation tool with an output schema, the description covers purpose, parameters, and one key refusal behavior. The remaining gap is operational prerequisites (target mode, whether modifiers are applied, undo semantics), which an agent would otherwise have to guess.
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 document both params, and it does: object_name is identified as the target mesh, and ratio is defined as the fraction of faces to keep with a worked example (0.5 halves) and a boundary rule (1.0 is refused). This fully compensates for the empty 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?
States a specific verb and resource ('Reduce a mesh's polygon count, collapsing edges to hit a target') and explicitly positions itself against a sibling ('The counterpart to subdivision'), so an agent can tell it apart from subdivide_mesh and remesh without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to reach for it: after stacking Subdivision modifiers, when a dense mesh is slowing later operations. It stops short of naming a concrete alternative (e.g. remesh) or stating when-not-to-use, so it is strong but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_collectionB
Delete a collection.
Args: collection_name: Name of the collection to delete. delete_objects: If True, also delete all objects in the collection. If False, objects are unlinked but kept in the scene.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| delete_objects | No | ||
| collection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a genuinely important behavioral trait: delete_objects=True destroys contained objects, while False unlinks them and keeps them in the scene, and it states the return is a confirmation dict. It is silent on permissions, nested-collection behavior, and whether deletion is undoable, which are meaningful gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the purpose, and every substantive sentence earns its place. The docstring scaffolding ('Args:', 'Returns:') is mild structural noise but does not obscure the 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?
An output schema exists, so return-value detail is legitimately omitted, and the key destructive semantics of delete_objects are covered. For a mutation tool with zero annotations, however, the description should also address nested collections, permission requirements, or failure modes to be 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 0%, so the description must compensate, and it largely does: it names both parameters and gives the non-obvious semantics of delete_objects (delete vs. unlink while preserving objects in the scene). collection_name is only restated, and there is no note on error behavior when the name doesn't 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 states a specific verb and resource ('Delete a collection'), which is unambiguous about what the tool does. It does not, however, distinguish itself from siblings like delete_object, delete_material, or delete_scene beyond the resource name. Clear but no sibling differentiation.
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 such as create_collection, move_to_collection, or delete_object, nor any prerequisite or caution about irreversibility. The parameter semantics are explained, but not the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_keyframeA
Remove a keyframe from an object property at a specific frame.
Args: object_name: Name of the object. data_path: Property data path (e.g., location, rotation_euler, scale). frame: Frame number of the keyframe to remove.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes | ||
| data_path | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden but only states the basic action and return type. It does not disclose behavior for missing keyframes, invalid parameters, or side effects beyond deletion.
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 short, well-structured with bullet-like args and a returns line, containing no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with 3 parameters and an output schema, the description covers the essentials. It lacks error handling or prerequisite info but is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by providing brief explanations for each parameter and examples for 'data_path' (e.g., location, rotation_euler). This adds meaning beyond the schema titles.
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 'Remove a keyframe from an object property at a specific frame' uses a specific verb (Remove) and clearly identifies the resource (keyframe), distinguishing it from siblings like insert_keyframe (add) and list_keyframes (list).
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 like clear_animation (which removes all keyframes). The description lacks context for preferred usage or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_lightC
Delete a light object from the scene.
Args: object_name: Name of the light object to delete.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It confirms a confirmation dict is returned but says nothing about whether deletion is permanent/undoable, what happens to lights referenced by rigs or scenes, or what error occurs if object_name is invalid — significant gaps for a destructive mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded: the destructive action is stated first, followed by an Args/Returns block. The Returns line adds little since an output schema exists, but overall there is minimal waste.
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?
Because an output schema exists, the description need not explain the return value, and the single parameter is covered. The main gap is the absence of annotations combined with no disclosure of destructiveness or failure behavior, which is thin for a delete 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 0%, but there is only one parameter and the description documents it ('Name of the light object to delete'), which compensates for the missing schema description. It adds no format or naming-convention detail beyond that, so it is adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a light object from the scene'), which distinguishes it from broad siblings like delete_object and delete_material. However it never explicitly names or contrasts with those siblings, so the differentiation is inferred rather than stated.
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 no guidance on when to use this tool versus delete_object (generic) or other deletion siblings, nor any prerequisites or conditions. The agent must infer that this is the light-specific variant from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_materialC
Delete a material by name.
Args: material_name: Name of the material to delete.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states that the tool deletes a material, but does not disclose consequences (e.g., impact on objects using the material, reversibility, permissions needed). This is insufficient for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded. It conveys the core operation in one sentence and adds structured Args/Returns. It could include a bit more detail without losing conciseness, but 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 simplicity of the tool (1 param, output schema present), the description covers the basics. However, it lacks behavioral context for a delete operation. The presence of an output schema mitigates the need to describe return values, but the missing behavioral transparency reduces 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%, so the description must compensate. It names the parameter 'material_name' and says it is the name of the material to delete. While this adds basic context, it does not provide format or constraints beyond what the schema already conveys (type string, required). Adequate for a single simple parameter.
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 'Delete a material by name', specifying the verb and resource. It distinguishes from other delete tools (e.g., delete_object) but does not explicitly differentiate from other material operations like 'assign_material' or 'set_material_property'.
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. There is no mention of prerequisites, conditions, or when not to use it. The agent is left to infer that it's for deleting materials from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_objectC
Delete an object from the scene by name.
Args: object_name: Name of the object to delete.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It mentions deletion and returning a confirmation dict, but does not disclose critical traits such as whether the deletion is permanent, whether it can be undone, what permissions are required, or any side effects. This is a significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main action, followed by structured Args and Returns sections. It is efficient, though the Args section adds little beyond the obvious, and the Returns section is brief but appropriate given the 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?
For a simple deletion tool with no annotations and a single undocumented parameter, the description is incomplete. It omits behavioral details (reversibility, permissions, side effects) that are essential for safe invocation, and the parameter lacks any format guidance. The presence of an output schema only means return values need not be explained.
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 restates the parameter name ('Name of the object to delete') without adding format details, case sensitivity, or constraints. This minimal clarification does little beyond the schema's title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (delete) and resource (object) with scope (from the scene by name). It clearly identifies what the tool does, but does not explicitly differentiate itself from sibling delete operations (e.g., delete_material, delete_light) in the text. The resource name alone carries the differentiation.
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, no prerequisites, and no exclusions. It merely states what the tool does, leaving the agent to infer context from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_particle_systemA
Remove a particle system from an object.
Args: object_name: Name of the object. particle_system_name: Name of the particle system to remove. If empty, removes the first particle system.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| particle_system_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the destructive action of removal and the special case of removing the first system when name is empty. However, lacks details on irreversibility, permissions, or side effects, and there are no annotations to contradict.
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 lines with clear Args and Returns sections. Every sentence adds value, no 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?
Adequately covers a simple deletion tool with output schema mentioned. Could elaborate on confirmation dict content, but output schema likely fills that 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?
Adds meaning beyond schema by explaining that an empty particle_system_name removes the first system. Both parameters are described, compensating for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Remove a particle system from an object', using a specific verb and resource. It distinguishes from siblings like add_particle_system and set_particle_rendering by focusing on deletion.
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 vs alternatives. It implies usage for deleting particle systems but doesn't mention when not to use or provide context like prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sceneB
Delete a scene by name.
Args: scene_name: Name of the scene to delete. Cannot delete the last remaining scene.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| scene_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the 'cannot delete the last remaining scene' precondition and that a confirmation dict is returned, but it says nothing about whether objects inside the scene are deleted or orphaned, whether the operation is reversible, or what errors look like.
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?
Short and front-loaded: the action is stated in the first sentence, followed by Args and Returns. The Args/Returns scaffolding is boilerplate but not wasteful here.
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-value explanation is unnecessary, and the last-scene constraint is captured. What is missing for a destructive, annotation-less tool is the consequence of deletion (effect on contained objects, irreversibility), leaving an agent under-informed about the blast radius.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it does at least describe scene_name as the name of the scene to delete and ties it to the delete constraint. But it adds no format/type details (e.g., exact-name matching, case sensitivity) beyond the field name itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (delete a scene by name), which clearly distinguishes it from the other delete_* siblings (delete_object, delete_material, delete_light) and from list_scenes/create_scene. It does not, however, explicitly contrast itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, no prerequisites, no mention of side effects on referenced scenes. The only context given is the constraint that the last remaining scene cannot be deleted, which is a precondition rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_shader_nodesB
Disconnect all links from a specific socket on a shader node.
Args: material_name: Name of the material. node_name: Name of the node. socket_name: Name of the socket to disconnect. is_input: If True, disconnect an input socket; otherwise an output socket.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| is_input | No | ||
| node_name | Yes | ||
| socket_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It fails to mention potential side effects, such as whether disconnecting all links affects other connected nodes, or if the operation is reversible. It only states the action and the return type, missing critical safety information.
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 purpose. The args list follows the schema structure, making it easy to parse. However, the args section is somewhat redundant and could be integrated more elegantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with four parameters and an output schema ('Returns confirmation dict'), the description provides enough context to understand the operation and return value. It covers the essential aspects without being overly verbose.
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, the description must compensate. It lists parameter names and basic meaning (e.g., 'Name of the material') but adds no format constraints, allowed values, or behavioral context. This adds minimal value over the schema structure itself.
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: 'Disconnect all links from a specific socket on a shader node.' It uses a specific verb ('Disconnect'), a resource ('shader node'), and a specific part ('socket'). This distinguishes it from related tools like connect_shader_nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. The purpose implies it should be used when you need to disconnect all links from a socket, but there is no mention of prerequisites, scenarios, or when not to use it. This is a minor gap given the simplicity of the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dissolve_edgesA
Dissolve all edges, merging adjacent faces.
Simplifies topology by removing unnecessary edge loops while preserving the overall shape.
Args: object_name: Name of the mesh object.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that edge loops are removed and the shape preserved, which implies a non-trivially reversible mutation, but omits mode/permission requirements, undo semantics, and any side effects on UVs, normals, or shape keys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the operation and outcome in two tight sentences, then uses labeled Args/Returns sections. Efficient, with only the wrap-around prose being slightly more than strictly needed.
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 2-parameter mesh-editing tool with an output schema present, both parameters are documented and return format can be deferred to the schema. The main gap is behavioral context (mode state, irreversibility) left uncovered in the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains object_name's role and fully defines selection ('ALL' for whole mesh vs 'CURRENT' for the existing selection) including its default, which is more than the bare enum in the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('dissolve all edges, merging adjacent faces') and adds the outcome ('simplifies topology by removing unnecessary edge loops while preserving the overall shape'). An agent can identify the operation, though it never contrasts itself with the closely named siblings dissolve_faces and dissolve_verts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives implied usage through the selection parameter ('Use the select_* tools to choose first') and spells out the ALL vs CURRENT behavior, but never says when to prefer dissolve_edges over dissolve_faces/dissolve_verts or what prerequisites (edit mode, active object) apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dissolve_facesA
Dissolve all faces, merging them into surrounding geometry.
Removes faces while keeping the surrounding mesh structure intact. Cleaner than deleting faces which leaves holes.
Args: object_name: Name of the mesh object.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key behavioral outcome (faces removed but surrounding mesh structure kept intact, unlike deletion which leaves holes) and what is returned ('Confirmation dict.'). It does not say whether the operation is reversible or what preconditions (e.g., manifold geometry, selection mode) apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then structured Args/Returns sections. The opening two sentences overlap slightly (merge scope vs. holes contrast), but each still earns its place and the whole thing is short.
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 two-parameter mesh operation with an output schema (so return values need no elaboration), the description covers purpose, parameter semantics, usage guidance, and behavioral contrast. Minor gap: no statement about prerequisites or reversibility on a destructive mesh edit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains both params — object_name as the mesh to act on, and selection as 'ALL' vs 'CURRENT' with the default and the prerequisite select_* step. This adds real meaning beyond the bare enum in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Dissolve all faces, merging them into surrounding geometry') and immediately distinguishes the operation from plain deletion ('Cleaner than deleting faces which leaves holes'). An agent can distinguish this from siblings like dissolve_edges, dissolve_verts, or separate_mesh without extra context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete guidance for the selection parameter: use the select_* tools to choose first when passing 'CURRENT', and default is 'ALL'. The contrast with deletion implies when to prefer this tool, but there is no explicit 'when not to use' or named alternative beyond the passing mention of deleting faces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dissolve_vertsA
Dissolve all vertices, merging connected edges and faces.
Removes vertices while preserving surrounding geometry.
Args: object_name: Name of the mesh object.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the key effect ('Removes vertices while preserving surrounding geometry'), which is useful, but says nothing about whether this is a destructive edit, mode requirements, or reversibility. Partial disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then structured Args and Returns sections. No wasted sentences, though the Args/Resturns scaffolding is slightly verbose for a two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description needn't explain returns, and parameters are covered. But for a mesh-mutating tool with zero annotations, it omits operational context (edit vs object mode, destructiveness) that an agent would need to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it defines object_name and fully explains the selection enum ('ALL' vs 'CURRENT'), its default, and the prerequisite select_* workflow. This adds meaning well beyond the bare enum 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 states a specific verb and resource ('Dissolve all vertices') and adds a clarifying mechanism ('merging connected edges and faces'), which separates it from generic dissolve tools. It does not explicitly name the sibling alternatives like dissolve_edges or dissolve_faces, but the vertex focus makes the target unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable guidance for the selection parameter ('Use the select_* tools to choose first'), which is a genuine usage hint. However, it never states when to prefer this over merge_vertices or the other dissolve_* tools, so the routing decision is left 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.
duplicate_materialB
Duplicate a material with a new name.
Args: material_name: Name of the material to duplicate. new_name: Name for the duplicated material.
Returns: Confirmation dict with the new material name.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It mentions duplication and return type but omits side effects, error conditions (e.g., non-existent material), and whether all properties are duplicated.
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 with two sentences for purpose and clearly formatted Args/Returns. Every part is necessary and 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 simple 2-parameter tool with an output schema, the description covers core operation and return value. Minor omissions about exact scope of duplication do not severely hinder understanding.
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 provides basic intent ('name of material to duplicate', 'name for duplicated material') but lacks constraints like uniqueness 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 identifies the action 'Duplicate' and the resource 'material', with the qualifier 'with a new name' distinguishing it from other material operations like create_material or assign_material.
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 (e.g., create_material) or when not to use it. The description only states what it does without contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_objectB
Duplicate an object.
Args: object_name: Name of the object to duplicate. linked: If True, create a linked duplicate (shares mesh data). Defaults to False.
Returns: Dict with the new object's name.
| Name | Required | Description | Default |
|---|---|---|---|
| linked | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully explains that 'linked=True' creates a linked duplicate sharing mesh data, which is behavior beyond the schema. It still omits side effects such as whether the original object is preserved, whether the duplicate becomes selected, or what happens if the named object does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and uses a clean Args/Returns structure with no wasted prose. The Returns line is somewhat redundant because an output schema exists, but the overall structure remains 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?
For a simple two-parameter duplication tool, the description covers both arguments, the linked-copy behavior, and the return value. It is nearly complete, though it lacks usage guidance and side-effect details that would matter in a larger object-manipulation workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does cover both parameters. The 'linked' argument receives a clear behavioral explanation and default value. The 'object_name' explanation is minimal and mostly restates the parameter name, so there is slight room for more detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Duplicate an object.' This is clear enough for an agent to understand the core operation. However, it does not differentiate this tool from nearby siblings like create_object or duplicate_material, leaving an agent to infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no prerequisites, and no alternatives. It only documents arguments and returns, so an agent receives no help deciding between duplicate_object, create_object, or duplicate_material.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_dyntopoA
Enable dynamic topology (dyntopo) for adaptive sculpting resolution.
Dyntopo adds and removes mesh detail dynamically as you sculpt, allowing unlimited detail where needed without uniform subdivision.
Args: object_name: Name of the mesh object (must be in sculpt mode or will enter it). detail_size: Detail level (smaller = more detail). Range: 0.1-500.0. detail_mode: Detail mode. One of: RELATIVE, CONSTANT, BRUSH, MANUAL.
Returns: Confirmation dict with dyntopo settings.
| Name | Required | Description | Default |
|---|---|---|---|
| detail_mode | No | RELATIVE | |
| detail_size | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose one important side effect — that it will enter sculpt mode automatically — and explains what dyntopo changes about the mesh (adds/removes detail dynamically). However, it does not say whether enabling it modifies existing geometry irreversibly, whether it requires an active object, or how it interacts with existing multires/subdivision, which matters for a mutation-style 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?
Front-loaded with the purpose, then a compact explanatory sentence, then structured Args and Returns blocks. The Returns section is somewhat redundant given an output schema exists, but overall the content is tight and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter sculpt-mode mutation with an output schema present, the description covers purpose, the auto-enter-sculpt-mode side effect, and all parameter semantics. Remaining gaps are reversibility/undo behavior and interaction with other subdivision modifiers, which would round it out but are not blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it names all three parameters, explains detail_size semantics ('smaller = more detail') with a numeric range, and enumerates the valid detail_mode values. It could go further by clarifying detail_size units or RELATIVE vs CONSTANT behavior, but it adds real meaning beyond the bare 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 a specific verb and resource ('Enable dynamic topology (dyntopo)') and adds a one-line explanation of what dyntopo does behaviorally, so the agent knows exactly what capability is being turned on. It doesn't explicitly contrast itself with near siblings like enter_sculpt_mode or set_sculpt_brush, 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?
The description gives a precondition ('must be in sculpt mode or will enter it') but no explicit when-to-use/when-not guidance or routing to alternatives such as set_sculpt_brush or remesh. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enter_sculpt_modeA
Enter sculpt mode for a mesh object.
Args: object_name: Name of the mesh object to sculpt.
Returns: Confirmation dict with object name and mode.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only states it enters sculpt mode and returns a confirmation, but does not disclose error behavior (e.g., if object is not a mesh) or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences structured as a docstring (Args and Returns). No superfluous 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?
For a simple tool with one parameter and an output schema, the description is adequate but lacks edge case handling and error messages. It meets minimum viability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning by stating 'Name of the mesh object to sculpt', which clarifies the parameter's purpose and 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 action 'enter sculpt mode' on a 'mesh object', with a specific verb and resource. It effectively distinguishes from the sibling 'exit_sculpt_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 guidance is provided on when to use this tool, prerequisites (e.g., object must be a mesh and exist), or when alternatives like 'enable_dyntopo' might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_blender_codeA
Execute Python code inside Blender's sandboxed environment.
The code runs in a restricted sandbox that blocks dangerous imports (os, subprocess, socket, etc.) and dangerous builtins (exec, eval, open). Safe Blender imports (bpy, bmesh, mathutils, math, json) are allowed.
Args: code: Python code to execute. bpy is available but must be imported.
Returns: Dict with 'output' (captured stdout) and 'success' boolean.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively discloses the sandbox restrictions, blocked imports, allowed imports, and return format. It provides sufficient behavioral context for an agent to understand safety and output.
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, with a front-loaded purpose sentence, followed by details on restrictions and input/output structure. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of executing arbitrary code, the description covers sandbox, allowed imports, and return structure. Minor omission of limits on execution time or output size, but overall complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'code' has no schema description (0% coverage), but the description adds meaning by stating it accepts Python code and noting that bpy must be imported. This compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes Python code in Blender's sandboxed environment. It distinguishes itself from over 100 sibling tools that perform specific operations, as it is the only one for arbitrary code 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?
The description implies usage for custom scripts but does not explicitly state when to choose this tool over dedicated Blender operation tools. It lacks direct guidance on alternative tools or specific use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exit_sculpt_modeA
Exit sculpt mode and return to object mode.
Returns: Confirmation dict with current mode.
| 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?
No annotations provided, so the description bears full burden. It describes the main behavior and return value, but does not mention potential failure conditions (e.g., if not currently in sculpt mode) or other side effects. Adequate 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?
Two sentences, no filler, front-loaded with the core action. Every sentence provides essential 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?
For a parameterless tool with an output schema, the description covers the action and return value. It could mention prerequisites or error handling, but overall it is mostly complete for a simple mode switch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and the input schema is empty with 100% coverage. Per guidelines, baseline score is 4 for zero parameters; description adds no extra parameter info, which is acceptable.
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 ('exit sculpt mode') and the target state ('return to object mode'), using a specific verb and resource. It distinguishes itself from siblings like 'enter_sculpt_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?
The description implies when to use the tool (when in sculpt mode and wanting to exit), but does not explicitly state prerequisites or alternatives. For a simple state transition, this is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_fileA
Export scene or selected objects to a 3D file.
Supports FBX, OBJ, GLTF/GLB, USD, STL, PLY, Alembic (ABC), Collada (DAE), SVG, and X3D formats.
Args: filepath: Absolute path for the export file. type: Optional format override. Auto-detected from extension if empty. selected_only: If True, export only selected objects. Defaults to False.
Returns: Dict with exported file path and format.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| filepath | Yes | ||
| selected_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the default for selected_only and the auto-detection behavior of type, which is genuinely useful, but it says nothing about overwriting an existing file, required permissions, or failure modes for an export that writes to disk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by formats, args, and return value, with zero filler. The Args/Returns scaffolding is standard but costs a few lines for only three parameters and could have been compressed.
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 single-required-parameter export tool with a sibling import_file and an output schema, the description covers scope, formats, argument behavior, and return shape adequately. Only the file-overwrite and error-handling semantics are unaddressed, a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description documents all three parameters meaningfully: filepath is an absolute path, type is an optional override auto-detected from extension, and selected_only defaults to False. The only slight redundancy is re-listing formats already present as the schema enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Export scene or selected objects to a 3D file') and enumerates the supported formats, so an agent immediately knows what the tool produces. It is cleanly distinguishable from siblings like import_file, save_file and render_image without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope clause ('scene or selected objects') rather than stated explicitly. There is no when-to-use/when-not guidance and no pointer to the natural alternatives (import_file, save_file), so the agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extrude_facesB
Extrude all faces of a mesh along their normals.
Args: object_name: Name of the mesh object. offset: Extrusion distance along face normals.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the geometric operation but says nothing about edit-mode requirements, whether it mutates in place, undo behavior, or permissions. For a mesh-mutating tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Uses clear Args/Returns structure with front-loaded purpose in the first sentence. Each line earns its place, though the Returns note is minimal and the format is slightly boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return value need not be explained. However, as a mesh-mutating tool with no annotations, the description omits the behavioral context (edit mode, side effects) an agent would want before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it largely does: it documents object_name, offset (extrusion distance), and explains the 'ALL'/'CURRENT' enum values plus the default. The enum meaning added here goes beyond the bare schema and meaningfully reduces ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Extrude all faces of a mesh along their normals'), which an agent can distinguish from related mesh ops like inset_faces or fill_faces without reading a schema. It lacks explicit sibling differentiation, so full marks are not warranted.
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 contextual guidance for the 'selection' option, noting that 'CURRENT' requires selecting first via the select_* tools and that it defaults to 'ALL'. This is helpful prereq guidance but there is no explicit when-to-use vs alternatives framing for the tool itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_facesA
Fill selected edges with a face.
Creates faces from a closed edge loop. Useful for closing gaps in meshes or capping open ends.
Args: object_name: Name of the mesh object.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the 'closed edge loop' precondition and the selection semantics, but is silent on failure behavior for non-closed loops, whether the operation is destructive/undoable, and any permission needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in one line, then qualifications, then structured Args/Returns. Every sentence earns its place with no padding.
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 the brief 'Returns: Confirmation dict' is sufficient. Purpose, usage, and parameter meaning are covered; only edge-case/error disclosure is thin for a mutation tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains both parameters, spells out the enum meaning of 'ALL' vs 'CURRENT', notes the default, and points to the select_* tools for the CURRENT case. object_name is only restated ('Name of the mesh object'), which is self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Fill selected edges with a face') and adds the mechanism ('Creates faces from a closed edge loop'), so the agent knows this is a topology-creation op. It does not explicitly distinguish itself from near-siblings like bridge_edge_loops or grid_fill, which is the only gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('closing gaps in meshes or capping open ends') and a prerequisite flow ('Use the select_* tools to choose first' when selection=CURRENT). No explicit when-not guidance, e.g. what to use instead for open loops, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flip_normalsA
Flip the direction of all face normals on a mesh.
Reverses inside/outside of all faces. Use recalculate_normals instead if normals are inconsistent rather than uniformly wrong.
Args: object_name: Name of the mesh object.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the meaningful side effect: it reverses inside/outside orientation of all faces. Selection semantics (whole mesh vs pre-selected) and the return shape are also stated. It does not mention permissions, undo behavior, or what happens on non-manifold meshes, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line summary, then the sibling-routing sentence, then compact Args/Returns blocks. Every sentence earns its place with no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive-ish mesh operation with two params is fully covered: purpose, alternative, selection behavior, and a note that a confirmation dict is returned (an output schema also exists). Nothing an agent needs to invoke this correctly 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?
Schema coverage is 0%, so the description must compensate, and it does: object_name is identified as the mesh object, and selection's two enum values are given real meaning ('ALL' = whole mesh, 'CURRENT' = what is already selected) along with the default. It adds the semantic intent that the raw enum labels lack.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Flip the direction of all face normals on a mesh') and immediately disambiguates against the sibling recalculate_normals by naming the condition that separates them (uniformly wrong vs inconsistent). An agent can choose between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use recalculate_normals instead when normals are inconsistent rather than uniformly wrong, and tells the agent to run the select_* tools first when using selection='CURRENT'. Both the when and the when-not are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focus_on_objectA
Frame/focus the viewport on a specific object.
Selects the object and uses View Selected to center the viewport on it.
Args: object_name: Name of the object to focus on.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key side effect: the tool selects the object before focusing. However, it does not mention potential limitations (e.g., whether object must be visible or if it works on non-mesh 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 extremely concise with two sentences plus an Args/Returns block. Every sentence is meaningful and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with a straightforward purpose and an output schema (confirmation dict), the description is complete. It covers the action, parameter, and return type adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning to the sole parameter 'object_name' by stating it's the name of the object to focus on. Schema coverage is 0%, so the description partially compensates, but the added value is limited given the parameter's simplicity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to frame or focus the viewport on a specific object. It explains the underlying action (selects object and centers viewport), which differentiates it from sibling tools like 'set_camera_from_view' or 'select_objects'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly provide guidance on when to use this tool versus alternatives. It implies usage for viewport navigation but lacks exclusion criteria or context for when other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_color_rampA
Read every stop on a ColorRamp node.
Use this before editing to learn the current indices and positions, since add and move operations reorder stops.
Args: material_name: Name of the material. node_name: Name of the ColorRamp node.
Returns: Dict with elements (index, position, color), interpolation, color_mode.
| Name | Required | Description | Default |
|---|---|---|---|
| node_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It clearly indicates a read-only operation and describes the return structure. However, it does not explicitly state idempotency or safety of multiple calls, though it is implied.
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 with three distinct sections: purpose, usage guidance, and Args/Returns. It is front-loaded with the core verb and resource, and every sentence contributes 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?
For a simple read tool with an output schema, the description covers purpose, usage context, parameters, and return structure. It lacks mention of error handling (e.g., when material or node doesn't exist), but overall is fairly 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?
Input schema has 0% description coverage, so the description's Args section adds essential meaning: 'material_name: Name of the material' and 'node_name: Name of the ColorRamp node'. This compensates for the missing schema descriptions, though it could include constraints like 'must 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 'Read every stop on a ColorRamp node', which is a specific verb+resource. It distinguishes from sibling tools like add_color_ramp_element and remove_color_ramp_element, which mutate stops.
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 recommends using this tool before editing to capture current indices and positions, explaining why (add/move operations reorder stops). It provides clear context but does not name alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_treeB
Get the full node tree of a material (all nodes and links).
Args: material_name: Name of the material.
Returns: Dict with nodes list and links list.
| Name | Required | Description | Default |
|---|---|---|---|
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It implies a read operation but does not explicitly state that it is non-destructive, nor does it mention any permissions, performance considerations, or what happens if the material does not exist. This lack of behavioral context 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 concise and front-loaded with the core purpose. The docstring-style args/returns are efficient and easy to parse. No extraneous content, though it could be slightly more 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?
Given the tool's simplicity (one parameter, read operation) and the presence of an output schema, the description covers the essential information: what it does, what input it needs, and what it returns (nodes and links lists). It does not explain internal details, but those are not necessary for usage.
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 only parameter 'material_name' is described as 'Name of the material', which adds basic meaning to the schema (which has 0% coverage). However, it does not specify format, case-sensitivity, or how to obtain valid names, so the value added is minimal.
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 retrieves the full node tree of a material, specifying 'all nodes and links'. However, it does not explicitly differentiate from sibling tools that also deal with nodes, such as 'add_geometry_node' or 'connect_geometry_nodes', leaving room for confusion.
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 does not mention any prerequisites, exclusions, or scenarios where this tool is appropriate, leaving the agent with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_object_infoB
Get detailed information about an object.
Args: object_name: Name of the object.
Returns: Dict with type, location, rotation, scale, modifiers, materials, parent, children, and visibility info.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the returned fields (type, location, rotation, scale, modifiers, materials, parent, children, visibility), which confirms it is a non-mutating getter, but it says nothing about behavior on a missing object, name-resolution rules, or cost of a deep hierarchy query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by a short Args/Returns block with no filler. Slightly padded because the Returns list duplicates what the output schema already provides.
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 enumerating return fields in the description is redundant but harmless; for a one-parameter read tool this is close to sufficient. The only real gap is the absence of any statement about what happens when the named object does not exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one self-evident string parameter, and the description's 'Name of the object' merely restates the schema title 'Object Name'. It adds no naming convention or lookup semantics beyond the obvious.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource ('Get detailed information about an object'), so the agent knows this is a read-only inspection tool. It does not distinguish itself from siblings like get_scene_info or list_objects, leaving the agent to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g. object must exist / be selected), and no alternatives named among the many sibling inspection tools. The agent must infer that this is the per-object counterpart to get_scene_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_infoA
Get full scene information including object tree, hierarchy, counts, frame range, fps, and render engine.
Returns a dict with scene name, object list with hierarchy, object type counts, frame range (start, end, current), fps, and active render engine.
| 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?
No annotations are present, so the description bears full responsibility. It only lists what is returned but does not disclose any behavioral traits such as read-only nature, performance impact, or caching 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?
Two sentences front-load the key information: the purpose and the returned data. Every sentence provides value without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the main return fields (scene name, object list with hierarchy, counts, frame range, fps, render engine). It could mention any side effects or performance notes, but it is complete for a read-only info tool with no parameters.
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 parameters, baseline is 4. The description adds meaning by detailing what the tool returns, which is necessary since the schema provides no parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full scene information including specific elements like object tree, hierarchy, frame range, fps, and render engine. It is distinct from sibling tools that focus on specific aspects (e.g., get_object_info for object details).
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 tool is for getting an overview of the scene, but it does not explicitly state when to use it over alternatives like get_object_info or get_node_tree. No exclusions or usage hints are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selectionA
Report what is currently selected on a mesh.
Without this a caller cannot see the result of its own selection, and the mesh tools that act on the current selection would be operating blind.
Args: object_name: Name of the mesh object.
Returns: Dict with selected and total counts per element type, and the first 50 selected indices of each, so a caller can confirm before acting.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return shape, per-element counts, and the important limit of only the first 50 selected indices, which helps a caller confirm before acting.
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 front-loaded with purpose, followed by concise rationale and structured Args/Returns sections. Every sentence earns its place and the format is easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter getter, absent annotations, and available output schema, the description is complete. It covers purpose, dependency context, parameter meaning, and return behavior including the 50-index limit.
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 describes object_name as the name of a mesh object, which is helpful, but the parameter is self-explanatory and the description adds little beyond that basic clarification.
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: 'Report what is currently selected on a mesh.' It clearly distinguishes this read-only selection query from sibling tools like select_objects and mesh tools that act on the current selection.
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 gives a clear context for use: without it, a caller cannot see the result of its own selection, and mesh tools acting on the current selection would be operating blind. It does not name explicit alternatives or when-not conditions, but the dependency context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewport_screenshotA
Capture a screenshot of the current Blender 3D viewport.
Args: max_size: Maximum size in pixels for the largest dimension (default: 1000). mode: Capture mode - 'fast' for instant viewport capture using OpenGL (default), 'full' for a complete render through the active render engine.
Returns: Dict with base64-encoded PNG image data, width, height, format, and mode.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fast | |
| max_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully describes the return payload (base64 PNG plus width, height, format, mode) and the tradeoff between the two capture modes, but never states that the operation is non-mutating, whether it works in background/headless contexts, or any cost/latency implications of 'full' mode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a one-line purpose, then structured Args/Returns blocks. Every sentence earns its place and there is no filler, though the Args restating of names/defaults partially duplicates 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 a rich output schema and only two optional parameters, the description covers enough to invoke the tool correctly and even summarizes the return shape. The main omission for a tool in this large sibling set is failure to differentiate from capture_viewport.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: both parameters are documented with defaults, and the enum value 'full' vs 'fast' is explained in terms of the underlying capture path. Minor gap is that max_size is only described as 'maximum size for the largest dimension' with no note on whether it preserves aspect ratio or whether 0 disables scaling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: capturing a screenshot of the current Blender 3D viewport. The scope ('current viewport') is clear. However, it does not distinguish itself from the sibling tool 'capture_viewport', which an agent could easily confuse with this 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 implicitly guides the fast-vs-full choice by explaining each mode ('instant viewport capture using OpenGL' vs 'complete render through the active render engine'), which is real usage value. But it gives no explicit when-to-use-this-instead-of-capture_viewport guidance, leaving the agent to guess between two similarly named siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_fillA
Fill a closed edge loop with a grid of quads.
Creates a clean quad grid between edge loops. Better than fill_faces for maintaining good topology.
Args: object_name: Name of the mesh object. span: Number of grid columns. Range: 1-1000. offset: Offset for the grid alignment. Range: 0-1000.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| span | No | ||
| offset | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It gives useful behavioral context about topology quality, the selection scope, and defaults, but it does not state whether the operation requires edit mode, whether it is destructive or reversible, or what the confirmation contains beyond the output schema. This is adequate but leaves important operational 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 front-loaded with purpose, then structured into Args and Returns sections. Every sentence adds useful information, including ranges and selection guidance, without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the Returns line is supplementary rather than essential. The description covers parameters and selection behavior well, but for a mesh-editing operation with no annotations, it could more explicitly state prerequisites like edit mode or active object requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description defines all four parameters: object_name, span (as number of grid columns with range), offset (grid alignment with range), and selection (enum meaning, when to use each mode, and default). It fully compensates for the empty 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 states a specific verb and resource ('Fill a closed edge loop with a grid of quads') and immediately distinguishes it from a named sibling by saying it is better than fill_faces for maintaining good topology. An agent can identify exactly what this tool does and when it is preferable.
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 names an alternative (fill_faces) and gives the condition for choosing this tool ('Better than fill_faces for maintaining good topology'). It also tells the agent to use select_* tools first and explains the selection default, but it does not state explicit exclusions or prerequisites such as required edit mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_fileA
Import a 3D file into Blender.
Supports FBX, OBJ, GLTF/GLB, USD, STL, PLY, Alembic (ABC), Collada (DAE), SVG, and X3D formats. Auto-detects format from file extension if type is empty.
Args: filepath: Absolute path to the file to import. Must exist. type: Optional format override. One of: FBX, OBJ, GLTF, USD, STL, PLY, ABC, DAE, SVG, X3D. Auto-detected from extension if empty.
Returns: Dict with imported file path and format.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| filepath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose two useful behaviors — filepath must exist and format is auto-detected from extension — but says nothing about whether the import adds to or replaces the current scene, whether it is reversible, or any permission/state side effects of a mutation-style operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by terse, well-organized format list, Args, and Returns sections. It is slightly longer than strictly needed given the format list repeats the schema enum, but every block is readable and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter import tool with an output schema present, the description covers the operation, the parameters, and the detection fallback. The main omission is import side effects (scene state, overwrite behavior), which matters because no annotations exist to cover it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: `filepath` is described as an absolute path that must exist, and `type` is described as an optional override with the same enum values as the schema, plus the empty-string default semantics. Only deeper detail (e.g. case sensitivity, relative path handling) is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb + resource ('Import a 3D file into Blender') and names the full set of supported formats, which cleanly separates it from siblings like export_file, open_file, and create_object. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the format auto-detection behavior when `type` is empty, which is useful invocation context, but it never states when to reach for this tool versus export_file/open_file or what preconditions apply beyond 'must exist'. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_keyframeA
Insert a keyframe on an object property at a specific frame.
Args: object_name: Name of the object. data_path: Property to keyframe. Must be one of: location, rotation_euler, rotation_quaternion, scale, or indexed variants like location[0]. frame: Frame number to insert the keyframe at. value: Optional value to set before inserting the keyframe.
Returns: Confirmation dict with keyframe details.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes | ||
| value | No | ||
| data_path | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that a keyframe is inserted, and that an optional value can be set first, but does not mention side effects (e.g., overwriting existing keyframes) or requirements (e.g., existing animation data).
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 summary line, followed by a bulleted list of arguments and a return description. Every sentence adds value, and it is appropriately concise 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?
The description covers purpose, parameters, and return value. It has an output schema, so return details are documented. However, it lacks edge-case behavior (e.g., error handling for invalid data_path) and setup requirements, but given the tool's simplicity, it is still complete enough.
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 0% description coverage, but the description adds detailed meaning for all parameters: object_name, data_path with valid values list and indexed variants, frame as integer, and value as optional. This significantly enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Insert), resource (keyframe), and context (on an object property at a specific frame). It distinguishes the tool from siblings like 'delete_keyframe' and 'list_keyframes'.
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 parameter constraints (e.g., valid data_path values) but does not explicitly state when to use this tool versus alternatives like 'set_interpolation' or 'clear_animation'. No guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inset_facesA
Inset all faces of a mesh, creating a border/frame around each face.
Core hard-surface modeling operation for adding detail, panel lines, or preparing faces for extrusion.
On a closed mesh, selection="ALL" does nothing: a region with no boundary has nothing to inset from, and Blender reports success having changed nothing. Measured on a default cube in 5.1, the vertex, edge and face counts are identical afterwards. Select the faces you mean and pass selection="CURRENT".
Args: object_name: Name of the mesh object. thickness: Inset thickness (border width). Range: 0.0-10.0. depth: Inset depth (positive=outward, negative=inward). Range: -10.0 to 10.0.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| selection | No | ALL | |
| thickness | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden — and it does so exceptionally, disclosing a silent-failure gotcha ("ALL" on a closed mesh succeeds but changes nothing, vertex/edge/face counts identical) rather than a generic mutation disclaimer. That is a non-obvious behavioral trait an agent would otherwise hit blind.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then usage context, then the critical caveat, then args and returns — a sensible order with no wasted sections. Slightly verbose in the cube-measurement anecdote, but it is evidence supporting the caveat rather than 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 4-param mutation tool with no annotations and an output schema, the description covers purpose, when-to-use, prerequisites, all parameter semantics, a failure mode, and return type. Nothing an agent needs to invoke it correctly 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?
Schema description coverage is 0%, so the description must compensate, and it documents all four parameters: object_name's purpose, thickness as border width with range 0.0-10.0, depth with sign semantics (positive=outward, negative=inward) and range, and selection's enum semantics plus its default. This exceeds the schema, which carries no per-field text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Inset all faces of a mesh") and the resulting geometry (border/frame around each face), which immediately distinguishes it from siblings like extrude_faces and bevel_edges. An agent can pick this tool over its neighbors without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames it as a core hard-surface modeling operation for adding detail, panel lines, or preparing faces for extrusion, and names the prerequisite workflow ("Use the select_* tools to choose first"). It also gives a concrete when-NOT-to-use condition: selection="ALL" on a closed mesh does nothing. This is exactly the routing guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_objectsA
Join multiple mesh objects into one (keeps all geometry as-is).
This merges objects into a single datablock without modifying geometry. The meshes remain separate inside the object (no boolean merge).
TIP: If you want to truly fuse overlapping meshes into one solid shape, use booltool_auto_union instead — it performs a boolean union that merges the geometry and removes internal faces.
Args: names: List of object names to join. The first name becomes the active object.
Returns: Dict with the resulting joined object name.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that meshes remain separate inside the object, no boolean merge, and the first name becomes active object. With no annotations, this provides full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two paragraphs, front-loaded with purpose, no fluff. Every sentence adds value, including the TIP.
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?
Even with high schema coverage, the description fully explains behavior for a simple tool, including return value. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
For the single parameter 'names', the description adds 'List of object names to join. The first name becomes the active object.' This goes beyond the schema's minimal definition.
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 'Join multiple mesh objects into one' and specifies it keeps geometry as-is, distinguishing it from booltool_auto_union which performs a boolean union.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides a tip to use booltool_auto_union for fusing overlapping meshes, giving clear when-not-to-use guidance and an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knife_projectB
Project a cutter object's outline onto a mesh to cut it.
The cutter object (curve or mesh) is projected from the viewport onto the target mesh, cutting new edges into it.
Args: object_name: Name of the mesh to cut into. cutter_name: Name of the cutter object (curve or mesh) to project.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| cutter_name | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key mechanism: the cutter is projected from the viewport, and new edges are cut into the mesh. It omits what an agent needs for a mutation tool, such as required mode, whether the cut is reversible, and side effects on existing geometry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and kept short, with Args and Returns clearly separated. The second sentence largely restates the first, which is minor redundancy rather than bloat.
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 the 'Returns: Confirmation dict' line is not strictly needed. For a 2-param mutation tool with zero annotation coverage, the description should still mention mode/permission prerequisites and viewport-dependence caveats, which it only gestures at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it disambiguates object_name as 'the mesh to cut into' and cutter_name as the source curve/mesh to project, and notes the cutter may be a curve or mesh. That is meaningfully more than the bare titles 'Object Name' and 'Cutter Name'.
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?
Names a specific verb and resource combination (project a cutter outline onto a mesh to cut it) that an agent can distinguish from generic mesh ops. It does not, however, name or contrast with the closest siblings such as boolean_operation, booltool_auto_difference, or loop_cut.
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 prefer this over boolean cuts, booltool_auto_slice, or loop_cut, and no prerequisites stated. The agent must infer usage entirely from the one-line mechanism.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_geometry_node_inputsA
List all available inputs on a geometry nodes modifier.
Args: object_name: Name of the object with the modifier. modifier_name: Name of the geometry nodes modifier.
Returns: List of dicts with input name, type, and current value.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| modifier_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the burden. It implies a read-only operation by stating 'list', but does not explicitly disclose non-destructive behavior, required permissions, or effects. It is adequate but not thorough.
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 with a clear structure including Args and Returns sections. It is front-loaded with the main purpose and adds necessary detail without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the action, parameters, and return format. An output schema exists, and the description supplements it by listing the return fields. Could mention that it only works for geometry nodes modifiers, but the title implies that.
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%, but the description adds meaningful explanations for both parameters: 'Name of the object with the modifier' and 'Name of the geometry nodes modifier', which clarifies their roles beyond the schema titles.
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 available inputs on a geometry nodes modifier', which is a specific verb and resource. It distinguishes from sibling tools like set_geometry_node_input (which modifies inputs) and get_node_tree (which retrieves the node tree).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells what the tool does but does not provide explicit guidance on when to use it versus alternatives (e.g., before calling set_geometry_node_input). No usage context or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keyframesB
List all keyframes on an object.
Args: object_name: Name of the object.
Returns: List of dicts with data_path, frame, and value for each keyframe.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature or side effects. For a listing operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences plus a brief Args/Returns section. Every word is useful, and the structure is clear 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?
Given the tool's simplicity (one parameter) and the presence of an output schema, the description is nearly complete. It could mention object existence, but covers the core functionality well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats the schema's title ('Name of the object') with no added meaning. With 0% schema coverage, the description should compensate but fails to provide any additional context or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all keyframes') and the target resource ('on an object'), making the purpose immediately obvious. It distinguishes from siblings like 'insert_keyframe' and 'delete_keyframe'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. The description implies its purpose but doesn't cover 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_lightsA
List all light objects in the scene.
Returns: List of dicts with light name, type, energy, color, and location.
| 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 description implies a read-only operation by using 'List', and it details the output structure. With no annotations, the description does a good job of being transparent about the behavior, though it could explicitly state it doesn't modify the scene.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with no wasted words. The core purpose is stated in the first sentence, and the return format is listed in a clear manner. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, clear return structure described), the description is fully complete. It covers what the tool does, what it returns, and there is an output schema indicated, so return values are explained.
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?
Input schema has no parameters, and schema description coverage is 100%. The description adds no additional parameter info, which is acceptable since there are none. 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 lists all light objects in the scene, which distinctively separates it from sibling tools like create_light, delete_light, or set_light_property. It also specifies the returned fields, enhancing clarity.
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. Since it's a simple listing tool, usage can be inferred, but direct mention of when not to use or preferred contexts is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsA
List all materials in the current Blender file.
Returns: List of dicts with material name and user count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the tool lists materials and returns dicts, but does not mention any behavioral traits such as whether it is read-only, performance implications, or what happens if no materials exist.
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 with two sentences, front-loading the main purpose and adding return format information. Every sentence is essential.
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 absence of parameters and the presence of an output schema, the description is complete. It covers what the tool does and what it returns without missing necessary 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 input schema has no parameters, so the description does not need to add parameter information. Schema coverage is 100%, and the baseline for 0 parameters is 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 lists all materials in the current Blender file and specifies the return format as a list of dicts with material name and user count. It distinguishes itself from sibling tools like create_material or delete_material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing materials but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_objectsB
List all objects in the scene, optionally filtered by type.
Args: type_filter: Filter by object type (e.g., MESH, LIGHT, CAMERA, EMPTY). Empty string returns all objects.
Returns: List of dicts with object name, type, and location.
| Name | Required | Description | Default |
|---|---|---|---|
| type_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clarifies the read-only listing behavior implicitly and states what is returned (name, type, location) and that an empty string returns everything, which is meaningful context. It omits any note about permissions, ordering, or performance on large scenes.
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?
Short, front-loaded, and cleanly partitioned into Args and Returns sections. Every sentence carries information; 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 simple zero-required-parameter read tool this is essentially complete: the filter semantics are explained and the return shape is noted, and an output schema exists so return detail need not be expanded. Only the absence of usage routing keeps it from being 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 and largely does: it explains the filter's purpose, gives example enum values (MESH, LIGHT, CAMERA, EMPTY), and specifies the empty-string default behavior. It does not enumerate the full enum but the schema already supplies that list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all objects in the scene') plus the scope of the optional filter. It is clearly distinguishable from mutating siblings like delete_object or create_object, though it never names the closest alternatives (get_object_info, get_scene_info) to disambiguate.
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 alternatives are named. The reader can infer it is the enumeration tool versus get_object_info (single-object detail), but the description leaves that inference entirely 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_procedural_patternsA
List every procedural pattern with a description of what it looks like.
Read this before calling create_procedural_material so you pick a pattern that matches the surface you are trying to make.
Returns: Dict with the sorted pattern names and a description of each.
| 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?
No annotations provided, but the description clearly states the return format (sorted dict with pattern names and descriptions) and the purpose. It is a non-destructive listing, and the description accurately represents its 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 with three efficient sentences, each adding value. It front-loads the main action and includes a usage guideline. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a tool with no parameters. It explains the purpose, usage context, and return value. The existence of an output schema further compensates for any missing 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?
The tool has zero parameters, so the description need not add parameter info. With no parameters, baseline is 4 as per guidelines. The description does not need 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 it lists all procedural patterns with descriptions, serving as a reference for creating procedural materials. It distinguishes itself from the sibling tool create_procedural_material by being a read-only 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?
It explicitly advises reading this before calling create_procedural_material to choose the right pattern, indicating when to use the tool and providing context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_filesA
List recently opened files from Blender preferences.
Returns: List of file path strings.
| 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?
With no annotations, the description does not explicitly state that the operation is read-only or free of side effects. It only mentions the return type but omits details like ordering, limits, or potential dependencies on active preferences.
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 with two sentences, front-loading the purpose and clearly stating the return value. No extraneous 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 tool with no parameters and an output schema, the description is minimally sufficient but lacks context about the number of files, recency definition, or potential failure modes. It does not leverage the output schema to further clarify structure.
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, so schema coverage is 100%. The description adds no parameter information, but this is acceptable as there are none; baseline for 0 parameters is 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 verb 'List' and the specific resource 'recently opened files from Blender preferences,' which distinguishes it from the many sibling tools that deal with modeling, scene management, or other 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?
No guidance is provided on when to use this tool versus alternatives like list_objects or list_scenes. The description does not mention contexts or exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scenesA
List all scenes in the current Blender file.
Returns a list of dicts, each containing the scene name and object count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states the tool is read-only (lists scenes) and describes the return format (list of dicts with name and object count). It does not discuss permissions or side effects, but for a simple list tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence immediately states the action, and the second provides return type details. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema exists), the description fully covers what the tool does and what it returns. It is complete for an agent to understand its function.
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, and the description correctly adds no parameter info. According to the rules, zero parameters earns a baseline of 4, as the description does not need 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 lists all scenes in the current Blender file, using the specific verb 'list' and resource 'scenes'. This distinguishes it from siblings like 'get_scene_info' (which gets details of a single scene) or 'delete_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 enumerate scenes and their object counts, but does not explicitly state when not to use it or mention alternatives. Given the simple nature, the guidance is adequate but not differentiated from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loop_cutA
Add loop cuts to a mesh object.
Args: object_name: Name of the mesh object. cuts: Number of loop cuts. Range: 1-100.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| cuts | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a meaningful behavioral trait — selection="ALL" acts on the whole mesh while "CURRENT" restricts to the existing selection, establishing a prerequisite (select first). It omits mutating-operation concerns such as edit-mode requirements, reversibility/undo, or permission needs.
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?
Purpose is front-loaded in the first line, with Args and Returns cleanly separated and no filler. The Args block is more verbose than strictly needed but each line carries usable 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?
An output schema exists, so the terse "Returns: Confirmation dict" is sufficient. Parameter and selection behavior are covered; only edit-mode/undo context for a geometry-mutating tool is missing, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: it documents all three parameters, adds the cuts range 1-100 absent from the schema, and defines the ALL/CURRENT enum semantics plus the pre-selection dependency. object_name is only restated, but overall it adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Add loop cuts to a mesh object"), making the operation legible against mesh-edit siblings. It does not, however, differentiate itself from close alternatives like subdivide_mesh, bevel_edges, or bridge_edge_loops, so an agent must infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The selection parameter text gives real routing guidance ("Use the select_* tools to choose first"), which tells the agent how to set up a pre-selection. There is no explicit when-to-use-this-vs-subdivide_mesh guidance, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_single_userB
Make an object's data single-user (unlink shared datablocks).
Args: object_name: Name of the object. object: Make the object single-user. Defaults to True. data: Make the object data (e.g., mesh) single-user. Defaults to True.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| object | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden for behavioral disclosure. It indicates a mutation operation but does not disclose side effects (e.g., effects on other objects sharing the datablock), reversibility, or permission requirements. The description is insufficient for safe usage.
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 provides a one-line purpose followed by a clear Args section with each parameter explained. No redundant information; every sentence is necessary. The format is front-loaded with the core 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?
Given that the tool operates on shared datablocks (a potentially impactful operation), the description lacks important contextual details such as reversibility, warnings about data loss, or behavior when both parameters are false. Although an output schema is mentioned (confirmation dict), no structure is provided. The description is insufficient for a tool with no annotations.
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 schema description coverage at 0%, the description compensates by explaining each parameter's role: 'object' controls making the object single-user, 'data' controls the object's data (e.g., mesh). This adds meaning beyond the schema's type-only definitions. However, the descriptions are brief and could elaborate on the effects of setting each to false.
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: 'Make an object's data single-user (unlink shared datablocks).' It uses a specific verb ('make') and resource ('object's data single-user'), distinguishing it from sibling tools like duplication or property setting. The term 'single-user' is a specific Blender concept.
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 alternatives. It lacks context about scenarios where unlinking shared datablocks is appropriate or necessary. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_seamA
Mark or clear UV seams on all edges of a mesh.
UV seams guide the UV unwrapping process. Edges marked as seams define where the mesh is "cut" when unwrapped to 2D.
Args: object_name: Name of the mesh object. clear: If True, clear seams instead of marking them.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It explains what seams do and how clear/selection behave, but omits prerequisites such as required mode/selection state, whether changes are reversible, and whether marking affects existing seams.
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 text is front-loaded with purpose and organized into Args/Returns, but the 'Returns: Confirmation dict' line is redundant because an output schema exists, and the opening 'all edges' phrasing sits awkwardly with the scoped selection parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described. The description covers all parameters and selection semantics, but for a no-annotation mesh mutation it leaves mode/prerequisite details unstated, so it 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 description coverage is 0%, but the description documents all three parameters with semantics: object_name identifies the mesh, clear reverses marking, and selection has ALL/CURRENT meanings plus guidance to use select_* first. This fully compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (mark/clear UV seams) and resource (mesh edges) and explains the effect on UV unwrapping. It does not explicitly distinguish this tool from siblings such as mark_sharp, so it is clear but not fully sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly tells the agent to use select_* tools first for the CURRENT option and explains ALL vs CURRENT and clear behavior. It does not name alternative UV tools or when not to use this tool, keeping it below explicit when/when-not/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_sharpA
Mark or clear sharp edges on a mesh.
Sharp edges control auto-smooth shading. Edges marked as sharp will have a hard edge in the shading even with smooth shading enabled.
Args: object_name: Name of the mesh object. clear: If True, clear sharp marks instead of setting them.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does a decent job: it discloses what the operation changes in shading terms, that `clear` inverts the effect rather than performing a different action, and that a confirmation dict is returned. It omits anything about reversibility/undo or required edit-mode state, which for a mutation tool keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the first line, then a useful one-sentence rationale, then clearly separated Args and Returns blocks. Efficient overall; only the shading explanation is slightly padded relative to need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed, and the brief 'confirmation dict' note is sufficient. All parameters, defaults, and the selection prerequisite are covered; the only gap is edit-mode/permission prerequisites for a mesh-mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: all three parameters are explained, including the boolean inversion semantics of `clear` and the enum meaning plus default of `selection`. Nothing transforms or formats beyond that, so a 4 rather than a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair plus resource ('Mark or clear sharp edges on a mesh') and explains what sharp edges materially do ('hard edge in the shading even with smooth shading enabled'), which is genuinely informative. It does not explicitly differentiate from nearby siblings such as set_edge_crease or mark_seam, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operating context: the 'ALL' vs 'CURRENT' selection mode determines whether the whole mesh or only the current selection is affected, and it tells the agent to run the select_* tools first. It offers no when-not-to-use guidance or routing against alternatives like set_edge_crease, so no 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_verticesA
Merge vertices by distance.
Args: object_name: Name of the mesh object. threshold: Maximum distance between vertices to merge. Range: 0.0-10.0.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict with number of removed vertices.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| threshold | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the merge semantics, the threshold range, and the returned confirmation with removed-vertex count, which is useful. However, it never states whether the operation is destructive/irreversible or what happens to the pre-merge topology, which matters for a mesh mutation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then structured Args/Returns with one line per parameter. No filler, though the Returns note is somewhat redundant given 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?
For a 3-parameter mesh tool with an output schema, the description covers purpose, all parameters, mode selection, and the return shape. It is complete enough to invoke correctly, with the only gap being the destructive/irreversibility caveat.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it documents object_name, gives threshold meaning plus a 0.0-10.0 range absent from the schema, and explains both enum values for selection. Only the threshold default (0.0001 in schema) is left to 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 opening line gives a specific verb+resource ('Merge vertices by distance') with a concrete scoping mechanism (threshold), which reads clearly against mesh-editing siblings like dissolve_verts or join_objects. It stops short of explicitly naming an alternative tool, but the operation 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?
It explains the two operating modes ('ALL' for the whole mesh vs 'CURRENT' for the current selection) and points the agent at the select_* tools to establish a selection first. That is real when-to-use guidance; only explicit when-not conditions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_to_collectionA
Move objects to a collection, unlinking them from their current collections.
Args: object_names: List of object names to move. collection_name: Name of the destination collection.
Returns: Dict with the moved objects and destination collection.
| Name | Required | Description | Default |
|---|---|---|---|
| object_names | Yes | ||
| collection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the unlinking behavior, which is a key side effect. However, it does not mention other behavioral aspects such as whether the collection must exist, whether the object retains its location, or authorization requirements. Since no annotations are provided, the description partially fulfills 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 concise and uses a structured docstring format (Args, Returns). It is front-loaded with the main purpose. No redundant information 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 simple move operation, the description covers the main action, parameters, and return value. It implicitly handles multiple objects via a list. However, it does not explain edge cases like moving to a non-existent collection or moving a subset of objects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to both parameters beyond the schema: 'object_names: List of object names to move' and 'collection_name: Name of the destination collection.' With 0% schema description coverage, this provides essential clarification.
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 ('Move objects to a collection') and the effect ('unlinking them from their current collections'). It distinguishes itself from sibling tools by specifying the moving aspect, which is unique among collection-related 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?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or compare with other tools like 'set_collection_visibility' or 'parent_objects'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_fileA
Open a .blend file.
Args: filepath: Absolute path to the .blend file. Must exist.
Returns: Dict with the opened file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states the file must exist and returns the file path, but does not explain side effects like whether the current scene is replaced or if unsaved changes are handled.
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 with a single sentence for purpose, followed by clear Args and Returns sections. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one parameter, output described), the description covers the essential context. However, it omits details about Blender's file opening behavior (e.g., unsaved changes), which would be helpful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's docstring defines 'filepath' as 'Absolute path to the .blend file. Must exist.' This adds necessary meaning beyond the schema's minimal type/name.
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 'Open a .blend file.' with a specific verb and resource. It distinguishes from siblings like import_file and export_file by focusing on .blend files.
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 opening existing .blend files and notes that the file must exist. However, it does not provide when-not-to-use guidance or mention alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pack_uv_islandsA
Pack UV islands to fit efficiently within the UV space.
Args: object_name: Name of the mesh object. margin: Margin between packed islands (0.0-1.0).
Returns: Confirmation dict with object name.
| Name | Required | Description | Default |
|---|---|---|---|
| margin | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It states the tool packs UV islands but does not specify if it overwrites existing layout, requires the object to have UVs, or note any side effects. The minimal description leaves key behaviors unspecified.
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 with no wasted words. It includes a one-line purpose, clear Args section, and Returns note. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, straightforward operation), the description covers the essential interface. However, it omits context like the need for an existing UV map and lack of effect if no islands exist. The provided output schema helps, but completeness is adequate but not excellent.
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 0% description coverage, but the description explains both parameters: object_name (mesh object) and margin (0-1 range). This adds significant meaning beyond the schema's type/default, making the tool usable.
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: packing UV islands efficiently within UV space. It uses a specific verb ('Pack') and resource ('UV islands'), and distinguishes itself from sibling tools like uv_unwrap and smart_uv_project.
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 like uv_unwrap or set_uv_projection. The description does not mention prerequisites or exclusions, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parent_mesh_to_armatureB
Parent a mesh object to an armature with automatic weights or other methods.
Args: mesh_name: Name of the mesh object to parent. armature_name: Name of the armature object. type: Parenting method. One of: ARMATURE_AUTO (automatic weights), ARMATURE_NAME (by bone names), ARMATURE_ENVELOPE (by envelope).
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ARMATURE_AUTO | |
| mesh_name | Yes | ||
| armature_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that parenting creates automatic weights or uses other methods and returns a confirmation dict, but it omits key side effects: whether existing modifiers/vertex groups are changed, whether object transforms are preserved, what permissions or scene state are required, and whether the operation is reversible.
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 front-loaded with the purpose and then uses clear Args and Returns sections. Every part earns its place, though the Returns section is slightly redundant because an output schema already exists. Overall it is compact and well organized.
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 3 parameters, no annotations, and an output schema. The description covers the purpose, all parameter meanings, and a brief return note, which is enough to invoke it correctly. However, for a mutation tool with no annotations, it lacks usage guidance and side-effect disclosure, leaving clear contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names and explains all three parameters, including the meaning of each enum value for `type` (ARMATURE_AUTO, ARMATURE_NAME, ARMATURE_ENVELOPE), which the schema lists but does not explain. This adds substantial meaning 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 gives a specific verb and resource: 'Parent a mesh object to an armature.' It clearly states scope with 'automatic weights or other methods.' It does not explicitly differentiate from the sibling generic `parent_objects`, but the armature-specific naming and description make the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as the generic `parent_objects` tool. The methods are listed for the `type` parameter, but the description never says when to choose this tool over other parenting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parent_objectsB
Set parent-child relationship between two objects.
Args: child: Name of the child object. parent: Name of the parent object.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| child | Yes | ||
| parent | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'Set parent-child relationship' and returns a 'Confirmation dict', but does not disclose side effects (e.g., whether the child's previous parent is removed) or validation rules. Insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with one sentence for purpose, then clearly formatted Args and Returns sections. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and a simple 2-parameter tool, the description covers the core purpose and parameter definitions. However, it omits behavioral details (e.g., error handling, effect on existing relationships) and the return type is only vaguely described as 'Confirmation dict'. Adequate for basic understanding but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides brief definitions for both parameters ('Name of the child object' and 'Name of the parent object'), which adds meaning beyond the schema's titles. However, no further details like name format or uniqueness constraints.
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 specific verb 'Set' and resource 'parent-child relationship between two objects', which clearly states the action. It distinguishes from sibling tools like 'join_objects' or 'make_single_user' that perform different 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?
No guidance on when to use this tool versus alternatives, such as when objects already have parents or when the relationship would create cycles. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
point_camera_atA
Point a camera at an object or a specific location using a Track To constraint.
Args:
camera_name: Name of the camera object.
target: Name of an existing object to point at, as a string. For
coordinates use location instead. Mutually exclusive with location.
location: XYZ location to point at as [x, y, z]. Mutually exclusive with target.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| location | No | ||
| camera_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the tool works by creating a Track To constraint, but it omits key side effects: whether an existing constraint is replaced, whether the camera's prior rotation is overwritten, and any reversibility. This is meaningful but incomplete disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a compact Args block and a brief Returns line. No redundant sentences, though the Returns line adds little 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?
An output schema exists so return values needn't be detailed, and parameters are covered. However, for a mutation tool with zero annotations, the description should disclose side effects (constraint replacement, rotation overwrite) and does not, leaving a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains target as an object name, location as [x, y, z], and the mutual exclusivity between them. It leaves out the documented defaults (target="", location=null) but covers all three parameters' intent well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('point a camera') plus the mechanism ('Track To constraint'), which makes the effect concrete. It does not explicitly contrast with close siblings like set_camera_from_view or set_active_camera, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one real usage rule — target and location are mutually exclusive — which helps an agent pick a call form. It offers no guidance on when to prefer this over set_camera_from_view or other camera orientation tools, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quads_to_trisA
Convert all quad faces to triangles.
Useful for game engine export or when triangulated geometry is required.
Args: object_name: Name of the mesh object.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description carries the full burden competently: it discloses that it is a mesh mutation, states selection scope, and confirms the return is a confirmation dict. It does not state whether the operation is destructive/irreversible or whether existing triangles on the mesh are preserved, which is a notable gap for a topology-mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then rationale, then arg docs. Every sentence earns its place. The Args/Returns block repeats the default already in the schema, a minor 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 two-parameter mesh conversion tool with an existing output schema and no annotations, the description covers purpose, motivation, parameter semantics, and return type. Nothing an agent needs to invoke it correctly 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?
Schema coverage is 0%, so the description must compensate. It documents both params: object_name's meaning and the semantics of the selection enum ('ALL' vs 'CURRENT'), plus its default. This is genuine added value, though it doesn't add syntax/format details beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Convert) and resource (quad faces to triangles), and directly names the inverse sibling tris_to_quads. An agent can tell this apart from the rest of the mesh-editing tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear reason to use it ('For game engine export or when triangulated geometry is required') and explains the selection.CURRENT workflow with a pointer to the select_* tools. It lacks an explicit 'when not to use' or a direct contrast with tris_to_quads, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recalculate_normalsA
Recalculate face normals to be consistent (all pointing outward or inward).
Fixes meshes with flipped or inconsistent normals that cause shading artifacts.
Args: object_name: Name of the mesh object. inside: If True, normals point inward instead of outward.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| inside | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It discloses that the tool mutates mesh normal data and returns a confirmation dict, but says nothing about reversibility/undo, mode requirements, or failure behavior on non-mesh 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?
Front-loaded one-line purpose followed by a problem statement and a structured Args/Returns block. Slightly padded by the Returns stub ('Confirmation dict'), but every other line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the thin Returns note is acceptable. With 3 parameters, one enum, and no annotations, the description covers purpose, all parameters, and the selection workflow; only mutation-safety details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does: object_name is identified as the mesh object, inside is explained as direction of the normals, and selection enumerates ALL vs CURRENT with its default and the workflow needed to use CURRENT. This meaningfully exceeds the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('recalculate face normals') and the outcome it produces ('consistent, all outward or inward'), plus the problem it solves (flipped/inconsistent normals causing shading artifacts). It does not explicitly distinguish itself from the sibling flip_normals, which is the closest alternative, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operational context: use select_* tools to establish a selection before calling with selection='CURRENT'. It does not state when NOT to use it (e.g., versus flip_normals) or prerequisites like object/edit mode, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remeshB
Remesh an object to create a clean topology.
Args: object_name: Name of the mesh object to remesh. voxel_size: Voxel size for remeshing (smaller = more detail). Only used in VOXEL mode. mode: Remesh mode - VOXEL, SHARP, SMOOTH, or BLOCKS.
Returns: Dict with object name and new vertex count.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | VOXEL | |
| voxel_size | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It never says whether remeshing destructively rebuilds topology, replaces the original object, requires the object to be selected, or can fail on non-mesh inputs. The 'smaller = more detail' note on voxel_size and the return shape are the only behavioral context offered.
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 purpose sentence is front-loaded and the args/returns blocks are compact and skimmable. The Returns block is somewhat redundant given an output schema exists, but nothing is excessively 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?
An output schema exists so return values need no explanation, but for a topology-mutating tool with zero annotations the description omits the key facts an agent needs: destructive/replace-in-place behavior and input prerequisites. It is adequate but leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains object_name, clarifies that voxel_size is only used in VOXEL mode, and notes that smaller values yield more detail. The mode values merely restate the enum, but the VOXEL-only constraint is genuinely additive information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Remesh an object') plus the goal ('create a clean topology'), which is clear enough to act on. It stops short of distinguishing itself from closely related siblings such as decimate_mesh, subdivide_mesh, or repair_mesh, leaving the agent to infer the difference.
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 explicit guidance on when to remesh versus decimate, subdivide, or repair a mesh, nor any prerequisites (mesh object type, active object requirement). The mode enum hints at variants but the description never says which situation calls for which mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_annotation_layerB
Remove a layer from an annotation.
Args: annotation_name: Name of the annotation data block. layer_name: Name of the layer to remove.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| annotation_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that the tool removes a layer and returns a confirmation, but it lacks details on side effects (e.g., whether removal is irreversible), error handling, or permission requirements.
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 exceptionally concise: one sentence for purpose, two lines for parameter definitions, and one line for returns. Every sentence contributes value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (two parameters, no annotations, no output schema shown but mentioned), the description is adequate for a basic removal action. However, it could improve by noting error conditions or confirming that the layer must exist. The mention of a 'Confirmation dict' hints at the return type but lacks 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?
The input schema has 0% description coverage, so the description adds essential meaning by defining each parameter: 'annotation_name' as the name of the annotation data block, and 'layer_name' as the name of the layer to remove. This is minimal but sufficient to convey what each parameter represents.
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: 'Remove a layer from an annotation.' It uses a specific verb and resource, making the purpose unambiguous. However, it does not differentiate from the sibling tool 'add_annotation_layer' or other annotation-related tools, which would enhance clarity.
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., requiring an existing annotation), nor does it specify scenarios where this tool is appropriate or inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_color_ramp_elementA
Remove a colour stop from a ColorRamp node.
Blender requires at least one stop to remain; removing the last one fails.
Args: material_name: Name of the material. node_name: Name of the ColorRamp node. index: Zero-based index of the stop to remove.
Returns: Dict with the removed index and the remaining element count.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| node_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It warns about the failure on removing the last stop, which is useful. However, it does not disclose other potential side effects, such as whether the operation is destructive or if it requires specific permissions. The return values are described but are covered by 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 concise: a one-sentence purpose, a constraint, then a structured Args/Returns section. No redundant information. Slightly more detail could be added without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers the essential aspects: action, constraint, parameter meanings, and return information. It lacks only minor contextual details like prerequisites or node type requirements.
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 0% description coverage, so the description's 'Args' section adds critical meaning. It explains each parameter: material_name, node_name, and index (noting zero-based). This provides clarity 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 ('Remove a colour stop from a ColorRamp node') with a specific verb and resource. It distinguishes this tool from sibling tools like 'add_color_ramp_element' and 'set_color_ramp_element' by focusing on removal.
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 key constraint ('Blender requires at least one stop to remain; removing the last one fails'), but does not provide explicit guidance on when to use this tool versus alternatives or any prerequisites (e.g., existence of a ColorRamp node). Implied usage is present but not thorough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_modifierB
Remove a modifier from an object.
Args: object_name: Name of the object. modifier_name: Name of the modifier to remove.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| modifier_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions the return type (confirmation dict) but does not disclose behavioral traits such as destructive nature, reversibility, error handling, or required 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?
The description is extremely concise, with two clear sentences and a structured Args/Returns section. Every part is necessary and contributes to 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?
For a simple tool with two parameters and an output schema, the description covers the essentials: purpose, arguments, and return type. It does not explain error behavior or domain-specific details, but is reasonably complete given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. The Args section provides one-line descriptions for each parameter, clarifying their purpose beyond the schema titles, but lacks format, examples, or constraints.
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 (Remove a modifier from an object) with a specific verb and resource, distinguishing itself from sibling tools like add_modifier and apply_modifier.
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 vs alternatives, nor does it mention prerequisites or constraints. It simply states what it does without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_shader_nodeB
Remove a shader node from a material's node tree.
Args: material_name: Name of the material. node_name: Name of the node to remove.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| node_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states 'Remove' implying destructive action but does not disclose consequences like reversibility, side effects on node tree, or error states (e.g., node not 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 concise with a single-sentence purpose followed by structured Args and Returns. It is front-loaded and efficient, wasting no 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 2-parameter tool, the description covers the basic operation but lacks context on error handling, prerequisites (e.g., node must exist), and the structure of the confirmation dict. It is 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?
Schema coverage is 0%, so the description adds meaning. It labels parameters as 'Name of the material.' and 'Name of the node to remove.', which is clear but adds little beyond the property names. Baseline 3 is appropriate as it provides basic clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the resource 'shader node' from a 'material's node tree', which is specific and distinguishes it from sibling tools like add_shader_node, connect_shader_nodes, and disconnect_shader_nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for removing a shader node but does not provide explicit guidance on when to use this tool versus alternatives like disconnect_shader_nodes, nor does it mention prerequisites or edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_objectC
Rename an object.
Args: old_name: Current name of the object. new_name: New name for the object.
Returns: Dict with old and new names.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| old_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'Rename an object' without disclosing behavioral details like whether it updates references, error handling for name conflicts, or if it works on all object types. With no annotations, the description should provide more 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 very concise, with a clear structure showing args and returns. However, it lacks explanatory depth that would make it truly valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and no annotations, the description is incomplete. It does not mention whether the object must exist, what happens on duplicate names, or any side effects. The output schema exists but is not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond the schema: it repeats parameter names and states they are the current and new names. Schema coverage is 0%, so the description should compensate but does not provide additional constraints or format details.
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 'Rename an object', providing a specific verb and resource. It distinguishes from siblings as there is no other rename tool among the many 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?
No guidance on when to use this tool versus alternatives, such as duplicate_object or set_object_property. No conditions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_animationB
Render the animation sequence to image files.
Args: filepath: Output file path prefix for the rendered frames. Each frame will be saved with a frame number suffix. format: Output format. One of: PNG, JPEG, OPEN_EXR, TIFF, BMP.
Returns: Confirmation dict with output details.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | PNG | |
| filepath | No | /tmp/render_ |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the filepath-prefix-plus-frame-suffix naming convention and that it returns a confirmation dict, but it omits whether the operation is long-running/blocking, that it depends on scene frame-range and render settings, and that it produces persistent side effects on disk.
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 Args/Returns structure is clean and front-loaded with the core action, and every line is short. It is slightly formulaic but contains no filler sentences.
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 the description need not detail the return structure, and it covers both parameters. But for a filesystem-writing render tool with zero annotation coverage, it should at minimum state prerequisites and side effects; without those it is only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains that filepath is a prefix with a frame-number suffix appended per frame, which is genuine meaning beyond the schema. The format argument merely re-lists the enum values already enforced by the schema, so it adds little there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Render the animation sequence') plus the output artifact ('image files'), so the agent knows it is an animation render rather than a single-frame render. It does not, however, name or contrast itself with the sibling render_image, leaving the sequence-vs-single distinction implicit.
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 when-to-use guidance: no mention of prerequisites (an active camera, a configured frame range/output format), no note that this writes persistent files to disk, and no routing to alternatives such as render_image or set_frame_range. The only 'guidance' is the bare statement of purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_imageA
Render the current scene to an image file.
Args: filepath: Output file path for the rendered image. Must be an absolute path with a valid image extension (.png, .jpg, .exr, .tiff, .bmp).
Returns: Confirmation dict with the output file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | No | /tmp/render.png |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It mentions rendering and returning a confirmation, but omits details like reliance on current render settings, potential overwrite of existing files, or time consumption.
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 with a front-loaded purpose sentence, followed by clear Args and Returns sections. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's main function and parameter well, but lacks details on render settings dependency and file overwrite behavior. Given the simple one-parameter tool and output schema, it is mostly 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 description adds substantial value beyond the input schema by explaining `filepath` is absolute and must have a valid image extension, compensating for the schema's 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renders the current scene to an image file, specifying the verb and resource. It distinguishes from siblings like `render_animation` and `get_viewport_screenshot` by focusing on a single frame output.
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 or when-not-to-use guidance is provided. Usage is implied by the name and description, but alternatives are not mentioned, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_meshA
Repair the defects analyze_mesh_quality reports.
Pairs with analyze_mesh_quality: run that first, then call this with the repairs the report calls for. Removing loose geometry and dissolving degenerate faces cannot change a well-formed mesh, so both are on by default. Filling holes creates new geometry and is opt-in.
Args: object_name: Name of the mesh object to repair. remove_loose: Delete loose vertices and wire edges, the ones reported as loose_vertex_count and wire_edge_count. dissolve_degenerate: Dissolve zero-area faces and zero-length edges, reported as zero_area_face_count. fill_holes: Close boundary loops, which reduces non_manifold_edge_count but invents geometry to do it.
Returns: Dict with the counts before and after, so the effect is visible.
| Name | Required | Description | Default |
|---|---|---|---|
| fill_holes | No | ||
| object_name | Yes | ||
| remove_loose | No | ||
| dissolve_degenerate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that remove_loose/dissolve_degenerate are idempotent-safe on well-formed meshes whereas fill_holes 'invents geometry', and it describes the return payload. It stops short of stating permissions, failure modes on invalid input, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose and pairing precede a clean Args/Returns block; every sentence earns its place. It is slightly longer than strictly necessary due to repeated parenthetical count names, but nothing is 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 4-parameter mutation with an output schema present, the description covers purpose, workflow ordering, per-flag effects, and return shape. An agent has everything needed to invoke it correctly after a quality report.
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 entirely, and it does: every boolean is explained in order-semantics terms (loose vertices/wire edges, zero-area faces, boundary loops) and mapped back to the diagnostic counters it targets. object_name is defined as the mesh object to repair.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Repair the defects') and anchors the scope to a named sibling's output ('the defects analyze_mesh_quality reports'). An agent can distinguish it from the many other mesh tools (remesh, merge_vertices, dissolve_*) immediately.
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 prescribes the workflow: run analyze_mesh_quality first, then call this with the repairs the report calls for. It also explains which flags are safe defaults versus opt-in, giving the agent a decision rule rather than raw options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_fileA
Save the current Blender file.
If filepath is empty, saves to the current file path (overwrite). If filepath is provided, performs a "Save As" to the given path.
Args: filepath: Optional absolute path to save as. Must have .blend extension. Empty string saves to current file.
Returns: Dict with the saved file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses overwrite behavior and file extension requirement, but does not detail error handling or confirmation prompts.
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?
Description is succinct, with front-loaded purpose and structured Args/Returns sections. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and no annotations, the description covers core functionality and return value. Could be more complete with potential error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds meaning: explains the default empty string behavior and required .blend extension.
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 'Save the current Blender file' and distinguishes between overwriting and Save As. This differentiates it from siblings like open_file and import_file.
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 explains when to use empty filepath (overwrite) vs provided (save as), but does not explicitly mention when not to use or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_all_geometryB
Select, deselect or invert all geometry on a mesh.
Args: object_name: Name of the mesh object. action: One of: SELECT, DESELECT, INVERT, TOGGLE.
Returns: Dict with the counts selected afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | SELECT | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the four action modes and that a count of selected elements is returned, but it omits important operating context such as whether the mesh must be in edit mode, what 'all geometry' means (vertices, edges, faces), and how action TOGGLE differs from INVERT.
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 short, front-loaded, and contains no filler. The Args and Returns sections are clearly separated, though the Args block largely repeats structured schema information rather than adding new detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return-value explanation is not strictly required. However, for a selection-modifying operation with no annotations, the description should clarify mode prerequisites and usage context beyond the basic action list, leaving it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It names object_name and lists the action values, which is minimally adequate, but the action list duplicates the schema's enum and adds no deeper semantics such as default behavior or the practical difference between INVERT and TOGGLE.
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 set (select, deselect, invert) and a clear resource scope ('all geometry on a mesh'), making it immediately distinguishable from sibling tools like select_objects, select_by_index, and select_by_axis. An agent can tell what the tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no guidance about when to use it instead of alternatives such as select_objects, select_by_index, select_by_axis, or select_similar. There are no prerequisites, exclusions, or context cues to help the agent choose among selection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_by_axisA
Select geometry on one side of the object along an axis.
The usual way to say "the top", "the front" or "the left half".
Args: object_name: Name of the mesh object. axis: One of: X, Y, Z. sign: POS for the positive side, NEG for the negative side, ALIGN for geometry lying in the plane. extend: Add to the current selection instead of replacing it.
Returns: Dict with how many elements were selected.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Z | |
| sign | No | POS | |
| extend | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that 'extend' adds rather than replaces the current selection, implying the default replaces it, but it omits prerequisites (active object/edit mode), what happens on empty selection, and failure modes for a mutating selection operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, followed by a compact Args block and a one-line Returns. Efficient overall, though the Returns line partially duplicates the existing output schema rather than adding new 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?
An output schema exists, so return values need not be explained further, and all four parameters are documented despite 0% schema coverage. The remaining gap is behavioral entry conditions (object state / selection mode) for a tool with no annotations to lean on.
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, and it largely does: it defines 'sign' values POS/NEG/ALIGN in semantic terms beyond the enum labels and explains 'extend' as additive selection. All four parameters are addressed, though axis is only restated as X/Y/Z from the enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (select) and resource (geometry on one side of the object along an axis), plus a plain-language gloss ('the top', 'the front', 'the left half') that makes the tool immediately identifiable. It is clearly distinct from siblings such as select_by_index, select_similar, and select_faces_by_sides.
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 'The usual way to say "the top"...' implies the intended use case clearly, but the description never states when to prefer this over sibling selection tools like select_by_index or select_similar, and gives no exclusions or prerequisites. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_by_indexA
Select specific vertices, edges or faces by index.
The deterministic way to select: no operator, no viewport, no guessing. analyze_mesh_quality reports sample indices for each defect it finds, so this is how to act on them.
Args: object_name: Name of the mesh object. element: One of: VERTEX, EDGE, FACE. indices: Indices to select. Must be non-negative and within the mesh. extend: Add to the current selection instead of replacing it.
Returns: Dict with how many elements were selected and the mesh's totals.
| Name | Required | Description | Default |
|---|---|---|---|
| extend | No | ||
| element | Yes | ||
| indices | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses that selection replaces the current selection unless 'extend' is set, and that the return value reports a selected count plus mesh totals. It omits any note on permission/context requirements or behavior when indices are invalid (beyond the stated constraint).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then Args/Returns in a scannable format; each parameter line earns its place. The 'no operator, no viewport, no guessing' line is mildly promotional but does convey that selection is deterministic rather than interactive.
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 4-parameter selection tool with no annotations and 0% schema coverage, the description covers the missing pieces: parameter meanings, replace-vs-extend behavior, and input constraints. The Returns section is somewhat redundant given an output schema exists, and no failure behavior is described, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all four parameters must be explained here, and they are: object_name, element with its enum values, indices with a non-negativity/in-range constraint, and extend with its add-vs-replace semantics. This fully compensates for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Select specific vertices, edges or faces by index') and contrasts itself against interactive/operator-based selection, which helps separate it from the crowded select_* family. It does not explicitly name sibling alternatives like select_by_axis, select_similar, or select_all_geometry, so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real workflow trigger: analyze_mesh_quality reports sample indices per defect, and this tool is how to act on them. That is concrete when-to-use guidance. It stops short of saying when NOT to use it versus the other selection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_faces_by_sidesA
Select faces by how many sides they have.
The direct way to find ngons (GREATER than 4) or triangles (EQUAL to 3), which is what topology cleanup usually needs.
Args: object_name: Name of the mesh object. number: Number of sides to compare against. A face has at least 3. comparison: One of: LESS, EQUAL, GREATER, NOTEQUAL. extend: Add to the current selection instead of replacing it.
Returns: Dict with how many faces were selected.
| Name | Required | Description | Default |
|---|---|---|---|
| extend | No | ||
| number | No | ||
| comparison | No | EQUAL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose a key behavioral trait: extend adds to the current selection instead of replacing it, and it reports how many faces were selected. It does not state mode/prerequisite requirements (e.g. edit mode, active object), which is a meaningful gap for a Blender selection 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?
Two front-loaded sentences state purpose and motivation, then a compact Args block and a one-line return note. No filler, and the most decision-relevant content (ngon/triangle detection) comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter selection tool with an output schema, the description covers purpose, all parameters, and selection semantics adequately. The only shortfall is not noting execution prerequisites (edit mode / active mesh), which matters for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains that number compares sides (faces have at least 3), lists the comparison enum semantics, and clarifies extend's add-vs-replace behavior. Only object_name is left largely self-evident; the rest add real meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Select faces by how many sides they have') and immediately names the concrete outcomes (ngons, triangles). An agent can distinguish this from sibling selectors such as select_by_index, select_by_axis, and select_similar without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'The direct way to find ngons (GREATER than 4) or triangles (EQUAL to 3), which is what topology cleanup usually needs' gives concrete when-to-use context and even maps comparison values to goals. It stops short of naming the sibling tools it replaces or stating exclusions, so it is clear but not fully routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_linkedA
Select all geometry linked to the current selection.
Expands selection to include all connected vertices, edges, and faces. Useful for isolating mesh islands or selecting connected components.
Args: object_name: Name of the mesh object.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior—expanding selection to linked geometry—but lacks details on prerequisites (e.g., existence of a current selection), mode requirements (likely Edit mode), and error handling. With no annotations, it carries the full burden, and these omissions reduce 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 concise at five sentences, front-loaded with the main action, followed by clarification, usage, and parameter/return details. Every sentence adds value, and there is no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one parameter and an output schema, the description covers the basics. However, it omits important context such as the requirement for Edit mode, the definition of 'current selection,' and potential side effects (e.g., selection changes). This leaves gaps for an agent to fully understand the tool's operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It describes the only parameter 'object_name' as 'Name of the mesh object,' adding value beyond the schema's type and title. However, it doesn't clarify constraints (e.g., object must be a mesh) or behavior if the object is invalid.
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: selecting all geometry linked to the current selection, expanding to include connected vertices, edges, and faces. It distinguishes itself from siblings like 'select_objects' by focusing on connected components within a mesh object rather than selecting by name or type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance by stating it is 'useful for isolating mesh islands or selecting connected components.' While it doesn't explicitly mention when not to use it, the context of sibling tools like 'select_objects' implies alternative use cases, and the guidance given is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_objectsA
Select objects by name.
Args: names: List of object names to select. deselect_others: If True, deselect all other objects first. Defaults to True.
Returns: Dict with list of selected object names.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | ||
| deselect_others | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It states the selection action and return type but does not disclose error handling, behavior with invalid names, or side effects beyond deselect_others. Adequate 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 extremely concise, front-loading the purpose, then listing args and return. Every sentence is necessary 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 selection tool with an output schema, the description covers the essential behavior. It mentions the default for deselect_others and the return format. Could mention if selection replaces or adds, but overall it is complete enough.
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 description must compensate. It clearly explains the meaning of each parameter, including the default behavior of deselect_others. This adds significant value beyond the schema types.
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 selects objects by name, which is a specific verb+resource. However, it does not explicitly differentiate from sibling selection tools like select_linked, though the 'by name' aspect provides some distinction.
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 like select_linked or manual selection. The description only lists parameters without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_similarA
Grow the current selection to geometry that resembles it.
Requires something to already be selected: it compares against that.
Args: object_name: Name of the mesh object. type: What to compare. Face options: FACE_MATERIAL, FACE_AREA, FACE_SIDES, FACE_PERIMETER, FACE_NORMAL, FACE_COPLANAR, FACE_SMOOTH, FACE_FREESTYLE. Edge options: EDGE_LENGTH, EDGE_DIR, EDGE_FACES, EDGE_FACE_ANGLE, EDGE_CREASE, EDGE_BEVEL, EDGE_SEAM, EDGE_SHARP, EDGE_FREESTYLE. Vertex options: VERT_NORMAL, VERT_FACES, VERT_GROUPS, VERT_EDGES, VERT_CREASE. threshold: How close a match must be, 0.0 to 1.0.
Returns: Dict with how many elements were selected.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | FACE_AREA | |
| threshold | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It discloses the key behaviors that the operation mutates the current selection and depends on an existing selection, and summarizes the return as a count. It does not state failure behavior when nothing is selected, undo implications, or whether selection is additive or replacing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the one-line purpose, then prerequisites, then Args/Returns. The long enum list is justified because the schema enum is unstructured; little else is wasted.
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 selection-mutation tool with an output schema (so return values need no detail) and unannotated params, the description supplies purpose, precondition, param semantics, and return shape. Only edge-case behavior (empty selection, additive vs replacing) 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?
Schema coverage is 0%, so the description must compensate, and it largely does: it groups the flat, alphabetically-sorted enum into FACE_/EDGE_/VERT_ categories with semantic labels, and gives 'threshold' a meaning and range (0.0 to 1.0) absent from the schema. object_name is only trivially covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and mechanism: 'Grow the current selection to geometry that resembles it' plus the comparison basis. An agent can tell this apart from a plain select tool, though it never names its closest siblings (select_linked, select_by_index).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition: 'Requires something to already be selected: it compares against that.' That tells the agent when the tool is applicable. It stops short of naming alternatives such as select_linked or select_by_index for related selection tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
separate_meshC
Separate a mesh into parts.
Args: object_name: Name of the mesh object. type: Separation method. One of: SELECTED, MATERIAL, LOOSE.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | SELECTED | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says the return is a 'Confirmation dict'; it does not disclose that this is a destructive mutation, what happens to the original object, whether new objects appear in the scene, or whether the original is removed. For an unannotated mesh-mutating 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 purpose line is short and front-loaded, but the Args/Returns boilerplate largely duplicates schema titles and the enum, and the 'Returns: Confirmation dict' line is redundant given an output schema exists. Efficient in size but not every line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so that line isn't needed, but for an unannotated, destructive, 0%-coverage two-parameter tool the description is too thin: it omits side effects and the distinguishing behavior of each separation mode, which an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names the two parameters and their intent, but listing SELECTED/MATERIAL/LOOSE merely restates the schema enum without explaining what each separation method actually does — precisely the semantics 0%-coverage schema leaves undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Separate a mesh into parts') that an agent can act on. However it never differentiates itself from obvious siblings like join_objects, and doesn't clarify what 'parts' means for each mode. Clear but no sibling routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of alternatives (e.g., join_objects as the inverse, or which tool to use for splitting by material vs. disconnected geometry). The agent gets no help choosing this tool over the many other mesh-editing siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_cameraC
Set the active scene camera.
Args: object_name: Name of the camera object to make active.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only that a confirmation dict is returned; it does not say what happens if object_name is not a valid camera, whether the prior active camera is replaced, or any permission/state constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and structured as Args/Returns. It is brief and every sentence serves a purpose, though the Returns line is redundant given 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?
For a single-parameter mutation tool with no annotations, the description covers the basic mechanics and an output schema covers return values. It is still missing behavioral context (error cases, effect on the previous active camera) that an agent would want before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add real meaning by specifying the value must be the name of a camera object to make active, but it gives no format, naming convention, or validation detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the active scene camera'), which is clear and distinct from siblings like set_camera_property or point_camera_at. However, it does not explicitly differentiate itself from those siblings, leaving the agent to infer the distinction.
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 when-to-use or when-not-to-use guidance, and no alternatives are named. The agent must infer that this selects a camera as active rather than configuring one, with no help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_annotation_stroke_propertyC
Set a property on an annotation stroke.
Args: annotation_name: Name of the annotation data block. layer_name: Name of the layer containing the stroke. stroke_index: Index of the stroke in the layer (0-based). property: Property to set. One of: line_width, material_index, display_mode. value: The value to set.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| layer_name | Yes | ||
| stroke_index | Yes | ||
| annotation_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It is a mutation tool, yet it does not state where changes are persisted, whether the stroke must exist, whether edits are undoable, or what 'Confirmation dict' actually contains. Only the bare 'Returns: Confirmation dict' line is offered.
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 Args/Returns structure is front-loaded and efficient, with each parameter given a single line. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and all parameters are at least named. But for a five-required-parameter mutation with no annotations, the absence of any behavioral or usage context leaves the definition adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does document all five parameters — notably the 0-based stroke_index and the valid property enum values (line_width, material_index, display_mode). However, the 'value' parameter, whose meaning varies per property, is left as just 'The value to set', leaving type/range semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (set) and resource (property on an annotation stroke), which is unambiguous. It does not explicitly differentiate itself from siblings like add_annotation_stroke or create_annotation, but the resource scope makes its role discernible.
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 never says when to use this tool, what preconditions must hold (e.g., the annotation/layer/stroke must already exist), or how it relates to add_annotation_stroke or remove_annotation_layer. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bone_propertyB
Set a property on a bone in an armature.
Args: armature_name: Name of the armature object. bone_name: Name of the bone. property: Property to set. One of: roll, length, use_connect, use_deform, envelope_distance, head_radius, tail_radius, use_inherit_rotation, use_local_location. value: Value to set the property to.
Returns: Confirmation dict with bone name, property, and new value.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| bone_name | Yes | ||
| armature_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It confirms a return structure, but says nothing about permission/mode requirements, what happens on invalid property/value pairs, or reversibility of the mutation, and the return shape is likely already covered by the output schema. For a mutation tool with zero annotation coverage this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by a compact Args/Returns block; every line earns its place with no padding. Slightly verbose in repeating the property enum already present in 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?
For a low-moderate complexity setter with an output schema present, the description covers purpose, all parameters, and the confirmation return, which is adequate. Missing mode/prerequisite context and per-property value typing keep it from being 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 description coverage is 0%, so the description must compensate, and it does document all four parameters with intent (armature_name, bone_name, property, value). The gap is 'value': the description never indicates that the expected type varies by property (bool flags vs. float radii), which is the main ambiguity left for the caller.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set a property on a bone in an armature') and enumerates the settable properties, making it easy to distinguish from sibling tooling like add_bone or set_modifier_property. It lacks an explicit naming of what it is not, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of required context (edit vs. pose mode, existing armature/bone), and no comparison to related tools such as set_pose or set_modifier_property. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_brush_propertyB
Set a property on the active sculpt brush.
Args: property: Property to set - size, strength, auto_smooth_factor, or use_frontface. value: Value to set. size is int (1-500), strength is float (0.0-1.0), auto_smooth_factor is float (0.0-1.0), use_frontface is bool.
Returns: Confirmation dict with property name and new value.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It helpfully discloses accepted value types and ranges and that a confirmation dict is returned, but it omits the key precondition that a brush must be active and says nothing about persistence or undo behavior for a mutation.
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-sentence body plus a short Args/Returns block, front-loaded with the action and well organized. Slight redundancy in describing the return value when an output schema already exists, but no wasted prose.
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 two-parameter mutation with no annotations, the description covers value types and the response shape (the latter already encoded in the output schema). It is missing the operational precondition (active brush/sculpt mode) and the stroke_method value, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does document both parameters with types and ranges, which is real added value. However, the schema enum lists five properties including 'stroke_method', while the description enumerates only four and gives no type/range for stroke_method, leaving a gap and a misleading enumeration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set a property on the active sculpt brush'), which is clearly distinct from the sibling set_sculpt_brush (which picks the brush) and set_annotation_stroke_property. It does not explicitly name those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'active sculpt brush' implies a precondition (must be in sculpt mode with a brush selected), but the description never states that requirement, nor does it contrast with set_sculpt_brush or explain when to set a property versus switch brushes. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_camera_from_viewA
Match the active camera to the current 3D viewport view.
Returns: Confirmation dict with the camera's new location and rotation.
| 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?
The description states the return value (confirmation dict with location/rotation) but provides no annotations or details about side effects, undo behavior, or requirements (e.g., camera must exist). This is adequate 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?
Two sentences, front-loaded with the primary action, no extraneous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and an output schema that confirms return format. The description covers purpose and return value adequately. Could mention that a camera must be active, but not required for 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?
There are no parameters, and the input schema coverage is 100% (trivially). The description does not need to explain parameters, but per guidelines, high schema coverage yields baseline 3. No additional value is added.
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 'Match the active camera to the current 3D viewport view', using a specific verb and resource. It distinguishes from siblings like set_active_camera (sets which camera is active) and point_camera_at (orients camera to a target).
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 aligning the camera to the viewport, but provides no explicit guidance on when to use versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_camera_propertyC
Set a property on a camera.
Args: object_name: Name of the camera object. property: Property to set. One of: lens, clip_start, clip_end, sensor_width, sensor_height, dof.use_dof, dof.focus_distance, dof.aperture_fstop, ortho_scale, shift_x, shift_y, type, sensor_fit. value: The value to set.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It implies a mutation and mentions a confirmation dict, but does not disclose side effects, permission requirements, reversibility, or failure modes for an invalid property/value combination.
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 front-loaded with its purpose, followed by concise Args and Returns sections. The property enumeration duplicates the schema enum, but the overall structure is efficient 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?
For a mutation tool with no annotations and 0% schema description coverage, the description leaves important gaps: value typing, when to use this tool, and behavioral side effects are missing. The output schema covers the return value, but the input and usage context remain underspecified.
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 names all three parameters and lists the valid property values, but 'value' is only described as 'The value to set' with no indication of expected type or range per property, so the explanation remains 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 states a specific verb and resource: 'Set a property on a camera.' It is clear what the tool does, but it does not distinguish itself from the many sibling set_*_property tools beyond naming the camera object type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as set_object_property or other camera-related tools. The description only states the mechanics of the operation, leaving use context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_collection_visibilityA
Set collection visibility in viewport and/or render.
Args: collection_name: Name of the collection. visible: Whether the collection should be visible. viewport: Apply visibility change to viewport. Defaults to True. render: Apply visibility change to render. Defaults to True.
Returns: Confirmation dict with visibility state.
| Name | Required | Description | Default |
|---|---|---|---|
| render | No | ||
| visible | Yes | ||
| viewport | No | ||
| collection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the behavioral scope (affects viewport and/or render independently) and states the return value, but says nothing about whether the collection must already exist, whether the change is reversible, or any error conditions for this mutation.
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 leading sentence is front-loaded and states the core purpose. The Args/Returns block is slightly padded and partly duplicates the schema (notably the defaults), but it is readable and not wasteful overall.
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 4-parameter mutation with no annotations, the description documents every parameter and the effect scope, which is the key information. The Returns line is redundant given the output schema exists, and error behavior is unaddressed, but nothing essential for calling the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: all four parameters are explained, including the default-true semantics of viewport and render. Only a minor gap remains, such as whether collection_name must be an exact name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set collection visibility') and scopes it precisely to 'viewport and/or render'. This is clearly distinguishable from sibling tools such as set_object_visibility, since the resource (collection) is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the viewport/render scope flags, which tells the agent it can target either mode, but it offers no explicit when-to-use guidance and never mentions alternatives (set_object_visibility, move_to_collection). Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_color_ramp_elementA
Move or recolor an existing ColorRamp stop.
At least one of position or color must be given. Moving a stop past a neighbour reorders the ramp, so indices may shift after this call — read the ramp back with get_color_ramp if you need certainty.
Args: material_name: Name of the material. node_name: Name of the ColorRamp node. index: Zero-based index of the stop to edit. position: New position, 0.0 to 1.0. Omit to leave unchanged. color: New RGB or RGBA color. Omit to leave unchanged.
Returns: Dict with the element's resulting position and color.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| index | Yes | ||
| position | No | ||
| node_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively discloses key behavioral traits: indices may shift after the call, and the need to read back for certainty. It also specifies that operation is a modification (move/recolor) and includes parameter ranges (position 0-1). This goes beyond basic schema information.
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: a one-line summary, a brief behavioral note, structured Args list, and a Returns line. Every sentence adds value 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 (5 params, mutation, index shifting) and the presence of an output schema (not shown but mentioned), the description adequately explains input, behavior, and return value. Minor omissions (e.g., error conditions for invalid index) prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description fully documents all 5 parameters in the Args section, including meaning, format, and default behavior (omit to leave unchanged). This is critical given 0% schema description coverage, and the description covers 100% of parameters effectively.
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 moves or recolors an existing ColorRamp stop, distinguishing it from siblings like add/remove/read color ramp tools. The verb-resource combination 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 provides usage constraints (at least one of position or color must be given) and advises reading back the ramp after use for certainty, but does not explicitly compare to alternative tools for similar tasks, limiting guidance on when to use this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_color_ramp_interpolationA
Set how a ColorRamp blends between its stops.
'CONSTANT' gives hard-edged bands with no blending, which is what turns a noise or voronoi texture into discrete regions: scale plates, cracked mud, stylised cel shading. 'EASE' and 'B_SPLINE' give softer falloff than 'LINEAR'. Set color_mode to 'HSV' to sweep through hues between two stops rather than blending through grey.
Args: material_name: Name of the material. node_name: Name of the ColorRamp node. interpolation: One of EASE, CARDINAL, LINEAR, B_SPLINE, CONSTANT. color_mode: Optional. One of RGB, HSV, HSL. Omit to leave unchanged.
Returns: Dict with the applied interpolation and color mode.
| Name | Required | Description | Default |
|---|---|---|---|
| node_name | Yes | ||
| color_mode | No | ||
| interpolation | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the effect of each interpolation mode and that omitting color_mode leaves it unchanged. It also states the return shape. It does not cover prerequisites (e.g., node must already exist) or error behavior, so it stops short of full 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?
Front-loaded purpose sentence followed by useful detail, Args, and Returns. Slight redundancy in re-listing the enum values already in the schema, but overall tight 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?
With an output schema present, the description needn't explain return values in depth, and it briefly does anyway. For a four-parameter shader-node mutation with no annotations, it covers parameter meaning and mode effects adequately; only prerequisite/error context 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?
Schema description coverage is 0%, so the description must compensate, and it documents all four parameters with valid values and the key semantic detail that omitting color_mode leaves it unchanged. The enum listings largely mirror the schema enums, adding limited value there, but the mode-effect explanations add real meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set how a ColorRamp blends between its stops'), scoping to a material's named ColorRamp node. An agent can distinguish it from siblings like set_color_ramp_element, add_color_ramp_element, and get_color_ramp from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance for the parameter values: CONSTANT for hard-edged bands (noise/voronoi, cel shading), EASE/B_SPLINE for softer falloff than LINEAR, HSV to sweep hues instead of blending through grey. It does not, however, route the agent against sibling tools such as set_color_ramp_element.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_curve_propertyB
Set a property on a curve object.
Args: curve_name: Name of the curve object. property: Property to set - resolution_u, fill_mode, bevel_depth, bevel_resolution, extrude, twist_mode, or use_fill_caps. value: Value to set. Type depends on property.
Returns: Confirmation dict with property name and new value.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| curve_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions a confirmation return, but does not state side effects, permissions, error conditions, whether the curve must exist, or whether changes are reversible. For a mutation tool, this leaves important behavioral context unstated.
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 and front-loaded: the core action appears first, followed by Args and Returns. Every line is useful, and there is no redundant or vague 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?
The tool has an output schema, so return values are already covered, and the description lists all parameter names and the property enum. However, with no annotations and zero schema description coverage, the description should do more to clarify value types, prerequisites, and mutation behavior. It is adequate but incomplete for a property-setting 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 0%, so the description must compensate. It names all three parameters and lists the allowed property values, which is valuable. However, it only says the value type depends on the property and never maps specific properties to expected types or ranges, leaving a significant semantic 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 and resource: 'Set a property on a curve object.' It names the exact curve properties that can be set, which clearly distinguishes this tool from generic property setters like set_modifier_property or set_object_visibility. An agent can identify the tool's purpose without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as set_modifier_property or other curve-editing tools. It does not mention prerequisites, modes, or exclusions. Usage is only implied by the tool name and stated purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_edge_creaseA
Set edge crease value on all edges for subdivision surface control.
Crease values control how sharp edges remain when a Subdivision Surface modifier is applied. 0 = fully smooth, 1 = fully sharp.
Args: object_name: Name of the mesh object. value: Crease value. Range: -1.0 to 1.0.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does explain the domain effect of crease values and confirms a dict return, but it omits operationally relevant traits: whether edit mode is required, whether existing creases are overwritten, and whether the change is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and mechanism, then a clean Args/Returns block. The value-semantics sentence earns its place, though the blank-line padding and the redundant 'Confirmation dict' note add some length without adding much.
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 3-parameter mesh-editing tool with an output schema, the description supplies the conceptual meaning, parameter ranges, and selection modes an agent needs. What remains missing is workflow context: modal/edit-mode prerequisites and how this interacts with other edge-attribute tools like mark_sharp.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: value range (-1.0 to 1.0), selection enum meanings and default, and object_name all documented. Minor gap: negative values are inside the stated range but their effect is never explained, so the semantics of the lower half of the range are undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (set) and resource (edge crease) plus the mechanism it controls (subdivision surface sharpness). The qualifying sentence about subdivision surface modifiers distinguishes it from adjacent tools like mark_sharp or bevel_edges without naming them directly, which is enough for an agent to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the ALL vs CURRENT semantics and tells the agent to use the select_* tools first when targeting a subset, which is real routing guidance. It stops short of naming an alternative tool (e.g. mark_sharp) or stating when-not to use this, so it is clear context rather than full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_eevee_light_pathA
Set EEVEE light intensity controls (Blender 5.1+).
Scales how strongly direct and indirect lighting contribute. Only applies when the render engine is EEVEE.
Args: direct_intensity: Multiplier for light arriving straight from a lamp. Range 0.0-10.0, 1.0 is unchanged. Leave unset to keep the current value. indirect_intensity: Multiplier for bounced light. Range 0.0-10.0, 1.0 is unchanged. Leave unset to keep the current value.
Returns: Dict with both intensities after the change.
| Name | Required | Description | Default |
|---|---|---|---|
| direct_intensity | No | ||
| indirect_intensity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses the 0.0-10.0 range, that 1.0 means unchanged, that unset parameters preserve the current value, and that the return contains both intensities. It omits whether the change is undoable or requires an active scene/object, so not quite a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the EEVEE-only constraint are front-loaded in the first two lines, and the Args block is tight. The Returns section is mildly redundant given an output schema exists, costing a small amount of efficiency.
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 two-parameter optional mutation with no annotations, the description supplies ranges, defaults, neutral values, and the engine precondition, and an output schema covers return shape. Only the side effects on the scene (undo, object targets) are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description fully compensates: it explains what each multiplier means (direct light vs bounced light), the valid range, the neutral value of 1.0, and the null/unset behavior. That is more than the schema communicates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set EEVEE light intensity controls') and scopes it to Blender 5.1+ and the EEVEE render engine, which meaningfully narrows it against the many sibling light/rendering tools. It does not, however, name a sibling (e.g. set_light_property) to disambiguate overlap, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition 'Only applies when the render engine is EEVEE' gives real context for when the tool is valid, but there is no guidance about when to prefer this over set_light_property or set_shadow_settings, and no statement about what happens if the engine is not EEVEE.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_frameB
Set the current frame in the timeline.
Args: frame: Frame number to set as current.
Returns: Confirmation dict with the new current frame.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It only states the action and return type, but omits side effects, prerequisites (e.g., valid timeline), or constraints (e.g., frame range limits).
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, using two sentences plus an Args/Returns list. It is front-loaded with the action and minimally 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?
For a simple 1-parameter tool, the description is adequate but incomplete. It lacks details on valid frame range, whether the operation is undoable, and what happens if the frame is out of bounds. Given no annotations or output schema, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage. The description merely repeats 'Frame number' from the parameter name without adding meaning (e.g., valid range, type constraints beyond integer). It does not compensate for the schema's lack of 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 action ('set the current frame') and the resource ('timeline'). It distinguishes well from sibling tools like set_frame_range or insert_keyframe by specifying it sets a single frame.
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 change the current frame) but does not provide explicit guidance on when to use this tool versus alternatives such as set_frame_range or insert_keyframe. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_frame_rangeA
Set the start and end frames of the scene timeline.
Args: start: Start frame number. end: End frame number. Must be greater than start.
Returns: Confirmation dict with the new frame range.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. It mentions a constraint (end > start) and return type, but lacks details on side effects, undo behavior, or error handling.
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: one sentence for purpose followed by structured Args/Returns. Every word is necessary, 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 simple setter with two integer parameters, the description covers purpose, parameter constraints, and return type. Could mention that it modifies the scene's frame range, but it's fairly complete given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds meaning by explaining each parameter (start frame, end frame) and the constraint that end must be greater than start. This compensates for the schema's lack of 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 it sets the start and end frames of the scene timeline, using specific verbs and resource. It distinguishes from sibling 'set_frame' which likely targets the current frame.
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 setting timeline range but does not explicitly state when to use or exclude alternatives. No mention of when not to use 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.
set_geometry_node_inputA
Set an input value on a geometry nodes modifier.
Args: object_name: Name of the object with the modifier. modifier_name: Name of the geometry nodes modifier. input_name: Name of the input socket to set (as shown in the modifier panel). value: The value to set. Type depends on the input (float, int, vector, etc.).
Returns: Confirmation dict with the input name and new value.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| input_name | Yes | ||
| object_name | Yes | ||
| modifier_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so description carries full burden. It does not disclose safety traits (e.g., overwrites values, requires existing modifier) or handling of invalid types beyond saying 'type depends on input'.
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, front-loaded with purpose, then clear Args and Returns sections. No redundant information; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, and return value. Good for a simple setter tool. Could mention prerequisites (e.g., modifier must exist) but that is somewhat 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?
With 0% schema description coverage, description explains each parameter meaningfully. For 'value', it adds that type depends on input (float, int, vector, etc.), which compensates for schema gaps. However, lacks examples or constraints.
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 the verb 'set' and the resource 'input value on a geometry nodes modifier'. Distinguishes from siblings like 'list_geometry_node_inputs' or 'connect_geometry_nodes'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: when you need to change a specific input on a GN modifier. No explicit when-not or alternatives provided, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_handle_typeB
Set the handle type for all control points of a curve.
Args: curve_name: Name of the curve object. handle_type: Handle type - AUTO, VECTOR, ALIGNED, or FREE_ALIGN.
Returns: Dict with confirmation of handle type change.
| Name | Required | Description | Default |
|---|---|---|---|
| curve_name | Yes | ||
| handle_type | No | AUTOMATIC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the important mutation scope ('all control points of a curve' – a bulk, non-undoable-by-this-tool change) and that it returns a confirmation dict, which is genuine context. It says nothing about required state (edit vs object mode), permissions, or whether the change is reversible.
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 purpose is front-loaded in a single sentence, followed by conventional Args/Returns sections with no padding. Slightly boilerplate, but every line carries information and nothing is wasted.
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 the return value need not be explained further, and the description is adequate for a simple, low-risk two-parameter curve edit. It nonetheless leaves gaps for a no-annotation mutation tool: no required object state, no account of the omitted enum behaviors (FREE, TOGGLE_FREE_ALIGN), and no note on side effects or undoability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it partly does by naming both parameters and describing curve_name and handle_type. However, it lists only four of the seven enum values (AUTO, VECTOR, ALIGNED, FREE_ALIGN) and omits AUTOMATIC – which the schema marks as the default – along with FREE and TOGGLE_FREE_ALIGN, leaving an agent with an incomplete and slightly misleading option set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Set the handle type') and identifies the exact target scope ('all control points of a curve'), so an agent can distinguish this from mesh or object-level sibling tools. It does not explicitly contrast with curve siblings like switch_curve_direction or smooth_curve, 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?
There is no guidance on when this tool should be used versus alternatives, nor any prerequisite or exclusion stated – nothing about edit mode, curve selection, or whether the object must be a Bezier/NURBS curve for handles to exist. The only implied usage is 'you have a curve whose handles you want to change'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_interpolationC
Set the interpolation type for keyframes on a property.
Args: object_name: Name of the object. data_path: Property data path. interpolation: Interpolation type. One of: CONSTANT, LINEAR, BEZIER, SINE, QUAD, CUBIC, QUART, QUINT, EXPO, CIRC, BACK, BOUNCE, ELASTIC.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| data_path | Yes | ||
| object_name | Yes | ||
| interpolation | No | BEZIER |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Set' implies a mutation, but there is no disclosure of what happens when no keyframes exist, whether it inserts/overwrites, or what side effects it has. It only notes a 'Confirmation dict', which is thin given the output schema already covers returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by compact Args/Returns blocks. Well-sized, with only minor redundancy in restating the enum values already present in 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?
For a mutation tool with no annotations and 0% schema coverage, the description leaves real gaps: no preconditions, no data_path format, no side-effect notes. The existing output schema and enum reduce the burden on returns and valid values, keeping it at a minimum-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it partially does by naming all three parameters. However, the values are shallow ('Name of the object.', 'Property data path.') and do not explain the data_path format (e.g. 'location' vs a full RNA path), and the interpolation list merely duplicates the schema enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Set the interpolation type for keyframes on a property.' An agent can tell it acts on animation keyframe interpolation, not on color ramps or curves. It stops short of explicitly disambiguating from the similar sibling set_color_ramp_interpolation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no alternatives named. It never states that the object must already have keyframes on the given property, which is the central precondition for this tool to be meaningful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_light_propertyB
Set a property on a light object.
Args: object_name: Name of the light object. property: Property to set. One of: energy, color, shadow_soft_size, spot_size, spot_blend, area_size, area_size_y, use_shadow, angle, specular_factor, diffuse_factor, volume_factor. value: The value to set. Type depends on the property.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states only 'Set a property' and 'Returns: Confirmation dict,' without describing side effects, required object state, permissions, reversibility, or possible errors. For a mutation tool with zero annotations, 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 front-loaded with a one-sentence purpose, then organized into Args and Returns sections. The property list is necessary and no sentences are wasted. It is appropriately sized for a three-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and reduces the need to explain return values, the tool has no annotations and 0% schema description coverage. The description covers parameter names and property values but omits value-type details and behavioral side effects. It is minimally sufficient for invocation but not fully complete for safe 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?
Schema description coverage is 0%, so the description must compensate. It names all three parameters, lists the allowed property values, and notes that value type depends on the property. However, it does not specify the expected value type per property or clarify object_name constraints, so it only partially compensates for the missing 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 states a specific verb and resource: 'Set a property on a light object.' It clearly identifies the operation and target object type. However, it does not distinguish this tool from siblings such as set_shadow_settings, set_material_property, or set_object_visibility, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no prerequisites, and no alternatives. It does not explain when an agent should choose set_light_property over related tools like set_shadow_settings or create_light. It only lists arguments and return format, leaving usage context entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_locationC
Set the position of an object.
Args: object_name: Name of the object. location: XYZ position as a 3-element list/tuple.
Returns: Dict with the object name and new location.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a mutation but never states the coordinate space (local vs world), the units, or whether it overwrites existing position. It does at least disclose the return shape (object name and new location).
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?
Short, front-loaded, and the Args/Returns structure is easy to scan. Every line earns its place, though the numbered parameters are fairly minimal.
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?
Output schema exists so return values needn't be explained. For a mutation tool with zero annotation coverage and zero schema descriptions, the description covers the argument meanings but omits the behavioral facts an agent needs (units, coordinate space, permission assumptions).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate; it adds meaningful semantics by explaining that location is an "XYZ position as a 3-element list/tuple," which the schema only conveys via minItems/maxItems=3. However, it omits units and coordinate space, leaving the most consequential ambiguity unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: "Set the position of an object." The word "position" distinguishes it from siblings like set_rotation and set_scale, so an agent can infer the axis of manipulation. It stops short of explicitly naming those siblings as 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?
No when-to-use guidance, no prerequisites, and no mention of alternatives (set_rotation, set_scale, apply_transforms, set_origin). The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_material_blend_modeB
Set the blend mode of a material (EEVEE).
Args: material_name: Name of the material. mode: Blend mode. One of: OPAQUE, CLIP, HASHED, BLEND.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the EEVEE-only constraint and that a confirmation dict is returned, but says nothing about required material state, error behavior for a missing material, or whether the change persists or is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded single-sentence purpose followed by a compact Args/Returns block. Slightly boilerplate but no wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be elaborated. For a two-parameter mutation with no annotations, the description covers the inputs and the EEVEE scope but omits failure modes and side effects, leaving modest gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it does list both parameters and enumerates the mode values. However, the enum is already declared in the schema, and 'Name of the material' adds little beyond the parameter name, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Set the blend mode of a material', with an EEVEE qualifier that scopes the operation. It is distinguishable from siblings like set_material_property or set_material_color, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of related siblings such as set_material_property that also mutate material settings. The EEVEE parenthetical implies context but does not state when this tool should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_material_colorB
Set the base color of a material's Principled BSDF node.
Args: material_name: Name of the material. color: RGBA color as a list of 4 floats (0.0-1.0). e.g. [1.0, 0.0, 0.0, 1.0] for red.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It states the action and return type but does not explain what happens if the material is missing or lacks a Principled BSDF node, nor does it describe side effects or permissions needed.
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 with three lines of useful information. It follows a clear structure: purpose, args, returns. The inclusion of 'Returns: Confirmation dict.' is slightly redundant given it is a setter, but not detrimental.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool with an output schema (implied), the description covers the core function and parameters. However, it lacks error handling context and does not mention any constraints (e.g., material must have Principled BSDF node). Given the tool's simplicity, this is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to the color parameter: 'RGBA color as a list of 4 floats (0.0-1.0). e.g. [1.0, 0.0, 0.0, 1.0] for red.' The input schema only specifies 'array' with no item type or range, so the description compensates well.
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 base color of a material's Principled BSDF node.' It specifies the verb (set) and the resource (base color of a material's Principled BSDF node), differentiating it from siblings like set_material_property or assign_material.
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 like set_material_property. It does not mention prerequisites such as material existence or the presence of a Principled BSDF node, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_material_propertyB
Set a property on a material's Principled BSDF node.
Args: material_name: Name of the material. property: Property to set. One of: metallic, roughness, specular_ior_level, emission_strength, alpha, transmission_weight, ior, coat_weight, coat_roughness, sheen_weight, sheen_roughness, anisotropic, anisotropic_rotation, subsurface_weight, emission_color. value: The value to set. Float for most properties, list for color properties.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the tool mutates a Principled BSDF node and returns a confirmation dict, but says nothing about prerequisites (e.g., material must exist), permission needs, reversibility, error behavior, or whether a missing node is created. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then uses Args and Returns sections. The property list is long but necessary for the enum, and the Returns line is slightly redundant given the output schema exists. Overall, well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple property setter, the description covers the action, parameters, and return. However, with no annotations and 0% schema coverage, it should mention prerequisites and edge-case behavior (e.g., what happens if the material lacks a Principled BSDF node). The output schema means the return description is not strictly needed, but the missing usage and behavioral context leave clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does partially: it enumerates the valid property values (redundant with the enum but confirms) and explains that value should be a float for most properties and a list for color properties. However, material_name is left unexplained and there are no further format or constraint details.
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 ('Set') and resource ('a property on a material's Principled BSDF node'), distinguishing it from generic shader node tools and material color tools. An agent can tell exactly what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The enumerated property list implicitly signals when to use this tool (to set one of those Principled BSDF properties), but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives like set_shader_node_property or set_material_color. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_modifier_propertyB
Set a property on a modifier (e.g., levels, count, offset, angle).
Args: object_name: Name of the object. modifier_name: Name of the modifier. property: The modifier property to set (e.g., 'levels', 'count', 'width', 'segments', 'angle', 'offset', 'ratio', 'iterations'). value: The value to set.
Returns: Confirmation dict with updated property.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| object_name | Yes | ||
| modifier_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only states 'Set a property' and lists examples, but lacks disclosure of side effects, error behavior, or prerequisites for mutation.
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 with a clear structure (Args, Returns). The first sentence immediately conveys the purpose without extraneous 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?
Given no annotations and 4 required parameters, the description provides essential param info and return type, but lacks operational context like error handling or prerequisites for setting properties.
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%, but the description adds a list of example values for 'property' and briefly explains each parameter. 'value' is described as 'The value to set', which is minimal but adds some meaning.
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 'Set a property on a modifier' with explicit examples like levels, count, offset, angle. This distinguishes it from sibling tools such as set_bone_property or set_brush_property.
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 modifying modifier properties but does not provide explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned among the many sibling set_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_object_visibilityB
Set object visibility in viewport and/or render.
Args: object_name: Name of the object. visible: Whether the object should be visible. viewport: Apply visibility change to viewport. Defaults to True. render: Apply visibility change to render. Defaults to True.
Returns: Confirmation dict with visibility state.
| Name | Required | Description | Default |
|---|---|---|---|
| render | No | ||
| visible | Yes | ||
| viewport | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a mutation and repeats the schema's default values (True for viewport/render), but says nothing about required permissions, reversibility/undo behavior, effect on child objects, or whether the object must already exist.
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 front-loaded and efficiently structured with Args and Returns sections. Every line earns its place, though the Returns line is somewhat redundant given 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?
For a 4-parameter mutation tool with no annotations, the description covers parameter semantics and mentions the return shape, which the output schema already handles. It is missing usage guidance and behavioral caveats, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by documenting all four parameters in an Args block, clarifying that viewport and render control which visibility channels are modified. This adds genuine meaning beyond the bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set object visibility') and scopes it to viewport and/or render, which distinguishes it from the sibling set_collection_visibility by targeting a single object. It does not explicitly name alternatives, but the purpose is immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives no when-to-use guidance relative to alternatives such as set_collection_visibility or viewport hiding. The 'and/or' phrasing implies the two scopes are independent, but there are no prerequisites, exclusions, or routing hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_originA
Set the origin point of an object.
Args: object_name: Name of the object. type: Origin type. One of: GEOMETRY (origin to geometry center), CURSOR (origin to 3D cursor), CENTER_OF_MASS (origin to center of mass), CENTER_OF_VOLUME (origin to center of volume). Defaults to GEOMETRY.
Returns: Confirmation dict with new origin location.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | GEOMETRY | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return value but does not describe side effects, required object state, whether geometry is affected, or any permission or mode requirements.
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 front-loaded and well structured with Args and Returns sections. The Returns section is somewhat redundant because an output schema exists, but it remains concise and useful.
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 two-parameter tool with an output schema, the description covers parameters and return value adequately. However, with no annotations, it leaves important behavioral and usage context unspecified, making it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description defines both parameters clearly. It explains object_name and gives detailed enum semantics for type, including the default of GEOMETRY, which significantly compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Set the origin point of an object.' This clearly differentiates it from sibling transform tools such as set_location, set_rotation, and set_scale. No ambiguity remains 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 does not state when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It only explains the origin type options, which is parameter guidance rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_output_formatA
Set the render output format and optionally the output file path.
Args: format: Output format. One of: PNG, JPEG, OPEN_EXR, TIFF, BMP. filepath: Optional output file path. Must be an absolute path.
Returns: Confirmation dict with the new output settings.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | ||
| filepath | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a mutation tool. It usefully discloses the valid format list, that filepath is optional and must be absolute, and that a confirmation dict is returned, but it omits whether the change is session-scoped or persistent, what happens when filepath is empty, and any side effects on existing render 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?
Front-loaded with the core action, followed by tightly structured Args and Returns sections. Every sentence adds information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not strictly required, and the description still summarizes it. However, for a mutation tool with no annotations, it should say more about persistence or scope of the change. The absolute-path rule is a good addition, but the behavioral picture remains 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 0%, so the description must supply meaning. It does add a valuable constraint for filepath ('Must be an absolute path') that is absent from the schema, but the format list merely repeats the enum already present in the schema. Half the parameters gain meaning, half are redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and resource ('render output format') plus the optional secondary resource ('output file path'). Among siblings like set_render_engine, set_render_resolution, and set_render_samples, this is clearly the one that controls output format and destination, so an agent can identify it without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, nor is any alternative sibling named. The usage is implied by the name and description (call this to change output format), which is adequate but leaves the agent to infer when it should be preferred over e.g. set_render_engine or render_image settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_particle_renderingB
Set rendering mode for an object's particle system.
Args: object_name: Name of the object with a particle system. render_type: Render type. One of: NONE, PATH, OBJECT, COLLECTION. instance_object: Object to instance (when render_type is OBJECT). instance_collection: Collection to instance (when render_type is COLLECTION).
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| render_type | No | PATH | |
| instance_object | No | ||
| instance_collection | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states a confirmation dict is returned, but discloses nothing about whether the change is reversible, what happens to existing render settings, whether it requires a specific mode or permissions, or failure behavior when no particle system 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?
Front-loaded one-line summary followed by a compact Args block and a one-line Returns note. Every line earns its place; only the Returns line is arguably redundant given the output 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?
For a 4-param mutation tool with no annotations, the description covers parameters well and an output schema exists so return values need not be detailed. However, it omits default behavior, side effects, and error conditions, leaving a mutation's behavioral profile largely undisclosed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: all four parameters are documented, the render_type enum values are enumerated, and the conditions under which instance_object/instance_collection apply are spelled out. It falls short of noting the defaults (PATH, empty strings) that live only 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 states a specific verb and resource: set the rendering mode for an object's particle system. That is clear enough for an agent to select it against most siblings, though it does not explicitly distinguish itself from nearby tools like set_particle_velocity or add_particle_system.
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 such as add_particle_system or set_particle_velocity, nor on prerequisites (e.g. that the object must already have a particle system). The conditional notes on instance_object/instance_collection are parameter semantics, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_particle_velocityA
Set velocity settings for an object's particle system.
Args: object_name: Name of the object with a particle system. normal: Velocity along face normals. tangent: Velocity along face tangents. object_align_factor: XYZ velocity factors relative to the object. 3-element vector.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| normal | No | ||
| tangent | No | ||
| object_name | Yes | ||
| object_align_factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains what the tool does but does not disclose side effects, dependencies, or state changes beyond parameter values. With no annotations, the description carries full burden but offers minimal 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 concise: a one-sentence summary followed by a structured Args and Returns section. It front-loads the main purpose and presents parameter details efficiently without unnecessary 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?
The description covers the tool's purpose and all parameters adequately, and notes the return type. However, it lacks information on error conditions or prerequisites, such as requiring the object to have a particle system. Given the simplicity of the tool, it is mostly 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 has 0% description coverage, so the description's Args section is essential. It provides clear explanations for each parameter, including that normal and tangent are velocity components and object_align_factor is a 3-element vector. This significantly enhances 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 clearly states the tool's function as 'Set velocity settings for an object's particle system', specifying the verb (Set) and resource (velocity settings of particle system). This distinguishes it from sibling tools like set_particle_rendering or set_physics_property.
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, nor does it mention prerequisites such as the object needing an existing particle system. It assumes the user knows the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_physics_propertyB
Set a property on an existing physics simulation.
Args: object_name: Name of the object with the physics simulation. physics_type: Physics type - RIGID_BODY, CLOTH, FLUID, or PARTICLE_SYSTEM. property: Property name to set (depends on physics type). value: Value to set.
Returns: Confirmation dict with property name and new value.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| object_name | Yes | ||
| physics_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states the operation and that a confirmation dict is returned, but says nothing about permissions, reversibility, side effects, what happens if the property is invalid, or whether setting a value overwrites existing data. For a mutation tool with no annotations 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 front-loaded with the purpose, then follows a clean Args/Returns structure. It is appropriately sized for a four-parameter tool, though the Returns section is arguably redundant because 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?
Given the lack of annotations, 0% schema description coverage, and the complexity of physics property setting, the description is only partially complete. It covers the basic call mechanics and return shape, but leaves an agent without a way to discover valid property names or expected values for each physics type.
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 the four parameters. It names each one, gives the enum values for physics_type, and notes that the property name depends on the physics type. It does not enumerate valid property names or describe expected value types, so it adds useful but incomplete meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: set a property on an existing physics simulation. The scope is clear and implicitly distinguishes it from sibling property setters such as set_modifier_property or set_material_property. An agent can tell it targets physics simulations specifically.
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, no alternatives, and no prerequisites beyond the phrase 'existing physics simulation'. It does not mention related tools like add_cloth_sim or bake_physics, nor does it explain when this tool should be chosen over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_poseA
Set the pose of a bone in an armature.
Args: armature_name: Name of the armature object. bone_name: Name of the bone to pose. location: Optional XYZ location offset for the bone. rotation: Optional XYZ Euler rotation in radians. scale: Optional XYZ scale.
Returns: Confirmation dict with the bone's new pose values.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| location | No | ||
| rotation | No | ||
| bone_name | Yes | ||
| armature_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lacks details on behavioral traits such as whether it overwrites existing pose, merges with current pose, or works outside Pose Mode; no mention of side effects or requirements. Annotations are absent, so the description should carry the burden but falls short.
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?
Efficient docstring with Args/Returns sections; no unnecessary text, well-organized and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers basic purpose and parameters, but omits behavioral context (e.g., resets vs blends) and usage scenario. Output schema exists, reducing need to document return values, but overall completeness is merely 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?
Adds meaning beyond the schema by describing location as 'offset', rotation as 'XYZ Euler in radians', and scale as 'XYZ scale'. This clarifies type and units, though it could specify array ordering or constraints.
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 the verb 'Set' and resource 'pose of a bone in an armature', distinguishing it from other set_* tools like set_location or set_bone_property which operate on different objects or properties.
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 (e.g., set_location for objects, set_bone_property for non-pose attributes), nor any conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_render_engineB
Set the render engine.
Args: engine: Render engine to use. One of: BLENDER_EEVEE, CYCLES, BLENDER_WORKBENCH.
Returns: Confirmation dict with the active render engine.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it partially meets it by disclosing the return value ('Confirmation dict with the active render engine'). It does not say whether the change is scene-persistent, whether it invalidates existing render settings, or whether it requires an active scene/context, which matters for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then a compact Args/Returns block with no filler. The docstring scaffolding is mildly templated but costs almost nothing for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the Returns line need only corroborate it, which it does. For a simple one-parameter setter this is nearly adequate, but the missing BLENDER_EEVEE_NEXT option and the absence of any persistence or context requirement keep it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the enum is the only semantic carrier, so the description must compensate. It attempts this by listing 'BLENDER_EEVEE, CYCLES, BLENDER_WORKBENCH' — but the schema enum also includes BLENDER_EEVEE_NEXT, which the description omits. The list is therefore both redundant with the schema and incomplete, risking an agent believing BLENDER_EEVEE_NEXT is invalid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Set the render engine.' An agent immediately knows the operation and there is no competing sibling for this specific scene-level setting. It does not, however, position itself against adjacent tools like set_render_samples or set_viewport_shading, which contextually touch similar render configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of when this must be called relative to render_image or render_animation. The usage is only implied by the tool name itself, so an agent that is unsure whether engine changes persist or apply per-render gets no help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_render_resolutionA
Set the render resolution.
Args: width: Render width in pixels. Range: 1-8192. height: Render height in pixels. Range: 1-8192. percentage: Resolution percentage scale. Range: 1-100.
Returns: Confirmation dict with the new resolution settings.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| percentage | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It provides parameter ranges but does not disclose any side effects, permissions, or whether the operation requires an active render scene. Typical non-destructive update, but lacks explicit 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 concise and front-loaded with the purpose. Uses a clear docstring format with args and returns. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity and presence of output schema, the description covers parameter constraints and return value. Could mention if any prerequisites (like active scene) exist, but generally 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?
With 0% schema description coverage, the description adds meaning by specifying ranges (1-8192 for width/height, 1-100 for percentage) and default for percentage. This compensates for missing 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 'Set the render resolution' with specific verb and resource. It distinguishes itself from sibling tools like set_render_engine and set_render_samples by focusing solely on resolution settings.
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 usage for setting resolution, but does not specify prerequisites or when not to use it (e.g., if other resolution-related tools exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_render_samplesA
Set the number of render samples.
Args: samples: Number of samples. Range: 1-10000.
Returns: Confirmation dict with the new sample count.
| Name | Required | Description | Default |
|---|---|---|---|
| samples | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It states the tool sets samples and returns a confirmation, but lacks details on side effects (e.g., does not trigger a render), validation behavior for out-of-range values, or whether it applies only to specific render engines.
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, consisting of three short sentences for purpose, argument, and return. It is front-loaded and contains no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward parameter-setting tool with one parameter and a return value, the description covers the essential aspects. It could optionally mention the render engine context or that it does not trigger a render, but it is sufficiently complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by specifying the parameter's meaning ('Number of samples') and its valid range ('1-10000'), adding significant value beyond the plain integer type 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 uses a specific verb 'Set' and resource 'render samples', clearly distinguishing it from siblings like set_render_resolution or render_image. It leaves no ambiguity about the tool's 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 a valid range (1-10000) for the samples parameter, giving some usage context. However, it does not compare with alternatives (e.g., render_image triggers a render) or indicate when not to use this tool, missing explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_rotationB
Set the rotation of an object.
Args: object_name: Name of the object. rotation: Rotation values. For EULER mode, XYZ angles in radians (3 elements). For QUATERNION mode, WXYZ values (4 elements). mode: Rotation mode, either EULER or QUATERNION. Defaults to EULER.
Returns: Dict with the object name and new rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | EULER | |
| rotation | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does add useful behavior: the mode-dependent input format, the default mode, and that the return is a dict with the object name and new rotation. But it says nothing about overwriting existing rotation, required object state, or failure modes for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by compact Args and Returns sections with no filler. The Args block is slightly verbose for three parameters but every line carries 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?
The core parameter semantics are covered and an output schema exists, so the Returns section is mildly redundant. However, for a mutation tool with zero annotation coverage, the absence of preconditions, state requirements, and the rotation-length conflict with the schema leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: object_name, the mode-dependent format of rotation (XYZ radians for EULER, WXYZ for QUATERNION), and the EULER default are all explained. One gap is that it asserts QUATERNION takes 4 elements while the schema pins rotation to exactly 3 items, leaving the agent with conflicting guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the rotation of an object'), which is unambiguous and clearly distinct from set_location/set_scale/set_pose in the sibling list. It stops short of explicitly naming those siblings or stating how it differs from apply_transforms, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., object must exist, be in object mode, or be selected), and no alternatives offered. The agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_scaleB
Set the scale of an object.
Args: object_name: Name of the object. scale: XYZ scale as a 3-element list/tuple.
Returns: Dict with the object name and new scale.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says the tool mutates an object's scale and returns a dict with the name and new scale, but it omits key side-effect details: whether the scale is local or global, whether it is absolute or relative, whether children are affected, and what permissions or prerequisites are needed.
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 short and front-loaded with the action, followed by clear Args and Returns sections. The Returns section repeats what the output schema already provides, which is slightly redundant, but overall the text is efficient and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema description coverage, and an output schema that already covers return values, the description should carry more behavioral context. It tells the agent how to call the tool and what it returns, but key operational details such as coordinate space, units, and transform side effects are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does document both parameters. It adds 'XYZ' and '3-element list/tuple' meaning to the scale array, which goes beyond the schema's type and min/max constraints. The object_name explanation is trivial but still present, so this is solidly above baseline for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Set the scale of an object.' It is immediately clear what the tool does. It does not differentiate itself from nearby transform siblings such as set_location, set_rotation, or apply_transforms, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The transform siblings (set_location, set_rotation, apply_transforms) are not mentioned, and no prerequisites or conditions are provided. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_scene_propertyC
Set a scene property such as frame_start, frame_end, frame_current, fps, unit_system, or render_engine.
Args: property: The scene property to set. Must be one of: frame_start, frame_end, frame_current, frame_step, fps, unit_system, render_engine, use_gravity, gravity. value: The value to set the property to. Type depends on the property.
Returns: Confirmation dict with the property name and new value.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the operation is a setter and returns a confirmation dict with the property name and new value, but says nothing about permissions, side effects, reversibility, or how changing one property might affect others. This is minimal for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Args and Returns sections and is front-loaded with the core purpose. It is concise overall, though the first sentence duplicates some of the property list that appears again in the Args section, leading to slight redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return value need not be explained further. However, the description fails to compensate for the lack of parameter descriptions and annotations: it provides no type mapping for values, no guidance on alternatives, and no behavioral context for a tool that can mutate multiple scene settings.
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 lists the enum values for the property parameter (though the schema already defines them) and states that the value's type depends on the property, but it does not specify what type or range each property expects. This leaves the agent unable to reliably choose a valid value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Set' and resource 'scene property', with a list of example properties. It is clear what the tool does, but it does not distinguish itself from closely related siblings like set_frame_range, set_render_engine, or set_frame, which could be used for some of the same properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the more specific setters in the sibling list (e.g., set_frame_range, set_render_engine). The description implies usage only through the list of properties, but does not mention alternatives, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sculpt_brushB
Set the active sculpt brush.
Args: brush_type: Brush type - DRAW, CLAY, CLAY_STRIPS, INFLATE, GRAB, SMOOTH, FLATTEN, FILL, SCRAPE, PINCH, CREASE, BLOB, MASK, MULTIRES_DISPLACEMENT_SMEAR.
Returns: Confirmation dict with active brush type.
| Name | Required | Description | Default |
|---|---|---|---|
| brush_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only says that the tool sets the active brush and returns a confirmation dict; it does not disclose requirements such as entering sculpt mode, the scope of the change, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and uses clear Args and Returns sections. The enum listing is somewhat redundant with the schema, but the overall structure is efficient 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?
For a simple one-parameter setter with an existing output schema, the description covers the action, the parameter values, and the return confirmation. It omits the likely prerequisite of being in sculpt mode, but otherwise contains what an agent needs to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists all valid brush_type enum values, which documents the parameter's options, but it adds no meaning or explanation beyond the enum values already 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 states a specific verb and resource: 'Set the active sculpt brush.' It is clear what the tool does, but it does not explicitly distinguish itself from the sibling tool set_brush_property, so it misses the highest bar for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as set_brush_property, nor does it state prerequisites like being in sculpt mode. Usage is only implied by the tool name and the concept of an active sculpt brush.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sculpt_symmetryA
Set sculpt symmetry axes.
Enables symmetrical sculpting across the specified axes. X-axis symmetry is the most common for character modeling.
Args: use_x: Enable X-axis symmetry. Defaults to True. use_y: Enable Y-axis symmetry. Defaults to False. use_z: Enable Z-axis symmetry. Defaults to False.
Returns: Confirmation dict with symmetry settings.
| Name | Required | Description | Default |
|---|---|---|---|
| use_x | No | ||
| use_y | No | ||
| use_z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Does not disclose side effects, reversibility, or activation requirements (e.g., sculpt mode). Only states it sets axes and returns confirmation.
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?
Short, well-structured with separate sections for purpose, args, and returns. Every sentence adds value, 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?
Adequate for a simple tool with 3 boolean params and an output schema. Lacks mention of prerequisites (e.g., object in sculpt mode) but otherwise complete given low 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 has 0% coverage, but description fully documents each parameter with defaults and behavior (e.g., 'Enable X-axis symmetry. Defaults to True.'). Adds significant value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets sculpt symmetry axes, enumerates axes, and notes common use for X-axis. It uniquely identifies its purpose among sibling set_* 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?
Provides context that X-axis is common for character modeling, but no explicit when/when-not or alternatives. Acceptable but lacks guidance on conditions (e.g., requires sculpt mode).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_shader_node_inputA
Set the default value of an unconnected input socket on a shader node.
This is how you dial in a procedural texture: Noise 'Scale' and 'Detail', Mapping 'Scale' and 'Rotation', a Principled BSDF 'Roughness', and so on. A socket that has a link into it ignores its default value, so disconnect it first if you want the default to take effect.
Args: material_name: Name of the material. node_name: Name of the node. socket: Socket name, or a zero-based index. Use the index when names are ambiguous — a Math node has two inputs both called 'Value'. value: A number, a boolean, or a 2-4 component list for vectors and colors (colors are RGBA).
Returns: Dict with the node, socket, and the value that was applied.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| socket | Yes | ||
| node_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains that the tool sets the default value, that connected sockets ignore it, and what the return value contains. However, it does not disclose potential side effects (e.g., permanent modification of the material) or any required permissions, making it slightly incomplete.
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 starts with a clear summary, provides context with examples, details parameter constraints in a organized Args block, and ends with the return value. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description is complete. It covers the purpose, usage conditions, parameter details, and return format. No additional context is necessary for accurate 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 coverage is 0%, and the description adds extensive meaning: it explains each parameter's role (material_name, node_name, socket with index option, value with allowed types), why socket can be an integer (ambiguous names), and how to format colors and vectors (2-4 component list). This far exceeds the schema which only provides types.
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 default value of an unconnected input socket on a shader node.' It provides concrete examples (Noise 'Scale', Principled BSDF 'Roughness') and distinguishes from sibling tools like connect_shader_nodes by explicitly mentioning that connected sockets ignore the set value.
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 explicit when-to-use guidance: 'This is how you dial in a procedural texture.' It also explains when not to use it (when socket has a link) and how to handle it ('disconnect it first'). Additionally, it advises using index for ambiguous socket names, e.g., Math node's 'Value' inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_shader_node_propertyA
Set a node-level property (not a socket) on a shader node.
These are the dropdowns and checkboxes on the node body rather than its input sockets: Math 'operation', Mix 'blend_type', Voronoi 'feature' (use 'DISTANCE_TO_EDGE' for vein and crack patterns), Wave 'wave_type' and 'bands_direction', Noise 'noise_dimensions'.
Args: material_name: Name of the material. node_name: Name of the node. property: Property name. Must be one of the allowed node properties. value: String enum identifier, number, or boolean.
Returns: Dict with the node, property, and the value that was applied.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| property | Yes | ||
| node_name | Yes | ||
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the nature of the operation (node-body properties rather than sockets) plus a domain hint ('DISTANCE_TO_EDGE' for vein/crack patterns). It still omits side-effect, permission, or reversibility information, leaving meaningful behavioral 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?
Front-loaded purpose sentence followed by a scoping clarification and a compact example list, then Args/Returns. Every section earns its place; the property-example list is slightly long but informative rather than wasteful.
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 and the description even summarizes the return dict, so return values are covered. For a four-param mutation tool the description supplies enough to invoke it correctly, though the absence of any safety or side-effect note is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it names all four parameters, clarifies that property 'must be one of the allowed node properties', and explains value as 'string enum identifier, number, or boolean'. This adds real meaning beyond the bare schema, though it doesn't document individual enum members.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (set a node-level property on a shader node) and immediately sharpens the scope with 'not a socket', which cleanly separates it from the socket-oriented sibling set_shader_node_input. The examples of concrete properties (Math 'operation', Mix 'blend_type', Voronoi 'feature') make the intent 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 'not a socket' clause implicitly routes the agent toward this tool for dropdowns/checkboxes and away from set_shader_node_input, giving clear context. However, it never names the alternative tool explicitly, so the routing is inferential rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_shadow_settingsB
Configure shadow settings for a light.
Args: object_name: Name of the light object. use_shadow: Whether to enable shadows, default True. shadow_soft_size: Soft shadow radius, default 0.25.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| use_shadow | No | ||
| object_name | Yes | ||
| shadow_soft_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it mostly does not. It states parameter defaults but omits whether the object must exist, whether the object_name must be a light specifically, idempotency, or permission requirements. The 'Returns: Confirmation dict' line is largely redundant given an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the Args block maps cleanly to the schema. It is compact with no filler, though the Returns line adds little given the output 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?
An output schema exists, so the return value needn't be spelled out, and all parameters are covered. But for an unannotated mutation tool, the description lacks behavioral context such as whether the target light must exist or what happens toggling shadows off, leaving it only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does document all three parameters with intent and defaults (use_shadow default True, shadow_soft_size default 0.25). The only gap is that the unit/range of shadow_soft_size is unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Configure shadow settings for a light.' This tells the agent exactly what the tool manipulates. However, it does not distinguish itself from the sibling set_light_property, which likely overlaps, leaving the agent to guess which light-configuration tool to pick.
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 set_light_property or create_light, no prerequisites (e.g. the light must already exist), and no exclusions. The agent must infer applicability entirely from the name and purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_smooth_shadingA
Set smooth or flat shading on an object.
TIP: For production use, prefer shade_auto_smooth which provides angle-based auto-smooth shading — it gives better results on hard-surface models by only smoothing faces within the angle threshold.
Args: object_name: Name of the mesh object. smooth: True for smooth shading, False for flat shading.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| smooth | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It accurately describes the action and return type, but could mention that it affects all faces and modifies normals. However, for a simple boolean operation, the current description is sufficient.
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 purpose, a TIP, and an Args section. It is not overly long, but the TIP adds bulk. Some sentences could be combined, but overall it is clear 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 only two simple parameters and an output schema present, the description fully explains the parameters and return value. The TIP provides additional useful context about alternatives, making it complete for the tool's 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 description coverage is 0%, but the description compensates by adding an 'Args' section that explains both parameters with clear semantics, beyond the schema's titles.
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 sets smooth or flat shading on an object, using a specific verb and resource. It distinguishes from the sibling tool 'shade_auto_smooth' by providing a TIP, thus making its unique purpose evident.
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 TIP explicitly recommends using 'shade_auto_smooth' for production use with a clear rationale, providing explicit when-not-to-use guidance and an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_uv_projectionC
Apply a projection-based UV mapping to a mesh object.
Args: object_name: Name of the mesh object. projection: Projection type - CUBE, CYLINDER, or SPHERE.
Returns: Confirmation dict with object name and projection type.
| Name | Required | Description | Default |
|---|---|---|---|
| projection | Yes | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a mutation but never states whether existing UV data is overwritten, whether the object must be selected/active, or what constraints apply. It does at least disclose the return shape ('Confirmation dict with object name and projection type'), which is a small positive.
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?
Compact, front-loaded, and free of filler. The Args/Returns structure is easy to scan, though restating the enum values from the schema is slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, the description omits essential context: whether UVs are replaced, object preconditions, and how it differs from the other UV tools. The output schema covers return values and the description summarizes them, so that part is fine, but the behavioral gaps leave an agent under-informed.
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 restates both parameters meaningfully ('Name of the mesh object', projection type list) but adds no practical detail beyond the schema's own enum — no format for object name, no note that projection only applies to mesh objects. Marginal but non-zero value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Apply a projection-based UV mapping to a mesh object.' The 'projection-based' qualifier loosely distinguishes it from siblings like uv_unwrap and smart_uv_project, but it never names or contrasts them explicitly, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. With siblings such as smart_uv_project, uv_unwrap, and pack_uv_islands in the same family, the description should say when projection mapping is preferred (e.g., hard-surface/mechanical shapes) and when to pick another tool instead. Nothing here routes the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_overlayB
Toggle a viewport overlay setting.
Args: overlay: Overlay property name. One of: show_wireframes, show_face_orientation, show_floor, show_axis_x, show_axis_y, show_axis_z, show_cursor, show_object_origins, show_relationship_lines, show_stats. enabled: Whether the overlay should be enabled.
Returns: Confirmation dict with the overlay name and state.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| overlay | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'Toggle' and mentions a confirmation return, but does not disclose side effects, persistence, whether changes affect renders or saved files, or any permission/context requirements.
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 short, front-loaded, and structured with Args and Returns sections. The Returns section is somewhat redundant because an output schema exists, but it does not harm readability.
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 output schema covers return values, and the description fully specifies the two required parameters. However, with no annotations, it should do more to explain when to use the tool and what the toggle affects beyond the viewport overlay setting itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by enumerating all valid overlay values and explaining that 'enabled' controls whether the overlay is enabled, which gives the agent enough to call the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Toggle a viewport overlay setting.' The purpose is clear, but it does not differentiate this tool from adjacent siblings like set_viewport_shading or other viewport-setting 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?
No when-to-use guidance, no prerequisites, and no alternatives are mentioned. The agent must infer that this tool is for toggling viewport overlays rather than other viewport or scene settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_shadingB
Set the viewport shading mode.
Args: mode: Shading mode. One of: WIREFRAME, SOLID, MATERIAL, RENDERED.
Returns: Confirmation dict with the new shading mode.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only states that it returns a confirmation dict. It does not disclose whether this affects only the viewport display or also rendering, what permissions or active context are required, or whether the change is reversible.
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 short and front-loaded, with purpose first and parameter/return details clearly separated. Every sentence is necessary, and there is 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 simple one-parameter enum tool with an output schema, the description is nearly complete. It covers purpose, parameter values, and return type; the main gap is the absence of usage guidance, which is minor given the tool's low 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 description coverage is 0%, so the description must compensate. It names the single parameter and lists the allowed enum values, but adds no meaning beyond what the enum already specifies 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 states a specific verb and resource: 'Set the viewport shading mode.' This is unambiguous and implicitly distinguishes from siblings like set_viewport_overlay or get_viewport_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites. The implied usage is only inferable from the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_world_backgroundA
Set the world background to a solid color or HDRI environment map.
Args: color: RGB color as [r, g, b] for solid background. Mutually exclusive with hdri_path. hdri_path: Absolute path to an HDRI image file. Mutually exclusive with color. strength: Background strength/intensity, default 1.0.
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| strength | No | ||
| hdri_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency burden. It discloses key behavioral traits: the tool accepts either a color (RGB array) or an HDRI path (mutually exclusive), and a default strength of 1.0. This is sufficient for a simple setter tool, though it lacks side-effect warnings (e.g., persistence or costs).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two lines of purpose plus Args/Returns sections. Every sentence adds value. The structure is front-loaded with the core action, followed by parameter details. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (3 parameters, 0 required, no enums) and the presence of an output schema, the description fully covers the usage context. The sibling tools are numerous but unrelated, and the description does not need to differentiate 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?
Schema coverage is 0%, so the description must compensate. It adds clear semantics: 'color' is an RGB array [r,g,b], 'hdri_path' is an absolute path to HDRI image, 'strength' defaults to 1.0. All three parameters are explained with usage notes, far exceeding schema-only info.
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: 'Set the world background to a solid color or HDRI environment map.' It specifies the verb 'Set' and the resource 'world background', and distinguishes itself by explicitly naming the two input modes (color vs HDRI). No sibling tool has a similar 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 usage context by explaining the mutual exclusivity of 'color' and 'hdri_path', guiding the agent on parameter selection. However, it does not compare to alternative tools (e.g., set_viewport_shading or set_scene_property), leaving when-to-use and when-not-to-use ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shade_auto_smoothA
Apply angle-based auto-smooth shading to an object.
Smooths faces only where the angle between adjacent face normals is below the given threshold, giving clean results on hard-surface models.
Args: object_name: Name of the mesh object. angle: Auto-smooth angle threshold in radians (0.0 to pi). Defaults to ~30 degrees (0.523599 rad).
Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It clearly explains the effect (smoothing based on angle threshold) and provides default behavior. It does not mention side effects like reversibility or requirements for mesh object, but is sufficiently informative.
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 (3 sentences plus structured Args/Returns), front-loaded with the core purpose, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a simple tool, the description covers essential aspects: purpose, parameter details, and return type. It could mention that it sets auto-smooth shading mode, but overall it is sufficiently complete for an agent to understand usage.
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 adds full meaning: object_name is the mesh object name, angle is the threshold in radians with a default of 0.523599 (~30 degrees) and valid range 0 to pi, which the schema does not provide.
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 applies angle-based auto-smooth shading to an object, explaining that it smooths faces based on angle between adjacent normals, which distinguishes it from general smooth shading.
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 hard-surface models but does not explicitly state when to use this tool over alternatives like set_smooth_shading, nor does it provide when-not conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_uv_projectB
Apply Smart UV Project to a mesh object.
Automatically unwraps the mesh using angle-based projection.
Args: object_name: Name of the mesh object. angle_limit: Angle limit in degrees for splitting faces (0.0-89.0). island_margin: Margin between UV islands (0.0-1.0). area_weight: Weight given to face area for island arrangement (0.0-1.0).
Returns: Confirmation dict with object name and UV map info.
| Name | Required | Description | Default |
|---|---|---|---|
| angle_limit | No | ||
| area_weight | No | ||
| object_name | Yes | ||
| island_margin | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions the unwrapping method and return type but omits side effects (e.g., UV layer creation/modification), failure conditions (e.g., non-mesh objects), or requirements beyond object name. This is insufficient for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a summary, one-line elaboration, Args block, and Returns. It is efficient and front-loaded. Minor redundancy: 'Apply Smart UV Project to a mesh object' mirrors the tool name, but overall no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (though not detailed), the description covers basic action, parameters, and return. However, lacking usage guidelines and behavioral transparency (e.g., side effects, failure modes) leaves gaps. It is adequate but not comprehensive for a tool with 4 parameters and a default-based 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?
With 0% schema description coverage, the description compensates by explaining each parameter: object_name (mesh object), angle_limit (splitting faces, 0-89?), island_margin (0-1), area_weight (0-1). This adds meaning beyond the schema's titles/types, though ranges are implied but not stated explicitly.
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 Smart UV Project to a mesh object' and 'Automatically unwraps the mesh using angle-based projection,' which is a specific, distinct action. It differentiates from sibling tools like 'uv_unwrap' (standard unwrap) and 'pack_uv_islands' (packing) by specifying the Smart UV Project method.
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 like 'uv_unwrap' or 'set_uv_projection'. The description assumes the user knows to choose Smart UV Project for angle-based unwrapping, but lacks context on prerequisites or comparative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smooth_curveB
Smooth the control points of a curve.
Args: curve_name: Name of the curve object.
Returns: Dict with confirmation of smoothing.
| Name | Required | Description | Default |
|---|---|---|---|
| curve_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It only states the action and return value, omitting details like whether smoothing modifies the object directly, is reversible, or works on all curve types.
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 with one sentence for purpose and brief Args/Returns sections. It could include more detail without being verbose, but it is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no annotations, and an output schema exists), the description covers the basic functionality. However, it lacks behavioral context such as whether the curve is modified in place or a new object is created, which is relevant for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (the schema only shows type string for curve_name). The description adds the critical semantic detail that curve_name is the 'Name of the curve object', clarifying what the parameter represents beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool smooths the control points of a curve, which is a specific action on a distinct resource. This distinguishes it from sibling tools like subdivide_curve or set_curve_property.
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. There is no mention of prerequisites, when not to use it, or comparison with curve-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snap_to_gridC
Snap an object's location to the nearest grid point.
Args: object_name: Name of the object. grid_size: Size of the grid cells. Defaults to 1.0.
Returns: Dict with the object name and snapped location.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_size | No | ||
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It indicates the operation changes the object's location and returns the new location, but omits coordinate space (world vs local), side effects, error behavior, mode prerequisites, and reversibility, which are important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in a single clear sentence, followed by structured Args and Returns sections. The Args block is slightly mechanical but justified by zero schema coverage, and there is no wasted prose.
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 the Returns note is redundant. For a simple mutation tool, the description covers the essentials, but it still leaves gaps around coordinate space, side effects, and usage context that an agent would need when selecting and invoking it.
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 documents both parameters — object_name as 'Name of the object' and grid_size with a default of 1.0 — but does not specify units for grid_size or how the object name is resolved.
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 ('Snap') and resource ('an object's location') with a clear target ('nearest grid point'). It implicitly distinguishes from siblings like set_location or apply_transforms, but it does not explicitly name or route against them.
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 such as set_location, nor any prerequisites, mode requirements, or exclusions. The Args block only documents parameters, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spin_meshA
Spin (lathe) mesh geometry around an axis.
Creates rotational geometry by duplicating and rotating the selected geometry around a center point. Great for creating round shapes like vases, columns, or wheels.
Args: object_name: Name of the mesh object. angle: Total spin angle in radians. Range: -6.283 to 6.283 (full circle). steps: Number of steps in the spin. Range: 1-1000. axis: Spin axis as XYZ vector. Defaults to Z-up (0, 0, 1). center: Center point for the spin as XYZ. Defaults to origin.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | ||
| angle | No | ||
| steps | No | ||
| center | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the core mechanics (the mesh is duplicated and rotated) and the meaning/default of every parameter, but says nothing about whether the original geometry is consumed or preserved, whether the operation is destructive/reversible, or whether permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the one-line purpose before the examples and the structured Args block. The content is well organized and mostly earns its place, though the example sentence and the per-arg prose run slightly long for a single mesh 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?
An output schema exists, so the terse 'Returns: Confirmation dict' is acceptable and return values need not be detailed. For a mutation tool with zero annotations and zero schema coverage, the description covers mechanics and all parameters well; the notable gap is destructive-ness/reversibility of the source geometry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it documents all six parameters with units (radians), ranges (-6.283 to 6.283, 1-1000), defaults (Z-up axis, origin center, ALL selection), and the ALL vs CURRENT semantics. This adds substantial meaning the bare schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('spin (lathe) mesh geometry around an axis') and expands it with a concrete mechanic ('duplicating and rotating the selected geometry around a center point') plus example outputs (vases, columns, wheels). It does not, however, differentiate itself from nearby generative siblings like sweep_profile_along_path or create_polygon_prism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context (round shapes such as vases, columns, wheels) and an actionable prerequisite for one mode: use the select_* tools first when selection is 'CURRENT'. It stops short of saying when to prefer this over alternatives such as sweep_profile_along_path, and lists no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subdivide_curveB
Subdivide a curve by adding control points between existing ones.
Args: curve_name: Name of the curve object. number_cuts: Number of cuts to make (1-100).
Returns: Dict with confirmation of subdivision.
| Name | Required | Description | Default |
|---|---|---|---|
| curve_name | Yes | ||
| number_cuts | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the action (adding control points) and constrains number_cuts (1-100), but does not disclose reversibility, side effects, or whether the curve is modified in place.
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 with a clear main sentence and docstring format. However, the Returns section is vague ('Dict with confirmation'). Overall efficient but not perfectly 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?
Given no annotations, low schema coverage, and only a vague promise of a confirmation dict, the description lacks detail about return values, side effects, and prerequisites. Incomplete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description merely repeats parameter names and types with minimal context (e.g., 'Name of the curve object') beyond the schema titles. It adds no semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'subdivide a curve' and mechanism 'adding control points between existing ones'. It is specific and distinguishable from sibling tools like subdivide_mesh.
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 like subdivide_mesh or smooth_curve. The description does not mention use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subdivide_meshA
Subdivide a mesh.
Args: object_name: Name of the mesh object to subdivide. cuts: Number of cuts per edge. Range: 1-100.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| cuts | No | ||
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says only 'Returns: Confirmation dict' — it does not disclose that subdivision rewrites mesh topology, whether the change is applied directly or as a modifier, undoability, or any performance cost at high cut counts. Most of what it states (cuts default 1, selection default ALL) merely repeats schema defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line summary followed by arg docs and a returns note. No filler sentences; every line contributes parameter or return 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?
With an output schema present, return values need not be detailed, and all three parameters are covered in prose. The remaining gap is precondition/behavioral context (edit mode, effect on topology) for a mutating mesh tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it names all three parameters, adds a range constraint for cuts (1-100) that the schema lacks, and explains the ALL/CURRENT enum semantics plus the default. Only object_name gets no added meaning beyond its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Subdivide a mesh') that an agent can distinguish from siblings such as subdivide_curve, remesh, or loop_cut on the resource noun alone. It stops short of explicitly naming an alternative, 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?
Gives real operational guidance for the 'selection' argument: use select_* tools first, ALL vs CURRENT, default ALL. It never says when to prefer subdivision over remesh/loop_cut or what preconditions (active object, edit mode) apply, so context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_extensionsA
Suggest helpful Blender extensions for a planned task.
Analyzes the task description and recommends free Blender extensions that could improve the workflow. Already-installed extensions are excluded.
Args: task_description: Description of the planned task. If empty, returns all extensions not currently installed.
Returns: Dict with 'suggestions' list of recommended extensions and 'installed' list of already-installed extension IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| task_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that recommendations are free extensions, installed ones are excluded, and the return structure includes suggestions and installed lists. No side effects are indicated, which is acceptable for a suggestion 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 structured as a docstring with sections for purpose, args, and returns. It is slightly verbose but clear and well-organized, earning a high trust score on conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter) and the presence of an output schema (implied by context signals), the description fully covers what the tool does, how to use it, and what it returns. No gaps remain.
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 0% description coverage, but the tool's description includes an 'Args' section that explains the 'task_description' parameter's behavior, especially when empty. This adds essential meaning 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 'Suggest helpful Blender extensions for a planned task.' It specifies the verb 'suggest' and the resource 'extensions,' and it is distinct from sibling tools which focus on modeling, animation, and other Blender 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 explains that the tool analyzes a task description to recommend extensions, and that an empty task_description returns all uninstalled extensions. It does not explicitly compare to alternatives, but the context makes usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sweep_profile_along_pathA
Sweep a closed profile along a 3D path to make a solid tube, pipe, cable or rope.
Use this for anything that follows a route: hoses, handrails, wires, vines, tentacles, roads. It orients the profile with parallel transport, so the tube never creases or folds where the path turns vertical, and it reports whether any bend is too tight for the profile to fit around.
Args: path_points: Centreline as a list of [x, y, z] points, in order. At least 2, at most 2000. Consecutive points must differ. profile: Cross-section shape - CIRCLE, SQUARE, HEXAGON, or TRIANGLE. radius: Distance from the centreline to the furthest point of the profile, in Blender units. Must be positive. sides: Number of sides for a CIRCLE profile (3-1024). Ignored by the fixed-sided profiles. resolution: Samples generated between each pair of path points, which smooths the path with a centripetal Catmull-Rom spline. 0 uses the points exactly as given. 8-16 gives a smooth curve. twist: Total rotation of the profile about the path from start to end, in radians. Spreads evenly along the path. caps: Close both ends. Leave True for a printable solid. name: Name for the created object.
Returns: Dict with the object name, vertex and face counts, and a validity report: min_clearance_ratio (path curvature radius over profile radius at the tightest point), tightest_point, and self_intersects. A ratio below 1.0 means rings overlap inside the bend, so the result is watertight but is not a solid.
| Name | Required | Description | Default |
|---|---|---|---|
| caps | No | ||
| name | No | Sweep | |
| sides | No | ||
| twist | No | ||
| radius | No | ||
| profile | No | CIRCLE | |
| resolution | No | ||
| path_points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does real work: it discloses the parallel-transport orientation method, the guarantee that the tube doesn't crease on vertical turns, and a validity report with min_clearance_ratio semantics ('below 1.0 means rings overlap inside the bend'). It omits side effects like where the object lands in the scene/collection and whether existing objects are affected, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then a use-case line, then a structured Args block where every entry earns its place by supplying information absent from the schema. Slightly long, and the Returns section partially duplicates the output schema, but there is little waste.
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 an 8-parameter geometry tool with no annotations and a 0%-covered schema, the definition supplies purpose, use cases, per-parameter semantics, the spline method, and an interpretation of the validity report. Nothing an agent needs to invoke it correctly 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?
Schema description coverage is 0% across 8 parameters, so the description must compensate fully, and it does: it documents path_points bounds (2-2000, distinct consecutive points), profile enum values, radius sign constraint, sides range with an explicit 'ignored by fixed-sided profiles' note, resolution meaning and recommended range, twist units, and caps behavior. Per-parameter meaning is unambiguous.
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?
Starts with a specific verb+resource ('Sweep a closed profile along a 3D path to make a solid tube') and immediately disambiguates from siblings like create_curve, create_threaded_shaft and analyze_sweep_path by naming the concrete artifacts it produces (hoses, handrails, wires, roads). An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use context ('anything that follows a route') with a list of example use cases, which is strong positive guidance. However, it never names or defers to alternatives such as analyze_sweep_path (for checking an existing path) or create_curve, and states no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_curve_directionB
Switch the direction of a curve's splines.
Args: curve_name: Name of the curve object.
Returns: Dict with confirmation of direction switch.
| Name | Required | Description | Default |
|---|---|---|---|
| curve_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are given, so the description must fully disclose behavior. It states it 'switches direction' but does not explain what this entails (e.g., reversing normals, tangency changes, or if it's destructive). The effect on the curve is ambiguous, and no prerequisites or side effects are mentioned.
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, consisting of a one-sentence purpose followed by a structured Args/Returns section. Every part is necessary, though the Returns section is terse. No redundancy or superfluous 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?
Given the tool's simplicity (one parameter, no output schema provided), the description covers the essential purpose and parameter. It does not explain the return value (confirming direction switch) beyond a dict, but with an output schema present, this is acceptable. Could mention any prerequisites like the curve type or if it works on all curves.
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 only parameter, curve_name, is described as 'Name of the curve object,' which matches the name. With 0% schema description coverage, the description adds minimal value beyond the parameter name. However, the tool has only one parameter, so the description is adequate but not insightful.
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 'Switch the direction of a curve's splines' uses a specific verb and resource, clearly indicating the tool's function. It distinguishes itself from sibling curve tools like 'set_curve_property' or 'convert_curve_to_mesh' by focusing on direction reversal.
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 lacks any guidance on when to use this tool versus alternatives, such as when to reverse spline direction vs. using 'set_curve_property' for other attributes. No when-to-use or when-not-to-use details are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_cyclicB
Toggle the cyclic (closed loop) state of a curve.
Args: curve_name: Name of the curve object.
Returns: Dict with confirmation of cyclic toggle.
| Name | Required | Description | Default |
|---|---|---|---|
| curve_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral transparency. It only states 'Toggle' without explaining side effects, idempotency, error conditions (e.g., curve not found), or whether the operation modifies the curve in place.
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 with a clear front-loaded sentence, followed by well-structured Args and Returns sections. Every sentence earns its place 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 toggle tool with one parameter and an output schema, the description is minimally adequate. However, it could mention prerequisites (curve must exist) or error handling, which 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?
Schema coverage is 0%, so the description must compensate. It adds a basic description for curve_name ('Name of the curve object'), which adds some meaning beyond the schema but is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action 'Toggle' and the resource 'cyclic (closed loop) state of a curve', making the purpose crystal clear. It distinguishes itself from sibling tools like set_curve_property by focusing on toggling rather than setting properties.
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 like set_curve_property or smooth_curve. It lacks when-to-use, when-not-to-use, or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tris_to_quadsA
Convert adjacent triangle pairs to quad faces where possible.
Improves topology for subdivision and deformation. Not all triangles can be merged — only adjacent pairs with compatible angles.
Args: object_name: Name of the mesh object.
selection: "ALL" to act on the whole mesh, or "CURRENT" to act only
on what is already selected. Use the select_* tools to choose
first. Defaults to "ALL".Returns: Confirmation dict.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | No | ALL | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses partial-success behavior (not all triangles can be merged) and that it returns a confirmation dict, but omits what happens on failure, whether the operation is undoable, and any permission/mode requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation, then rationale, then caveats, then params. Well structured and mostly waste-free, though the Args/Returns scaffolding is slightly more verbose than needed given 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?
For a topology-mutating tool with two params, an output schema covering returns, and no annotations, the description supplies enough to call it correctly: purpose, applicability caveat, and both parameter meanings. Behavior under failure conditions is the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it documents object_name as the target mesh and explains the selection enum values ('ALL' vs 'CURRENT'), their default, and the prerequisite of selecting first. Minor gap: no note on whether object_name accepts an exact name or a reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('convert') and resource ('adjacent triangle pairs to quad faces'), with an explicit scope qualifier ('where possible'). This clearly distinguishes it from the inverse sibling quads_to_tris.
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?
Explains the purpose context (improves topology for subdivision and deformation) and gives a concrete precondition: only adjacent pairs with compatible angles merge, so it is not universally applicable. It also instructs using select_* tools before 'CURRENT'. It stops short of naming sisters like quads_to_tris or repair_mesh as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uv_unwrapA
Unwrap a mesh object's UVs using standard unwrap.
Requires seams to be marked for best results.
Args: object_name: Name of the mesh object. method: Unwrap method - ANGLE_BASED or CONFORMAL.
Returns: Confirmation dict with object name.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ANGLE_BASED | |
| object_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the mutation nature and the seam prerequisite, which is meaningful behavioral context, but says nothing about what happens without seams, permission requirements, or reversibility/undo behavior for a destructive UV overwrite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then the prerequisite, then Args and Returns in a clean structure. Reasonably sized with little waste, though the Args/Returns labels add slight boilerplate overhead.
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 the return description is unnecessary, and the seam prerequisite is a valuable addition for a mesh operation. Still missing is sibling differentiation from the other UV tools and any note on the destructive nature of overwriting UVs, which for an unannotated mutation tool leaves notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does name and explain both parameters (object_name and method). However, it lists only 'ANGLE_BASED or CONFORMAL' while the schema enum also includes SLIM, a discrepancy that could mislead about available options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Unwrap a mesh object's UVs using standard unwrap'), which is clearly distinct from generic verbs. However, it does not differentiate itself from sibling tools like smart_uv_project, pack_uv_islands, or set_uv_projection, leaving the agent to infer which UV operation to pick.
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 line 'Requires seams to be marked for best results' gives a useful prerequisite, which is real usage guidance. But there is no explicit statement of when to use this tool versus the sibling UV tools (smart_uv_project, pack_uv_islands), so selection 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
92 tool updates
v1.7.0- Changed
add_constraint2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / constraint_type / enumAdded value: +[ + "ARMATURE", + "CHILD_OF", + "CLAMP_TO", + "COPY_LOCATION", + "COPY_ROTATION", + "COPY_SCALE", + "COPY_TRANSFORMS", + "DAMPED_TRACK", + "FLOOR", + "IK", + "LIMIT_LOCATION", + "LIMIT_ROTATION", + "LIMIT_SCALE", + "LOCKED_TRACK", + "MAINTAIN_VOLUME", + "PIVOT", + "STRETCH_TO", + "TRACK_TO", + "TRANSFORM" +]
- Changed
add_curve_point3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / handle_type / defaultPrevious value: -"AUTO"New value: +"AUTOMATIC" - added
Input schema / properties / handle_type / enumAdded value: +[ + "ALIGNED", + "AUTO", + "AUTOMATIC", + "FREE", + "FREE_ALIGN", + "TOGGLE_FREE_ALIGN", + "VECTOR" +]
- Changed
add_fluid_sim3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / domain_type / enumAdded value: +[ + "GAS", + "LIQUID" +] - added
Input schema / properties / type / enumAdded value: +[ + "DOMAIN", + "EFFECTOR", + "FLOW" +]
- Changed
add_modifier2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / modifier_type / enumAdded value: +[ + "ARRAY", + "BEVEL", + "BOOLEAN", + "CAST", + "CORRECTIVE_SMOOTH", + "CURVE", + "DECIMATE", + "DISPLACE", + "EDGE_SPLIT", + "HOOK", + "LAPLACIAN_SMOOTH", + "LATTICE", + "MASK", + "MESH_DEFORM", + "MIRROR", + "REMESH", + "SCREW", + "SHRINKWRAP", + "SIMPLE_DEFORM", + "SKIN", + "SMOOTH", + "SOLIDIFY", + "SUBSURF", + "SURFACE_DEFORM", + "TRIANGULATE", + "WAVE", + "WEIGHTED_NORMAL", + "WELD", + "WIREFRAME" +]
- Changed
add_particle_system2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / emit_from / enumAdded value: +[ + "FACE", + "VERT", + "VOLUME" +]
- Changed
add_rigid_body2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "ACTIVE", + "PASSIVE" +]
- Changed
add_shader_node2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / node_type / enumAdded value: +[ + "ShaderNodeAddShader", + "ShaderNodeAttribute", + "ShaderNodeBlackbody", + "ShaderNodeBrightContrast", + "ShaderNodeBsdfAnisotropic", + "ShaderNodeBsdfDiffuse", + "ShaderNodeBsdfGlass", + "ShaderNodeBsdfGlossy", + "ShaderNodeBsdfHair", + "ShaderNodeBsdfPrincipled", + "ShaderNodeBsdfToon", + "ShaderNodeBsdfTranslucent", + "ShaderNodeBsdfTransparent", + "ShaderNodeBump", + "ShaderNodeCameraData", + "ShaderNodeClamp", + "ShaderNodeCombineXYZ", + "ShaderNodeDisplacement", + "ShaderNodeEmission", + "ShaderNodeFresnel", + "ShaderNodeGamma", + "ShaderNodeGeometry", + "ShaderNodeHueSaturation", + "ShaderNodeInvert", + "ShaderNodeLayerWeight", + "ShaderNodeLightPath", + "ShaderNodeMapRange", + "ShaderNodeMapping", + "ShaderNodeMath", + "ShaderNodeMix", + "ShaderNodeMixShader", + "ShaderNodeNormal", + "ShaderNodeNormalMap", + "ShaderNodeObjectInfo", + "ShaderNodeOutputMaterial", + "ShaderNodeOutputWorld", + "ShaderNodeRGB", + "ShaderNodeRGBCurve", + "ShaderNodeRGBToBW", + "ShaderNodeRaycast", + "ShaderNodeSeparateXYZ", + "ShaderNodeSubsurfaceScattering", + "ShaderNodeTangent", + "ShaderNodeTexBrick", + "ShaderNodeTexChecker", + "ShaderNodeTexCoord", + "ShaderNodeTexEnvironment", + "ShaderNodeTexGradient", + "ShaderNodeTexImage", + "ShaderNodeTexMagic", + "ShaderNodeTexNoise", + "ShaderNodeTexSky", + "ShaderNodeTexVoronoi", + "ShaderNodeTexWave", + "ShaderNodeUVMap", + "ShaderNodeValToRGB", + "ShaderNodeValue", + "ShaderNodeVectorCurve", + "ShaderNodeVectorMath", + "ShaderNodeVectorRotate", + "ShaderNodeVolumeAbsorption", + "ShaderNodeVolumePrincipled", + "ShaderNodeVolumeScatter", + "ShaderNodeWavelength" +]
- Added
analyze_sweep_path - Changed
apply_transforms3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Changed
bake_physics2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / physics_type / enumAdded value: +[ + "CLOTH", + "FLUID", + "PARTICLE_SYSTEM", + "RIGID_BODY" +]
- Changed
bevel_edges2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
boolean_operation2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / operation / enumAdded value: +[ + "DIFFERENCE", + "INTERSECT", + "UNION" +]
- Added
check_3d_printability - Changed
convert_object2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / target / enumAdded value: +[ + "CURVE", + "CURVES", + "FONT", + "GPENCIL", + "MESH", + "META", + "POINTCLOUD", + "SURFACE" +]
- Changed
create_curve2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "BEZIER", + "NURBS", + "PATH" +]
- Changed
create_light2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "AREA", + "POINT", + "SPOT", + "SUN" +]
- Changed
create_light_rig2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "OUTDOOR", + "RIM", + "STUDIO", + "THREE_POINT" +]
- Changed
create_object2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "CIRCLE", + "CONE", + "CUBE", + "CYLINDER", + "EMPTY", + "ICO_SPHERE", + "MONKEY", + "PLANE", + "SPHERE", + "TORUS", + "UV_SPHERE" +]
- Added
decimate_mesh - Changed
delete_collection3 fields changed- added
Input schema / properties / collection_nameAdded value: +{ + "title": "Collection Name", + "type": "string" +} - removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "collection_name" +]
- Changed
delete_light3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Changed
delete_object3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Changed
delete_scene3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / scene_nameAdded value: +{ + "title": "Scene Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "scene_name" +]
- Changed
dissolve_edges2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
dissolve_faces2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
dissolve_verts2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
duplicate_object3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Changed
enable_dyntopo2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / detail_mode / enumAdded value: +[ + "BRUSH", + "CONSTANT", + "MANUAL", + "RELATIVE" +]
- Changed
export_file2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "ABC", + "DAE", + "FBX", + "GLTF", + "OBJ", + "PLY", + "STL", + "SVG", + "USD", + "X3D" +]
- Changed
extrude_faces2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
fill_faces2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
flip_normals2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
get_object_info3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Added
get_selection - Changed
get_viewport_screenshot2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / mode / enumAdded value: +[ + "fast", + "full" +]
- Changed
grid_fill2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
import_file2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "ABC", + "DAE", + "FBX", + "GLTF", + "OBJ", + "PLY", + "STL", + "SVG", + "USD", + "X3D" +]
- Changed
inset_faces2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
list_objects2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type_filter / enumAdded value: +[ + "ARMATURE", + "CAMERA", + "CURVE", + "EMPTY", + "FONT", + "GPENCIL", + "LATTICE", + "LIGHT", + "LIGHT_PROBE", + "MESH", + "META", + "SPEAKER", + "SURFACE", + "VOLUME" +]
- Changed
loop_cut2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
mark_seam2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
mark_sharp2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
merge_vertices2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
parent_mesh_to_armature2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "ARMATURE_AUTO", + "ARMATURE_ENVELOPE", + "ARMATURE_NAME" +]
- Changed
quads_to_tris2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
recalculate_normals2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
remesh2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / mode / enumAdded value: +[ + "BLOCKS", + "SHARP", + "SMOOTH", + "VOXEL" +]
- Changed
render_animation2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / format / enumAdded value: +[ + "BMP", + "JPEG", + "OPEN_EXR", + "PNG", + "TIFF" +]
- Added
repair_mesh - Added
select_all_geometry - Added
select_by_axis - Added
select_by_index - Added
select_faces_by_sides - Added
select_similar - Changed
separate_mesh2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type / enumAdded value: +[ + "LOOSE", + "MATERIAL", + "SELECTED" +]
- Changed
set_active_camera3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Changed
set_annotation_stroke_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / property / enumAdded value: +[ + "display_mode", + "line_width", + "material_index" +]
- Changed
set_bone_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / property / enumAdded value: +[ + "envelope_distance", + "head_radius", + "length", + "roll", + "tail_radius", + "use_connect", + "use_deform", + "use_inherit_rotation", + "use_local_location" +]
- Changed
set_brush_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / property / enumAdded value: +[ + "auto_smooth_factor", + "size", + "strength", + "stroke_method", + "use_frontface" +]
- Changed
set_camera_property5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - added
Input schema / properties / property / enumAdded value: +[ + "clip_end", + "clip_start", + "dof.aperture_fstop", + "dof.focus_distance", + "dof.use_dof", + "lens", + "ortho_scale", + "sensor_fit", + "sensor_height", + "sensor_width", + "shift_x", + "shift_y", + "type" +] - changed
Input schema / requiredPrevious value: -[ - "name", - "property", - "value" -]New value: +[ + "object_name", + "property", + "value" +]
- Changed
set_collection_visibility3 fields changed- added
Input schema / properties / collection_nameAdded value: +{ + "title": "Collection Name", + "type": "string" +} - removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "name", - "visible" -]New value: +[ + "collection_name", + "visible" +]
- Changed
set_color_ramp_interpolation3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / color_mode / enumAdded value: +[ + "HSL", + "HSV", + "RGB" +] - added
Input schema / properties / interpolation / enumAdded value: +[ + "B_SPLINE", + "CARDINAL", + "CONSTANT", + "EASE", + "LINEAR" +]
- Changed
set_curve_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / property / enumAdded value: +[ + "bevel_depth", + "bevel_resolution", + "extrude", + "fill_mode", + "resolution_u", + "twist_mode", + "use_fill_caps" +]
- Changed
set_edge_crease2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
set_eevee_light_path5 fields changed- removed
Input schema / properties / diffuse_intensityRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Diffuse Intensity" -} - added
Input schema / properties / direct_intensityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Direct Intensity" +} - removed
Input schema / properties / glossy_intensityRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Glossy Intensity" -} - added
Input schema / properties / indirect_intensityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Indirect Intensity" +} - removed
Input schema / properties / transmission_intensityRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Transmission Intensity" -}
- Changed
set_handle_type3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / handle_type / defaultPrevious value: -"AUTO"New value: +"AUTOMATIC" - added
Input schema / properties / handle_type / enumAdded value: +[ + "ALIGNED", + "AUTO", + "AUTOMATIC", + "FREE", + "FREE_ALIGN", + "TOGGLE_FREE_ALIGN", + "VECTOR" +]
- Changed
set_interpolation2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / interpolation / enumAdded value: +[ + "BACK", + "BEZIER", + "BOUNCE", + "CIRC", + "CONSTANT", + "CUBIC", + "ELASTIC", + "EXPO", + "LINEAR", + "QUAD", + "QUART", + "QUINT", + "SINE" +]
- Changed
set_light_property5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - added
Input schema / properties / property / enumAdded value: +[ + "angle", + "area_size", + "area_size_y", + "color", + "diffuse_factor", + "energy", + "shadow_soft_size", + "specular_factor", + "spot_blend", + "spot_size", + "use_shadow", + "volume_factor" +] - changed
Input schema / requiredPrevious value: -[ - "name", - "property", - "value" -]New value: +[ + "object_name", + "property", + "value" +]
- Changed
set_location5 fields changed- added
Input schema / properties / location / maxItemsAdded value: +3 - added
Input schema / properties / location / minItemsAdded value: +3 - removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name", - "location" -]New value: +[ + "object_name", + "location" +]
- Changed
set_material_blend_mode2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / mode / enumAdded value: +[ + "BLEND", + "CLIP", + "HASHED", + "OPAQUE" +]
- Changed
set_material_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / property / enumAdded value: +[ + "alpha", + "anisotropic", + "anisotropic_rotation", + "coat_roughness", + "coat_weight", + "emission_color", + "emission_strength", + "ior", + "metallic", + "roughness", + "sheen_roughness", + "sheen_weight", + "specular_ior_level", + "subsurface_weight", + "transmission_weight" +]
- Changed
set_object_visibility3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name", - "visible" -]New value: +[ + "object_name", + "visible" +]
- Changed
set_origin3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / type / defaultPrevious value: -"ORIGIN_GEOMETRY"New value: +"GEOMETRY" - added
Input schema / properties / type / enumAdded value: +[ + "CENTER_OF_MASS", + "CENTER_OF_VOLUME", + "CURSOR", + "GEOMETRY" +]
- Changed
set_output_format2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / format / enumAdded value: +[ + "BMP", + "JPEG", + "OPEN_EXR", + "PNG", + "TIFF" +]
- Changed
set_particle_rendering2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / render_type / enumAdded value: +[ + "COLLECTION", + "NONE", + "OBJECT", + "PATH" +]
- Changed
set_physics_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / physics_type / enumAdded value: +[ + "CLOTH", + "FLUID", + "PARTICLE_SYSTEM", + "RIGID_BODY" +]
- Changed
set_render_engine2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / engine / enumAdded value: +[ + "BLENDER_EEVEE", + "BLENDER_EEVEE_NEXT", + "BLENDER_WORKBENCH", + "CYCLES" +]
- Changed
set_rotation7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / mode / enumAdded value: +[ + "EULER", + "QUATERNION" +] - removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - added
Input schema / properties / rotation / maxItemsAdded value: +3 - added
Input schema / properties / rotation / minItemsAdded value: +3 - changed
Input schema / requiredPrevious value: -[ - "name", - "rotation" -]New value: +[ + "object_name", + "rotation" +]
- Changed
set_scale5 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - added
Input schema / properties / scale / maxItemsAdded value: +3 - added
Input schema / properties / scale / minItemsAdded value: +3 - changed
Input schema / requiredPrevious value: -[ - "name", - "scale" -]New value: +[ + "object_name", + "scale" +]
- Changed
set_scene_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / property / enumAdded value: +[ + "fps", + "frame_current", + "frame_end", + "frame_start", + "frame_step", + "gravity", + "render_engine", + "unit_system", + "use_gravity" +]
- Changed
set_sculpt_brush2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / brush_type / enumAdded value: +[ + "BLOB", + "CLAY", + "CLAY_STRIPS", + "CREASE", + "DRAW", + "FILL", + "FLATTEN", + "GRAB", + "INFLATE", + "MASK", + "MULTIRES_DISPLACEMENT_SMEAR", + "PINCH", + "SCRAPE", + "SMOOTH" +]
- Changed
set_shader_node_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / property / enumAdded value: +[ + "attribute_name", + "attribute_type", + "axis", + "bands_direction", + "blend_type", + "clamp", + "clamp_factor", + "clamp_result", + "component", + "convert_from", + "convert_to", + "data_type", + "distance", + "distribution", + "extension", + "factor_mode", + "feature", + "from_instancer", + "gradient_type", + "interpolation", + "interpolation_type", + "invert", + "mode", + "noise_dimensions", + "noise_type", + "normalize", + "offset", + "offset_frequency", + "operation", + "projection", + "rings_direction", + "rotation_type", + "space", + "squash", + "squash_frequency", + "subsurface_method", + "turbulence_depth", + "use_clamp", + "uv_map", + "vector_type", + "voronoi_dimensions", + "wave_profile", + "wave_type" +]
- Changed
set_shadow_settings3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Changed
set_uv_projection2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / projection / enumAdded value: +[ + "CUBE", + "CYLINDER", + "SPHERE" +]
- Changed
set_viewport_overlay2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / overlay / enumAdded value: +[ + "show_axis_x", + "show_axis_y", + "show_axis_z", + "show_cursor", + "show_face_orientation", + "show_floor", + "show_object_origins", + "show_relationship_lines", + "show_stats", + "show_wireframes" +]
- Changed
set_viewport_shading2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / mode / enumAdded value: +[ + "MATERIAL", + "RENDERED", + "SOLID", + "WIREFRAME" +]
- Changed
snap_to_grid3 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Changed
spin_mesh2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
subdivide_mesh2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Added
sweep_profile_along_path - Changed
tris_to_quads2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / selectionAdded value: +{ + "default": "ALL", + "enum": [ + "ALL", + "CURRENT" + ], + "title": "Selection", + "type": "string" +}
- Changed
uv_unwrap2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / method / enumAdded value: +[ + "ANGLE_BASED", + "CONFORMAL", + "SLIM" +]
10 tool updates
v1.3.0- Added
add_color_ramp_element - Added
create_procedural_material - Added
create_raster_texture - Added
get_color_ramp - Added
list_procedural_patterns - Added
remove_color_ramp_element - Added
set_color_ramp_element - Added
set_color_ramp_interpolation - Added
set_shader_node_input - Added
set_shader_node_property
66 tool updates
v1.2.2- Added
add_annotation_layer - Added
add_annotation_stroke - Added
add_shader_node - Added
analyze_mesh_quality - Added
booltool_auto_difference - Added
booltool_auto_intersect - Added
booltool_auto_slice - Added
booltool_auto_union - Added
bridge_edge_loops - Added
connect_shader_nodes - Added
convert_object - Added
create_annotation - Changed
create_collection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "create_collectionDictOutput", + "type": "object" +}
- Added
create_polygon_prism - Added
create_threaded_shaft - Changed
delete_collection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "delete_collectionDictOutput", + "type": "object" +}
- Added
delete_particle_system - Added
disconnect_shader_nodes - Added
dissolve_edges - Added
dissolve_faces - Added
dissolve_verts - Added
enable_dyntopo - Changed
execute_blender_code2 fields changed- removed
Input schema / properties / user_promptRemoved value: -{ - "default": "", - "title": "User Prompt", - "type": "string" -} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "execute_blender_codeDictOutput", + "type": "object" +}
- Changed
export_file1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "export_fileDictOutput", + "type": "object" +}
- Added
fill_faces - Added
flip_normals - Changed
focus_on_object1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "focus_on_objectDictOutput", + "type": "object" +}
- Added
get_node_tree - Changed
get_viewport_screenshot3 fields changed- added
Input schema / properties / modeAdded value: +{ + "default": "fast", + "title": "Mode", + "type": "string" +} - removed
Input schema / properties / user_promptRemoved value: -{ - "default": "", - "title": "User Prompt", - "type": "string" -} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "get_viewport_screenshotDictOutput", + "type": "object" +}
- Added
grid_fill - Changed
import_file1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "import_fileDictOutput", + "type": "object" +}
- Added
inset_faces - Added
knife_project - Changed
list_recent_files1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "items": { + "type": "string" + }, + "title": "Result", + "type": "array" + } + }, + "required": [ + "result" + ], + "title": "list_recent_filesOutput", + "type": "object" +}
- Added
make_single_user - Added
mark_seam - Added
mark_sharp - Changed
move_to_collection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "move_to_collectionDictOutput", + "type": "object" +}
- Changed
open_file1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "open_fileDictOutput", + "type": "object" +}
- Changed
parent_mesh_to_armature1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "parent_mesh_to_armatureDictOutput", + "type": "object" +}
- Added
quads_to_tris - Added
recalculate_normals - Added
remove_annotation_layer - Added
remove_shader_node - Changed
save_file1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "save_fileDictOutput", + "type": "object" +}
- Added
select_linked - Added
set_annotation_stroke_property - Changed
set_collection_visibility1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "set_collection_visibilityDictOutput", + "type": "object" +}
- Added
set_edge_crease - Added
set_eevee_light_path - Added
set_handle_type - Changed
set_origin4 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / object_nameAdded value: +{ + "title": "Object Name", + "type": "string" +} - changed
Input schema / properties / type / defaultPrevious value: -"GEOMETRY"New value: +"ORIGIN_GEOMETRY" - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "object_name" +]
- Added
set_particle_rendering - Added
set_particle_velocity - Changed
set_pose1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "set_poseDictOutput", + "type": "object" +}
- Added
set_sculpt_symmetry - Changed
set_viewport_overlay1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "set_viewport_overlayDictOutput", + "type": "object" +}
- Changed
set_viewport_shading1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "set_viewport_shadingDictOutput", + "type": "object" +}
- Added
shade_auto_smooth - Added
smooth_curve - Added
spin_mesh - Added
subdivide_curve - Added
suggest_extensions - Added
switch_curve_direction - Added
toggle_cyclic - Added
tris_to_quads
116 tool updates
v0.1.0- First observed
add_bone - First observed
add_cloth_sim - First observed
add_constraint - First observed
add_curve_point - First observed
add_fluid_sim - First observed
add_geometry_node - First observed
add_modifier - First observed
add_multires_modifier - First observed
add_particle_system - First observed
add_rigid_body - First observed
add_texture_node - First observed
apply_modifier - First observed
apply_transforms - First observed
assign_material - First observed
bake_physics - First observed
bevel_edges - First observed
boolean_operation - First observed
capture_viewport - First observed
clear_animation - First observed
connect_geometry_nodes - First observed
convert_curve_to_mesh - First observed
create_animation_path - First observed
create_armature - First observed
create_camera - First observed
create_collection - First observed
create_curve - First observed
create_geometry_nodes - First observed
create_light - First observed
create_light_rig - First observed
create_material - First observed
create_object - First observed
create_principled_material - First observed
create_scene - First observed
create_text - First observed
delete_collection - First observed
delete_keyframe - First observed
delete_light - First observed
delete_material - First observed
delete_object - First observed
delete_scene - First observed
duplicate_material - First observed
duplicate_object - First observed
enter_sculpt_mode - First observed
execute_blender_code - First observed
exit_sculpt_mode - First observed
export_file - First observed
extrude_faces - First observed
focus_on_object - First observed
get_object_info - First observed
get_scene_info - First observed
get_viewport_screenshot - First observed
import_file - First observed
insert_keyframe - First observed
join_objects - First observed
list_geometry_node_inputs - First observed
list_keyframes - First observed
list_lights - First observed
list_materials - First observed
list_objects - First observed
list_recent_files - First observed
list_scenes - First observed
loop_cut - First observed
merge_vertices - First observed
move_to_collection - First observed
open_file - First observed
pack_uv_islands - First observed
parent_mesh_to_armature - First observed
parent_objects - First observed
point_camera_at - First observed
remesh - First observed
remove_modifier - First observed
rename_object - First observed
render_animation - First observed
render_image - First observed
save_file - First observed
select_objects - First observed
separate_mesh - First observed
set_active_camera - First observed
set_bone_property - First observed
set_brush_property - First observed
set_camera_from_view - First observed
set_camera_property - First observed
set_collection_visibility - First observed
set_curve_property - First observed
set_frame - First observed
set_frame_range - First observed
set_geometry_node_input - First observed
set_interpolation - First observed
set_light_property - First observed
set_location - First observed
set_material_blend_mode - First observed
set_material_color - First observed
set_material_property - First observed
set_modifier_property - First observed
set_object_visibility - First observed
set_origin - First observed
set_output_format - First observed
set_physics_property - First observed
set_pose - First observed
set_render_engine - First observed
set_render_resolution - First observed
set_render_samples - First observed
set_rotation - First observed
set_scale - First observed
set_scene_property - First observed
set_sculpt_brush - First observed
set_shadow_settings - First observed
set_smooth_shading - First observed
set_uv_projection - First observed
set_viewport_overlay - First observed
set_viewport_shading - First observed
set_world_background - First observed
smart_uv_project - First observed
snap_to_grid - First observed
subdivide_mesh - First observed
uv_unwrap
TDQS
Scored across 186 tools
With 186 tools, several areas overlap: multiple boolean tools (booltool_auto_*, boolean_operation, add_modifier with BOOLEAN), multiple material creation paths (create_material, create_principled_material), and generic vs specific setters (set_material_property vs set_shader_node_input). Descriptions often clarify, but the sheer volume creates potential for misselection.
Tool names consistently use snake_case verb_noun (or verb_preposition_noun) patterns throughout, with no mixing of camelCase or other conventions. Prefixes like booltool_auto_ are used consistently within their group.
186 tools far exceeds the suggested 3-15 range and is an extreme mismatch even for a complex domain like Blender. Many tools could be consolidated (e.g., separate setters for location/rotation/scale).
The tool set covers a vast surface: object/mesh/materials, shaders, rendering, animation, physics, geometry nodes, and file I/O. However, notable lifecycle gaps exist for constraints (only add, no edit/remove/list) and armature bones (add only, no remove/edit), though execute_blender_code provides a workaround.
Maintenance
Related MCP Connectors
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for Hailuo (MiniMax) AI video generation
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceTransforms Blender into an MCP server with 50+ tools for AI-driven 3D workflows, enabling complete control over objects, materials, animations, physics simulations, and rendering through natural language commands.45MIT
- AlicenseBqualityDmaintenanceAn MCP server that enables AI models to directly control Blender for 3D modeling, scene manipulation, and material management through natural language. It supports advanced workflows including Python code execution, viewport visualization, and integration with external asset libraries like Poly Haven and Hyper3D.221MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to control Blender through natural language for 3D scene creation, animation, and rendering. It provides over 550 actions and direct Python execution via a bridge to a live local Blender session.7MIT
- AlicenseCqualityDmaintenanceMCP server that enables AI to control Blender 3D, providing 175 typed tools for objects, materials, animation, compositing, and more via the Model Context Protocol.1002MIT