bl-mcp
Provides a live Blender integration through an add-on bridge, exposing tools to build, measure, inspect, render, check, and modify 3D scenes and models in world units.
Provides GLB/glTF export, import, and inspection tools, including material baking so procedural materials and subsurface data are included in exported glTF assets.
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., "@bl-mcpbuild a 0.5 m cube at the origin and render a review sheet"
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.
bl-mcp
MCP server for a live Blender. It gives an AI agent tools to build, measure, check and look at a model, not only to run raw bpy code.
Why
Raw bpy access has two problems. The agent cannot see 3D, and a wrong move of 3 cm gives no error. These tools make such mistakes visible as numbers and images, and give the agent safe operations in world units. Every tool that changes geometry reports what it really did: achieved widths, open edges, parts it could not process.
Related MCP server: Blender Universal & Token-Efficient MCP Server
Install
Needs uv and Blender 5.0 or newer.
Get the code:
git clone https://github.com/asedias/bl-mcp.Link or copy
addon/bl_bridgeinto the Blender add-ons folder, for example on macOS~/Library/Application Support/Blender/<version>/scripts/addons/.In Blender: Edit > Preferences > Add-ons > enable BL MCP Bridge. The console prints
listening on 127.0.0.1:9877.Add the server to the MCP client. Claude Code:
claude mcp add blender -- uv run --project /path/to/bl-mcp bl-mcpAny client with a JSON config:
{
"mcpServers": {
"blender": {
"type": "stdio",
"command": "uv",
"args": ["run", "--project", "/path/to/bl-mcp", "bl-mcp"]
}
}
}The server alone also runs without a clone: uvx --from git+https://github.com/asedias/bl-mcp bl-mcp. The add-on still has to come from the repository, at the same version.
The agent calls status first. It shows both versions, compares the tools of the server with the handlers of the add-on, and says which side to restart when they differ. When Blender is not open it says where Blender is installed.
The server and the add-on talk by JSON lines on 127.0.0.1:9877. Set BL_MCP_PORT on both sides to change the port. The socket listens on localhost only.
Toolsets
The server has 113 tools in 7 sets. All sets are on by default. Clients that load tool descriptions on demand (Claude Code, Codex) handle this well. For a client with a tool limit, pick the sets with BL_MCP_TOOLSETS (a comma list; core is always on):
"env": { "BL_MCP_TOOLSETS": "core,model,reference,game" }Set | Tools | For |
| 32 | scene, measuring, placing, review renders, checks, checkpoints, recipes, |
| 30 | mesh editing by selection, sculpting, booleans, arrays, lathe, sweep |
| 11 | reference images and photos: masks, outlines, comparison, camera matching |
| 14 | blockout from a plan, walkability, routes, sightlines, terrain, scatter |
| 12 | materials, baking, lights, camera, world, final render |
| 10 | armature, skinning, poses, UV, vertex colour |
| 4 | game checks, GLB export, import and inspection |
| 1 |
|
status lists the sets that are off with their tools. bl_mcp/toolsets.py is the table; the server refuses to start when a tool has no set.
Recipes
The agent sees only the server instructions and the tool descriptions. Step-by-step recipes ship inside the package (bl_mcp/recipes/) and reach the agent in two ways:
the tool
recipe: no argument lists the topics,recipe(topic)returns one with the general rules;MCP prompts built from the same files:
model_from_reference,hard_surface_prop,weapon_from_sheet,scene_from_photo,blockout_level,materials_and_render,prepare_for_game,review_model.
Topics: rules, character-from-reference, prop-hard-surface, weapon-from-sheet, scene-from-photo, level-blockout, materials-and-render, export-for-game.
Tools
Units are metres, coordinates are world coordinates, Z is up, the front faces -Y. Anchors are fractions of a world bounding box: (0.5, 0.5, 0) is the bottom centre. where picks faces by a condition: normal ('+Z' or a vector) with angle, x/y/z ranges, box, area, index.
core. status, recipe, scene_tree, measure, run_python (with a persistent session). Review: render_sheet (overview sheet with a metre grid), render_view (any angle; modes solid, clay, xray, flat, wire, ids, normals, backfaces). Build and place: create_primitive, duplicate, mirror, delete, parent, transform_objects, set_origin, attach (anchor to anchor), move_to_contact (slide a part until it touches), ground, set_dimensions, apply_transforms, set_material (flat colour up to full PBR with maps), shade (flat, smooth, auto, weighted normals). Check: assert_spec (size, position, ratio, gap, contact, symmetry, inside, ground, clean, budget, connected), save_spec, run_spec, find_floating, check_contacts, check_mesh (also UV numbers). Safety: checkpoint, diff_since (size, position, topology, material slots), rollback, save_blend, job_status.
model. mesh_info, select_faces, then extrude_faces, inset_faces, delete_faces, subdivide_faces, bevel_edges, bisect, weld, transform_region (with proportional falloff and a symmetric selection). sculpt (grab, inflate, smooth, flatten, pinch by numbers), deform (bend, twist, taper, stretch), shrinkwrap, remesh, subdivide, decimate. Solids: boolean, repair_mesh, combine, array, radial_array, solidify, lathe, sweep, limb, loft, blob, extrude_profile (with holes), text_mesh (also engraved). check_symmetry.
reference. prepare_reference (crop, automatic background threshold, hole filling, flip, rotate, a mask preview), measure_profile (widths per band, a millimetre grid), trace_outline (outline and holes), visual_hull, loft_from_masks, compare_view (world-registered IoU from six views, band table, overlay sheet, inner edge agreement, orientation hint), fit_to_reference (moves, scales and tilts parts; background job). Photos: match_camera (background job), overlay_reference, pixel_to_world, place_at_pixel.
level. build_from_grid (a text plan), walkable_map, route, check_passages (doors and corridors), sightline_map, viewshed, raycast, line_of_sight, scatter, place_on, terrain, path_carve, rock, noise_displace.
look. list_materials, assign_material_faces, dedupe_materials (also removes empty slots and orphans), procedural_material (wood, checker, diamond, bricks, noise, marble, worn metal), bake_maps (colour, normal with rounded edges, roughness, metallic, AO, ORM; background job; the material is rebuilt on image textures, so glTF gets them), add_light, list_lights, setup_lighting (three_point, sun, soft_studio, night, metal), set_world (colour or HDRI), set_camera, set_post, render_final (eevee, cycles, workbench; exposure by hand or automatic; the scene settings are restored).
rig. create_armature, list_bones, bind, transfer_weights, check_weights, pose, pose_sheet, unwrap, paint_faces, palette_uv.
game. check_game_ready (also the plain budget question), export_glb (with a texture size limit), import_glb, inspect_glb.
Long tools (fit_to_reference, match_camera, bake_maps) run as background jobs inside Blender in small slices, so Blender stays usable. If one needs more than its wait seconds the answer is a job id; ask job_status.
Limits
check_contactsandfind_floatingfind intersection by sample points (vertices and triangle centres) sunk into the other mesh. Two thin bars that cross without a sample inside are not found. Closed meshes with inward normals are handled; open shells are not.rollbackopens the checkpoint file. The open file then is the checkpoint copy: use Save As before you save. It also clears therun_pythonsessions. Checkpoints belong to a scene; the link is lost when the scene is never saved and the file is reopened.Level tools work on a grid of rays: a wall thinner than
cellcan leak, and a doorway narrower than the agent plus one cell is not walkable at a coarsecell. Widths are accurate to about one cell and err on the small side. The area chosen by default is the largest one on the lowest floor level (not wall tops); passstartwhen there are several levels.Tools that take
namesortargetinclude the children of each object. To frame only a head, do not parent the head to the body.The reference tools need an image with an alpha channel or a plain background. Look at the mask preview of
prepare_reference: parts close to the background colour can be lost.compare_viewmeasures the silhouette. A defect on one side of a symmetric part does not show in a side view: runcheck_symmetry. Itsinner_detailnumber compares two runs of one model; textures in the reference keep it far from 1.visual_hullis a straight extrusion inside: it matches both outlines but not the surface between them.Procedural material nodes (the
bumpofset_material, everyprocedural_material) and subsurface do not reach glTF withoutbake_maps.list_materialsmarks them.fit_to_referencemoves whole parts (with children). It fixes placement and proportions, not shapes.booleancleans and checks its result, tries the other solvers, and refuses instead of leaving an open mesh (allow_open=truekeeps it). Parts that only touch along an edge keep doubled vertices there.bevel_edges: Blender clamps every bevel of one call to the tightest edge. Bevel edges of similar size per call and readachieved_width.Tolerances that matter for small parts (weld distance, contact, floating, symmetry, bevel width) default to a value relative to the object size, so a 5 cm part works without scaling the scene.
match_cameraneeds the whole photo, not a crop, and a simple box model leaves some play along the view ray: fix the field of view when you know it.set_postrefuses to replace a compositor tree it did not make.Automatic exposure and the
metallighting preset are tuned with the Standard view transform.render_viewmodesnormalsandbackfacesuse EEVEE with a material override,wireuses temporary wireframe copies. The scene is never changed.Flat views are orthographic and share one scale.
isohas no grid.Handlers run in the Blender main thread. Blender is busy while a render runs.
Asset search and AI model generation are not included.
Finding Blender
bl-mcp-find-blender looks in this order: a running Blender process, blender on PATH, then standard install folders (macOS /Applications, ~/Applications, Steam; Linux /usr/bin, snap, /opt; Windows Program Files). A running Blender reports its own path in status; with Blender closed, status gives the same search result.
Parts
addon/bl_bridge/ Blender add-on: local socket, handlers that run in the Blender main thread
core.py registry, jobs, shared helpers, base tools
profiles.py shapes from reference images (mask, outline, profile, hull)
compare.py comparison with a reference (registered IoU, bands, inner edges, overlay)
fit.py automatic fit of parts to silhouettes (background job)
meshops.py pick faces by a condition; extrude, inset, bevel, cut, move
sculpt.py numeric sculpting and deformers
hard.py boolean, repair, arrays, lathe, sweep, decimate, origins
rig.py armatures, skinning, poses
uvpaint.py UV maps, vertex colour, palette UVs
level.py blockout from a plan, scatter, viewshed, passages, saved specs
materials.py PBR materials, maps, per-face materials, dedupe
render.py camera, light presets, world, final render, save
organic.py noise, terrain, rocks, paths
procedural.py procedural material presets, baking to maps
lights.py lights with settings, post effects, text meshes
refcam.py reference overlay, camera matching, pixels to world
bl_mcp/ MCP server (stdio)
app.py server object, instructions, shared helpers
tools_*.py one typed wrapper with a docstring per tool
toolsets.py tool-to-set table, BL_MCP_TOOLSETS
recipes/ step-by-step recipes served by the `recipe` tool and the prompts
locate.py Blender locator
tests/ see TestAdd a tool
Write a function with the
@handlerdecorator in a module ofaddon/bl_bridge/(a new module goes intoFEATURESin__init__.py). Return astror a JSON-able value; a generator that yields progress and returns the value becomes a background job.Add a test to
tests/headless.pyor to atests/test_<module>.py.Add a typed wrapper with a docstring in a
bl_mcp/tools_*.pymodule. The docstring is the only documentation the agent reads: say what the tool does and when to use it, useLiteralfor fixed values, keep it under 1800 characters.Put the tool into a set in
bl_mcp/toolsets.py.Add a call to
tests/smoke_all.py: it fails when a tool is never called. Before you extend a recipe, runtests/check_recipes.py.
Prefer a parameter on an existing tool to a new tool.
Test
uv run python tests/run_headless.py # handlers in Blender without a window; add a file name to run one
uv run python tests/run_smoke.py # every tool through the real server, in a private Blender
uv run python tests/smoke_all.py # the same in the Blender you have open (builds smoke_* objects, removes them)
uv run python tests/check_recipes.py # every tool and parameter named in a recipe exists; no Blender neededThe runners find Blender by themselves. The headless run calls the handlers directly. The smoke run goes through the real MCP server and socket, and catches what the headless run cannot (argument names, enums, image results, jobs). tests/demo_figure.py builds, checks and renders a small figure in the open Blender (--keep leaves it in the scene).
License
MIT, see LICENSE.
Available Tools
113 toolsadd_lightA
Create or update one light you control (setup_lighting makes a whole preset instead). The same name updates
that light; it never makes a copy. spot is a cone, point shines all ways, area is a panel, sun gives parallel rays.
location is in world metres; look_at is the point a spot, area or sun aims at. A new light without them sits
at [0, 0, 3] and points down; an update keeps what you omit.
power_w is watts; for a sun it is W/m2 (1-5, about 3 is a normal day). A point or spot needs about 40 W at
1 m, 150 W at 2 m, 600 W at 4 m for a normal exposure; an area panel a third of that.
color is '#rrggbb' or linear [r, g, b]; temperature_k (800-20000) multiplies it with a blackbody tint.
Spot: spot_size_deg is the full cone angle (1-180), blend (0-1) softens its edge. cutoff_m stops a spot or
point hard at that distance.
radius (spot, point) is the source size in metres: bigger means softer shadows. size (area) is [width, height]
in metres or one number for a square (1 m when empty). shadow_soft=false makes hard shadows.
Names that start with bl_light_ belong to setup_lighting and are refused. Remove lights with delete.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | spot | |
| name | No | light | |
| size | No | ||
| blend | No | ||
| color | No | #ffffff | |
| radius | No | ||
| look_at | No | ||
| power_w | No | ||
| cutoff_m | No | ||
| location | No | ||
| shadow_soft | No | ||
| spot_size_deg | No | ||
| temperature_k | No |
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 does so richly: it explains create-vs-update semantics ('same name updates that light; it never makes a copy'), default placement for omitted location/look_at, preservation of omitted fields on update, power/color/temperature semantics, shape-specific constraints, and name restrictions. This is comprehensive 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?
It is a dense but front-loaded paragraph; the first sentence states purpose and the main alternative, then each subsequent sentence explains a distinct parameter group. The length is justified by 13 parameters, though bullet formatting could improve scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 13-parameter mutation tool with no annotations and no output schema, the description covers what an agent needs: creation/update behavior, defaults, constraints, naming rules, and practical guidance. Return values are not described, but none are provided in an output schema, so completeness is high.
Complex tools with many parameters or behaviors need more documentation. 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 13 parameters, so the description must compensate, and it does: it defines kind, location (world metres), look_at aim point, power_w units and practical wattages, color formats, temperature_k range/effect, spot_size_deg range, blend range, cutoff_m, radius source size, size area dimensions, and shadow_soft. Nearly every parameter receives meaningful semantics beyond its 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 starts with a specific verb+resource ('Create or update one light') and immediately distinguishes it from the sibling setup_lighting ('makes a whole preset instead'), so an agent can select it without opening other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names when to use an alternative ('setup_lighting makes a whole preset instead') and when not to use it ('Names that start with bl_light_ belong to setup_lighting and are refused'), plus points to delete for removal. This gives clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_transformsA
Bake the transform of meshes into their vertices, as Ctrl+A does. mode all also bakes the position: the
origin goes to the world origin. Shared meshes are made single-user first, children keep their place in the
world, mirrored (negative) scale is handled without flipped normals.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | scale | |
| names | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does disclose real side effects: shared meshes are made single-user first, children keep their world position, and mirrored scale is handled without flipped normals. This is genuine behavioral context beyond the schema. It stops short of stating undo/permission implications or whether the operation is destructive to linked 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?
Three tight sentences, front-loaded with the core action and the non-obvious side effects. Dense and jargon-appropriate for a DCC tool; nothing is wasted, though the mode explanation 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?
No output schema and no annotations, so the description must stand alone — and it covers the mutation's non-obvious effects well. It is still thin on the `names` argument and on whether the change is reversible, which for a transform-baking mutation is a meaningful 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. It explains the `all` mode semantics (origin moves to world origin) and implies the scale/scale_rotation distinction, but the `names` parameter is never explained — the reader must infer it is the list of target meshes.
Input schemas describe structure but not intent. Descriptions should explain 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 the transform of meshes into their vertices' — and anchors it to a familiar operation ('as Ctrl+A does'). An agent can distinguish this from sibling transform_objects, which moves objects rather than collapsing their transforms into geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 Ctrl+A analogy gives a usable mental model, and the description clarifies what mode `all` does beyond the default. However, it never states when to choose this over transform_objects or set_origin, nor any prerequisite such as needing existing objects or a selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arrayA
Repeat an object count times along the world vector offset (step in metres) and merge the copies into one mesh.
Fences, stairs, windows, planks, teeth.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| count | Yes | ||
| object | Yes | ||
| offset | Yes | ||
| keep_source | No |
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 key behavioral trait that copies are merged into a single mesh, but it says nothing about whether the source object is consumed or preserved (the keep_source parameter defaults to false), nor about permissions or result format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the operation, followed by a compact illustrative list. No filler; every clause adds 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 5-parameter mutation tool with no annotations and no output schema, the description covers the core mechanics but omits keep_source semantics and the fate of the source object, which are exactly the details an agent needs 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% across 5 parameters, so the description must compensate. It clarifies count (repetition number) and offset (world vector, step in metres), which is genuinely useful, but leaves object, name, and especially keep_source completely 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+resource: repeat an object count times along a world vector and merge copies into one mesh. The 'world vector offset' phrasing implicitly distinguishes it from the sibling radial_array (linear vs radial repetition), so an agent can pick correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example list ('Fences, stairs, windows, planks, teeth') gives concrete when-to-use contexts, which is stronger than most tool descriptions. However, it offers no explicit when-not guidance or a named alternative (e.g. radial_array for circular patterns).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assert_specA
Write what the model must be, run all checks in one call, get pass or fail with the real numbers. State your expectations before you look at the result, then fix only the failures. Each check is a dict with "type" and optional "label". Types and fields: size {object, axis x|y|z, equals+tol | min | max, with_children?} world size in metres. position {object, axis, which min|max|center, equals+tol | min | max} world coordinate. ratio {a, b, axis, min | max | equals+tol} size of a divided by size of b (head vs body proportions). gap {a, b, min | max | equals+tol} distance between two meshes (0 if they overlap). contact {a, b, state touching|intersecting|apart|connected, max_depth?} 'connected' is touching or overlapping. symmetry {objects, axis, at?, tolerance?, max_unmatched_share?} mirror match of all vertices. inside {object, container, margin?} bounding box inside another's. on_ground {object, z?, tol?} lowest point of the object and its children. clean {object, ignore?} no open holes, loose parts, zero faces, inward normals. budget {names?, max_tris?, max_objects?, max_materials?, max_draw_calls?}. connected {names?, ground_z?} no floating groups. A failure shows 'actual', 'expected' and a 'fix' tool. A bad check or a missing object is reported as an 'error' and the rest still run.
| Name | Required | Description | Default |
|---|---|---|---|
| checks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose return behavior: failures expose 'actual', 'expected' and a 'fix' tool, and bad checks or missing objects are reported as 'error' while the rest still run. It does not state read-only vs mutating semantics, but the per-check reporting detail is substantive beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the one-call purpose and expectation-ordering advice come first, then the check catalogue. Length is justified by the mini-language it documents, though the type list could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, yet the description explains both inputs (the check DSL) and outputs (pass/fail with actual/expected/fix, or error with partial execution). An agent has enough to construct a call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. 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 single 'checks' array is opaque in the schema, so the description must compensate entirely — and it does, enumerating eleven check types with their fields (size, position, ratio, gap, contact, symmetry, inside, on_ground, clean, budget, connected). This is far more than the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('run all checks in one call, get pass or fail'), so the agent knows this is a batch assertion runner. It does not explicitly name which sibling it supersedes (run_spec, check_mesh, check_symmetry), leaving the agent to infer the distinction from the sibling list 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?
'State your expectations before you look at the result, then fix only the failures' gives workflow guidance about ordering, and 'run all checks in one call' implies batch use. However there is no explicit when-to-use versus run_spec or the individual check_* tools, and no exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_material_facesA
Put an existing material on the picked faces of one mesh. Adds a material slot if the object has none for it.
Other faces keep their material. One mesh with several materials costs one draw call per material in the engine, so keep
the count low. Create the material first with set_material.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| where | No | ||
| object | Yes | ||
| material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that a slot is auto-added when missing, that unselected faces keep their material, and the performance cost per material. It omits permissions/error behavior and whether the operation is reversible, so not 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-loads the core action before the draw-call caveat and the `where` grammar. Dense but every sentence conveys usable information; only minor tightening possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation tool with no annotations and no output schema, the description covers action, side effects, prerequisites, and the filtering grammar. It stops short of describing failure modes (nonexistent material/object) or response shape.
Complex tools with many parameters or behaviors need more documentation. 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 fully documents the complex `where` parameter (normal/angle, axis ranges, box, area, index, empty/null semantics), leaving only the self-evident `object` and `material` names unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Put an existing material on the picked faces of one mesh.' It also distinguishes itself from the sibling set_material by noting the material must already exist and instructing to create it first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisites and routing: create the material first with set_material, and inspect with mesh_info before picking faces. It also gives a when-to-care condition (keep material count low due to per-material draw calls).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachA
Move part (with its children) so a point of its world bounding box lands on a point of the bounding box of
to. Anchors are fractions 0..1 per axis: (0.5,0.5,0) is bottom centre, (0.5,0.5,1) is top centre.
Default puts the part on top of the target. offset is in metres. Both boxes include the children of each object;
with_children=false measures the two objects alone (the children still move with the part). The answer gives
boxes_used (objects, min, max, size of both boxes after the move) and moved_by; min and max at the top level
are of part alone. Boxes do not follow round or slanted surfaces: use move_to_contact to close the real gap,
place_on to drop onto uneven ground, transform_objects for a known offset.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| part | Yes | ||
| offset | No | ||
| to_anchor | No | ||
| part_anchor | No | ||
| with_children | No |
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 and does so well: it explains that children move with `part`, that `with_children=false` changes only how the bounding boxes are measured, and that `offset` is in metres. It also documents the return payload (`boxes_used`, `moved_by`) and clarifies that top-level min/max refer to `part` alone.
Agents need to know what a tool does to the 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 move semantics, then layers in anchor details, child behavior, return values, and alternatives. Despite covering a complex operation, every sentence carries actionable information 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?
Given the tool's complexity, zero annotation coverage, no output schema, and 0% schema description coverage, the description supplies everything an agent needs: purpose, parameter semantics, side effects, return values, limitations, and sibling alternatives. Nothing material is missing 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 does: it defines anchors as fractions 0..1 per axis with examples, explains the default top placement, specifies that `offset` is in metres, and clarifies the nuanced behavior of `with_children`. This adds substantial meaning beyond the bare schema parameter names 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 states a precise verb and resource: moving `part` so a point of its world bounding box lands on a point of `to`'s bounding box. It also distinguishes this tool from nearby siblings by naming `move_to_contact`, `place_on`, and `transform_objects` as alternatives for cases this tool does not handle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit when-not-to-use guidance: boxes do not follow round or slanted surfaces, so use `move_to_contact` to close the real gap, `place_on` to drop onto uneven ground, or `transform_objects` for a known offset. The default placement behavior is also stated, so an agent can choose the right tool without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bake_mapsA
Bake the material of one mesh into PNG maps on its UV, so glTF can carry a procedural or layered material.
Uses Cycles on the CPU. maps: base_color (sRGB), normal (tangent space), roughness, metallic, ao, orm (one
image: R occlusion, G roughness, B metallic). Empty means base_color, normal, roughness, ao. For a metal ask
for base_color, normal, orm.
Files are _.png in out_dir (the work folder, bakes/, when empty). size is pixels, a power of
two: 512-1024 for props, 2048 for a hero asset. margin is the pixel padding around UV islands. samples: 16
is enough for colour and normal, raise it for a clean ao.
bevel_radius (metres, about 0.2-0.5% of the object size) rounds hard edges in the normal map only; it needs a
material without an image normal map.
The mesh needs a UV map without overlaps (check_mesh reports the UV); without one it is unwrapped with smart
project. uv_layer picks another layer. A material without bump gives a flat normal map and the answer says so.
replace_material=true builds the Principled material <object>_baked from the images and puts it on the mesh,
so export_glb writes the textures. ao alone stays a file; inside orm it becomes occlusionTexture.
One call bakes one object. Background job, one map per step (a 2048 px map takes 20-60 s): after wait seconds
the answer is a job id for job_status (cancel=true stops it). Do not edit the object while it runs.
| Name | Required | Description | Default |
|---|---|---|---|
| maps | No | ||
| size | No | ||
| wait | No | ||
| margin | No | ||
| object | Yes | ||
| out_dir | No | ||
| samples | No | ||
| uv_layer | No | ||
| bevel_radius | No | ||
| replace_material | No |
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 does so thoroughly: CPU Cycles baking, background job model with wait/job_status/cancel, per-map step timing, output file naming and default output directory, UV overlap handling, bevel_radius limitations, replace_material side effects, and the 'do not edit while running' warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but appropriately sized for a 10-parameter tool with no schema descriptions and no annotations. It is front-loaded with purpose and the most important map semantics, then proceeds through parameters and job behavior without filler; every sentence adds actionable 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 complexity, absent annotations, zero schema description coverage, and no output schema, the description is complete. It covers purpose, all parameters, behavior, prerequisites, output naming, job lifecycle, and interactions with sibling tools like check_mesh, export_glb, and job_status.
Complex tools with many parameters or behaviors need more documentation. 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 maps values and defaults, size pixel guidance and power-of-two constraint, margin meaning, samples recommendations, bevel_radius units and normal-map-only behavior, uv_layer selection, out_dir default, wait behavior, replace_material effect, and object scope.
Input schemas describe structure but not intent. Descriptions should explain 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 the material of one mesh into PNG maps on its UV'. It also names the downstream reason (glTF carrying procedural/layered materials) and distinguishes itself from siblings like unwrap, set_material, and export_glb. An agent can tell what this 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?
Gives clear context for when to use it (baking procedural/layered material into textures for glTF export) and conditions for map selection, UV requirements, and material setup. However, it does not explicitly name alternative tools or state when not to use this tool, so routing among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bevel_edgesA
Round or chamfer the edges sharper than angle degrees (optionally only those whose midpoint is inside where,
which uses x, y, z ranges and box). width is in metres (empty: 0.02 m, less on objects under 0.3 m), segments 1 is a chamfer, 3 is round. profile 0.5 is circular.
width_type width is the distance between the two new edges. Only edges with two faces
can be bevelled. Overlapping bevels are clamped, and one tight edge limits every bevel of the call: the answer gives
width (asked), achieved_width (min and median measured on the result, in metres), clamped (edges under 90% of
the asked width) and a warning when most are clamped. Doubled vertices and zero-area faces are removed afterwards
(merged_vertices, removed_zero_faces).
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | ||
| where | No | ||
| width | No | ||
| object | Yes | ||
| profile | No | ||
| segments | No | ||
| width_type | No | offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses clamping behavior ('Overlapping bevels are clamped, and one tight edge limits every bevel of the call'), the exact returned fields (width, achieved_width, clamped, warning) and post-operation cleanup (merged_vertices, removed_zero_faces). This is unusually rich behavioral 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-loads purpose then parameters then behavior/return values, with no truly wasted sentence. The prose is dense and run-on (nested parentheticals, mid-sentence field lists), which slightly hurts scannability, but the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-param mutation tool with no annotations and no output schema, the description covers selection conditions, units, defaults, failure/clamping semantics and the returned fields. 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 coverage is 0%, so the description must compensate, and it explains most params: `where` (x/y/z ranges and box), `width` (metres, default 0.02 m, smaller on sub-0.3 m objects), `segments` (1 = chamfer, 3 = round), `profile` (0.5 = circular) and one `width_type` value. It leaves the other four enum values (offset, depth, percent, absolute) and the `segments` default of 2 unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Round or chamfer the edges') with a clear selection condition ('sharper than `angle` degrees'), which is enough to distinguish it from siblings like subdivide, inset_faces or solidify. 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?
Gives concrete preconditions and scoping: edges must be sharper than `angle`, optionally restricted to a `where` box, and 'Only edges with two faces can be bevelled.' It does not name alternatives or state when NOT to use it (e.g. vs subdivide/inset), so it falls short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bindA
Skin meshes to an armature: adds one vertex group per bone, the Armature modifier and the parent. method
'proximity' weights each vertex by its distance to the nearest bones (up to max_influences, power falloff; fast,
works on any mesh, good for stylised low-poly); 'auto' uses Blender's heat-map weights and falls back to
proximity when the mesh is not clean. Existing groups with the same names are overwritten. Check with
check_weights, then try poses with pose_sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| meshes | Yes | ||
| method | No | proximity | |
| falloff | No | ||
| armature | Yes | ||
| max_influences | No |
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 two important behavioral traits: existing same-named groups are overwritten (a destructive side effect), and 'auto' silently falls back to proximity on dirty meshes. It omits prerequisites (e.g., armature must exist, mesh selection state) and any indication of failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then method tradeoffs, then side effects and follow-ups. It is one dense paragraph rather than a single tight sentence, but every clause carries information and none 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?
For a 5-param mutation tool with no annotations and no output schema, the description covers the key decision points (method, overwrite risk, fallback) and the verification workflow via check_weights and pose_sheet. It does not describe what is returned or what happens on partial failure across multiple meshes.
Complex tools with many parameters or behaviors need more documentation. 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 for the ambiguous params: it explains both enum values of method with tradeoffs, ties max_influences to the number of bones influencing each vertex, and identifies falloff as the proximity weighting power. 'meshes' and 'armature' are only implied by the opening sentence, and no value ranges or defaults are given.
Input schemas describe structure but not intent. Descriptions should explain 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 and enumerates the concrete effects: 'Skin meshes to an armature: adds one vertex group per bone, the Armature modifier and the parent.' This clearly distinguishes it from siblings like parent, attach, and transfer_weights, which do not create per-bone vertex groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes method choice: 'proximity' is 'fast, works on any mesh, good for stylised low-poly', while 'auto' uses heat-map weights and falls back to proximity for unclean meshes. It also names follow-up tools (check_weights, pose_sheet). It stops short of naming an alternative tool to use instead when binding is not the right operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bisectA
Cut the mesh with a world plane (across axis at the coordinate at): adds an edge loop there, like a loop cut
placed in metres. clear removes one side (the inner side is the negative side of the axis);
fill=true closes the cut. Use it to slice, to add a loop for later extrusion, or to trim a part flat.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| axis | No | Z | |
| fill | No | ||
| clear | No | ||
| object | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that `clear` deletes one side and defines which side (inner = negative axis side), and that fill=true closes the cut, i.e. the destructive semantics. It stops short of saying whether the source mesh is modified in place, whether a new object is returned, or any mesh-validity 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?
Three sentences, front-loaded with the core action and its plane definition, then parameter behavior, then usage. Every clause 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 5-param mutation tool with no annotations and no output schema, it covers purpose, parameter meaning, and use cases. The remaining gap is return/result behavior (in-place edit vs. new object) and failure modes, which an agent would still have to discover empirically.
Complex tools with many parameters or behaviors need more documentation. 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%, yet the description explains axis, at (a world coordinate, explicitly 'in metres'), clear (inner/outer semantics tied to axis sign), and fill (closes the cut). Only the obvious `object` is left implicit, so it fully compensates for 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?
States a precise verb+resource ('Cut the mesh with a world plane') plus the exact mechanism (edge loop at a plane, like a loop cut placed in metres). This clearly separates it from siblings like boolean, subdivide, or extrude_faces, which do not add a planar loop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 enumerates when to reach for it: 'to slice, to add a loop for later extrusion, or to trim a part flat.' No explicit exclusion of the nearest alternative (boolean) or prerequisites, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blobA
Make one smooth organic mesh from overlapping balls (metaballs): the balls merge into a single skin. Good for hands, clouds, bushes, rocks, creature bodies. One radius per point; nearby balls blend, so use radii a bit larger than the surface you want.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| radii | Yes | ||
| points | Yes | ||
| threshold | No | ||
| resolution | No |
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 core algorithm (balls blend into one skin, one radius per point) and a practical tip about oversizing radii, but says nothing about whether this creates a new object, how threshold/resolution affect the result, or what is returned on completion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, and the defining behavior is front-loaded before the use cases and the practical tip. 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?
For a mutation tool with no annotations, no output schema, and 0% schema coverage, the description covers the concept and radii well but leaves threshold, resolution, and post-call behavior undefined. Adequate to attempt a call, incomplete for confident parameter choices.
Complex tools with many parameters or behaviors need more documentation. 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 5 parameters, so the description must compensate. It meaningfully explains the points/radii pairing and gives actionable guidance on radius sizing, but threshold and resolution — both tuning parameters a caller must choose — are never mentioned, leaving two of five parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain 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 — 'Make one smooth organic mesh from overlapping balls (metaballs)' — and immediately names the defining behavior (balls merge into a single skin). An agent can distinguish this from sibling mesh-creation tools like create_primitive or rock 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 concrete use cases ('Good for hands, clouds, bushes, rocks, creature bodies'), which tells the agent when this tool is appropriate. However, it names no alternatives or exclusions — e.g., when to prefer create_primitive, combine, or remesh — so routing between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booleanA
Combine two meshes: a is changed, b is the tool and is deleted unless keep_tool. difference cuts b out of a.
Both should be closed and have outward normals (check_mesh). With repair=true
an open mesh is first healed with repair_mesh (the answer lists repaired). If that does not close it, the call
fails and names the object, the number of open edges and where they are (world box). a keeps its own material
slots: the faces made by b take the material of the faces of a next to them, and empty slots are removed.
The result is welded and its zero-area faces are dissolved (merged_vertices, removed_zero_faces; doubled_vertices_left
where parts only touch along an edge). The result is checked: when solver leaves new
boundary or non-manifold edges, the other solvers and a tool shifted by a few micrometres are tried; the answer
names the solver used (and tool_shift_m). If none gives a closed result the call fails, changes nothing, and gives
the edge counts and their world box. allow_open=true skips the input check and keeps such a result with a warning.
Use it for windows, doors, holes, notches.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| repair | No | ||
| solver | No | EXACT | |
| keep_tool | No | ||
| operation | No | difference | |
| allow_open | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses that `b` is deleted, that `a` is mutated, the repair/open-mesh healing path, the exact failure conditions (edge counts and world box), the material-slot inheritance rule, welding and zero-area cleanup, and the solver fallback with micrometre-shifted tools. This is unusually complete behavioral 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?
It is densely packed and largely front-loaded (core semantics first, edge cases after), and nearly every sentence carries information. However, it is a long wall of text with no structural breaks, which slightly hurts quick scanning for a 7-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?
There is no output schema, but the description effectively documents return signals (repaired, merged_vertices, removed_zero_faces, doubled_vertices_left, solver, tool_shift_m) and error contents. For a complex boolean operation with no annotations and 0% schema coverage, this is sufficient for an agent to invoke and interpret 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, and it does: a/b roles, keep_tool, repair=true healing behavior, solver fallback semantics (and tool_shift_m), allow_open skipping the check and emitting a warning, and the difference operation are all explained. Only `union` and `intersect` enum values are left unstated, a minor gap given how much else is 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+resource (combine two meshes via a boolean operation) and immediately defines the roles of `a` (changed) and `b` (tool, deleted unless keep_tool), plus what difference does. This distinguishes it clearly from siblings like `combine`, `weld`, and `repair_mesh`, which perform different 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?
Gives a concrete use-case cue ('Use it for windows, doors, holes, notches') and a prerequisite workflow (meshes should be closed with outward normals, verified via check_mesh). It does not explicitly contrast with the closest siblings such as `combine` or `weld`, so the alternative-selection guidance 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.
build_from_gridA
Block out a level from a text plan, one string per row, row 0 at the top (+Y), column 0 at the left. Default
characters: '#' wall, '.' floor, ' ' nothing, 'D' doorway (floor, with a wall above door_height), 'C' cover box
(cover_height high, cover_fill of the cell), 'S' spawn marker, 'O' objective marker. legend adds or changes
characters: {"W": {"kind": "wall", "height": 1.2}} makes low walls; kinds are wall, floor, door, cover, marker
(with "name"), void. Makes {name}_floor, {name}_walls, {name}_cover meshes and {name}_spawn_1 style empties. Then prove
it with walkable_map, route, check_passages, sightline_map. One cell is cell metres: use 1 for rooms, 0.5 for detail.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | ||
| name | No | level | |
| layout | Yes | ||
| legend | No | ||
| origin | No | ||
| cover_fill | No | ||
| door_height | No | ||
| wall_height | No | ||
| cover_height | No | ||
| floor_thickness | No |
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 does disclose the observable side effects: which meshes and empties are created and under what naming convention. It stops short of stating whether existing objects with those names are overwritten, whether the operation is idempotent, or what the return payload looks 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?
It is dense but front-loaded: the core action and coordinate convention come first, then the character legend, then derived outputs and validation workflow. Nearly every clause carries information, though the legend/kinds enumeration is packed tight enough that a heavier markdown structure would have aided scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 10-parameter generative tool with no output schema and no annotations, this description covers a great deal: input format, coordinate orientation, character semantics, legend override syntax, generated object names, and a follow-up validation path. It is only incomplete on the undocumented tuning parameters (origin, wall_height, floor_thickness) and on overwrite/return 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?
Schema coverage is 0%, so the description must compensate, and it meaningfully documents layout (row 0 = top/+Y, column 0 = left), cell (metres, with 1 vs 0.5 guidance), legend (with a concrete JSON example and the full kind list), and ties cover_fill, door_height and cover_height to their in-layout characters. Gaps remain: origin, wall_height and floor_thickness are never explained, so it does not fully close a 10-parameter documentation deficit.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Block out a level from a text plan') and immediately defines the input format, so the agent knows exactly what this produces without consulting the schema. It also names the concrete artifacts created ({name}_floor, {name}_walls, {name}_cover, {name}_spawn_1 empties), which separates it from verification siblings like walkable_map and route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states the scenario ('block out a level from a text plan') and prescribes a follow-up workflow ('Then prove it with walkable_map, route, check_passages, sightline_map'), which tells the agent both when to call this and what to call next. It also gives a scaling heuristic ('use 1 for rooms, 0.5 for detail'). There is no explicit when-not-to-use guidance, keeping it 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.
check_contactsB
State of two meshes: 'intersecting' (one pushes into the other), 'touching' or 'apart' (with the smallest vertex distance). For an overlap it gives the deepest sample, the median depth and the share of each mesh that lies inside the other: a glaze shell on a donut may have a deep spot (a drip) but a small median. Use it to find floating or sunken parts.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses output semantics in detail (deepest sample, median depth, share inside), which is valuable, but it does not state whether the operation is read-only, whether it modifies anything, or any performance/permission 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?
The description is a single well-structured paragraph that front-loads the state categories and then explains the overlap metrics with a concise illustrative example. It avoids repetition and the example earns its place by clarifying the difference between deepest and median depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, output schema, and parameter descriptions, the description covers what the tool returns well enough for a human. However, it is incomplete for reliable invocation because the two required inputs a and b are never defined, and no side-effect or error behavior is mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required string parameters (a, b). The description says 'two meshes' but never maps these to a and b or explains expected identifier format (name, path, UUID, etc.), so it adds little beyond the schema's bare 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 states the tool returns a contact state between two meshes and enumerates the possible states (intersecting, touching, apart) plus depth metrics, which is more specific than restating the name. It does not explicitly distinguish itself from siblings like find_floating or check_mesh, but the focus on two-mesh overlap is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a direct use case ('Use it to find floating or sunken parts') but no when-not conditions and no named alternatives among the many sibling tools. This gives implied usage but leaves the agent to infer when another tool (e.g., find_floating) might be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_game_readyA
Pre-export gate. Errors: bad names, unapplied scale, no material, faces without a material (a boolean cutter
without one leaves them), inward normals, zero-area faces, oversized textures, budget overruns (the max_*
limits). Warnings: duplicate suffixes (.001), many material slots, empty material slots, missing UV, n-gons, open
shells, and a mesh that is nearly but not fully symmetric about symmetry_axis: under 10 percent of its vertices
have no mirror partner (plane: the middle of its box, or 0). That is a side broken by an uneven selection; a
silhouette does not show it. symmetry_axis=null skips it. ready is true when there are no errors.
budget_only=true is the cheap budget question at any stage: it only counts tris, objects, materials and estimated
draw calls of names (or all visible meshes) and lists the limits exceeded in over_budget. It also gives
draw_calls_if_instanced: objects that repeat one mesh with the same materials cost one call with GPU instancing;
the hint says when merging them with combine pays off.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | ||
| max_tris | No | ||
| require_uv | No | ||
| budget_only | No | ||
| max_objects | No | ||
| max_texture | No | ||
| name_pattern | No | ^[A-Za-z0-9_]+$ | |
| max_materials | No | ||
| symmetry_axis | No | X | |
| max_draw_calls | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it defines exactly what counts as an error vs a warning, explains the subtle symmetric-but-broken-mesh case, and documents budget_only's cheap counting behavior, the over_budget output, and the draw_calls_if_instanced semantics. Gaps remain — it never explicitly says the check is non-mutating and says little about cost of the full check.
Agents need to know what a tool does to the 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 then organized into errors, warnings, and the budget mode, so the reader gets the key facts early. It is dense and information-rich, though parenthetical asides ('a boolean cutter without one leaves them', 'plane: the middle of its box, or 0') add clutter that a tighter phrasing could drop.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 10-parameter tool with no annotations and no output schema, the description supplies a lot: the ready/over_budget return semantics, both operating modes, and the meaning of each check category. It is nearly sufficient, with the main shortfall being incomplete coverage of a few input parameters and no explicit statement of side effects.
Complex tools with many parameters or behaviors need more documentation. 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 10 parameters, so the description must compensate. It meaningfully explains names, the max_* limits (tris, objects, materials, draw calls, texture), symmetry_axis, and budget_only. But require_uv and name_pattern are never addressed, and the max_* grouping is only implied, so it covers roughly half the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening 'Pre-export gate' plus the enumeration of errors and warnings makes it immediately clear this is a mesh/scene validation tool for export. The specific check categories (names, scale, materials, normals, textures, budgets) are far more concrete than a vague 'check' verb. It does not, however, explicitly differentiate itself from siblings like check_mesh or check_symmetry, which overlap in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the primary context ('pre-export gate') and gives a clear conditional path: use budget_only=true 'at any stage' for the cheap budget question, and symmetry_axis=null skips the symmetry check. That is strong when-to-use guidance. It stops short of naming alternatives or saying when NOT to run the full check (e.g., its cost relative to check_mesh).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_meshA
Triangle and n-gon count, open holes, loose parts, zero-area faces, doubled vertices, inward normals and
unapplied scale. 'issues' is ['none'] when the mesh is clean. uv is the quality of the UV map: island count,
used area, faces outside 0..1, degenerate faces and texel_density_spread (largest to smallest UV area per surface
area: 1 is even, above 4 is stretched), or 'none' when the mesh has no UV map.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does well: it defines the return semantics of 'issues' (['none'] when clean) and 'uv' (including the texel_density_spread scale where 1 is even and above 4 is stretched, 'none' when no UV map). This is genuine behavioral disclosure beyond a normal read inspection, though it doesn't state whether the check mutates state or its performance cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: it opens with the defect list and then handles the two output keys in sequence. No filler, though the run-on enumeration and mid-sentence backtick keys are slightly harder 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?
For a no-annotation, no-output-schema inspection tool, the description covers the output interpretations an agent needs to act on results, which is the critical gap. The remaining gap is input meaning and when-to-use, but overall it is close to 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 single parameter 'name' is undocumented in both schema and description; the description explains outputs, not the input. With only one param the impact is small, so this sits at the minimum-viable baseline rather than below.
Input schemas describe structure but not intent. Descriptions should explain 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 inspection verb and enumerates the exact mesh defects it detects (triangle/n-gon counts, open holes, loose parts, zero-area faces, doubled vertices, inward normals, unapplied scale), plus UV quality. This is far more specific than sibling diagnostics like mesh_info, and the agent can distinguish it from repair_mesh (which fixes) and check_symmetry/check_contacts (different checks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a diagnostic/audit use case but never states when to run it versus alternatives like mesh_info, check_game_ready, or repair_mesh. No exclusions or prerequisites are given, so usage is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_passagesA
Find doorways and corridors of a level that are too narrow. It follows the centre line of the walkable area and reports narrow runs: a
run up to door_length metres long is a doorway (limit min_door), a longer one a corridor (limit
min_corridor). The width is the free width including the agent radius, accurate to about one cell, and it errs on the
small side. Returns violations with positions and a map. start picks the area when there are several levels.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | ||
| names | No | ||
| start | No | ||
| min_door | No | ||
| door_length | No | ||
| agent_height | No | ||
| agent_radius | No | ||
| min_corridor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well: it explains the centre-line method, the doorway-versus-corridor length rule, measurement accuracy to about one cell, and that width includes agent_radius and errs on the small side. It also states that violations are returned with positions and a map. It does not explicitly declare read-only status or permissions, which prevents a perfect score.
Agents need to know what a tool does to the 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 adds the algorithm, output, and start behavior in four dense sentences. Every sentence contributes useful information. It is slightly dense but not 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?
Given 8 parameters, no annotations, and no output schema, the description is mostly complete: it covers the check logic, accuracy, return shape, and multi-level start behavior. It leaves some parameter semantics incomplete, especially names and agent_height, but provides enough for an agent to select and invoke the tool sensibly.
Complex tools with many parameters or behaviors need more documentation. 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 all 8 parameters. It explains door_length, min_door, min_corridor, agent_radius, and start, and implies cell via 'one cell'. However, names and agent_height are not clarified, leaving meaningful gaps for an 8-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: finding doorways and corridors that are too narrow. It distinguishes the tool from siblings like walkable_map and route by focusing on narrow-passage violations rather than mapping or routing. An agent can tell what this tool checks 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 purpose: check a level for narrow doorways and corridors. There is no explicit when-to-use or when-not-to-use guidance versus alternatives such as walkable_map or check_game_ready. The only routing hint is a parameter note about start for multi-level areas, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkpointB
Save the scene as a named restore point. Checkpoints belong to the open file (an id kept in the scene): a new or another file does not see them.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | last |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully states the checkpoint is tied to the open file and invisible to other files, but omits mutation side effects, overwrite behavior for duplicate names, persistence requirements, and whether it 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?
Two sentences, front-loaded with the action and then the scoping caveat. No boilerplate; every sentence carries information despite slightly awkward grammar in the scoping clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema and no annotations, the description covers purpose and scope but leaves out parameter semantics and restore/rollback context. It is not fully sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single 'name' parameter. The phrase 'named restore point' hints that a name is involved, but it does not explain the parameter's default ('last'), naming rules, or behavior when omitted.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Save the scene as a named restore point') and clarifies the object's scope ('belong to the open file'). It does not explicitly differentiate from siblings such as rollback or save_blend, 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?
No when-to-use guidance; it neither names rollback as the restore counterpart nor says when to checkpoint versus save_blend/save_spec. The file-scoping note is about scope, not invocation choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_symmetryA
Mirror all vertices of the objects across a plane and count those without a partner within tolerance.
at is the plane position on the axis; empty means the middle of the bounding box. Empty tolerance means
0.005 m for objects of 0.3 m and more, and less for small ones (it follows the size). The answer shows the value used.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| axis | No | X | |
| names | Yes | ||
| tolerance | No |
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 meaningful behavior: how `at` defaults to the bounding-box middle, how empty `tolerance` resolves to a size-dependent value (0.005 m at 0.3 m+), and that the result reports the value used. It never states whether this mutates the scene or is purely a read/measure operation, which is a notable gap for a tool whose name starts with 'Mirror'.
Agents need to know what a tool does to the 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 parameter semantics in three compact sentences. No filler; the tolerance parenthetical is dense but 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?
With no output schema, the description does supply what the return conveys (a count of unpaired vertices plus the tolerance actually used). Combined with the default-resolution rules, an agent has enough to call it correctly; the only missing piece is confirmation that this is a non-mutating check.
Complex tools with many parameters or behaviors need more documentation. 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 for the two non-obvious parameters: `at` (plane position, empty = bounding-box center) and `tolerance` (auto-scaling default). `names` and the enum-constrained `axis` are self-evident and need no elaboration.
Input schemas describe structure but not intent. Descriptions should explain 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: mirroring vertices across a plane and counting unpaired ones within a tolerance. This clearly distinguishes it from the plain `mirror` sibling, which presumably mutates geometry, though the description never names that sibling to make the contrast 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 explains mechanics but gives no guidance on when to reach for this check versus `mirror`, `check_mesh`, or other validation tools, nor any prerequisite (e.g. must objects be mirrored first, or does this tool do the mirroring itself?). Usage is only inferable from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_weightsB
Skin quality: vertices without weight, with more than max_influences bones (glTF wants 4), weights that do not
sum to 1, groups that match no bone, a missing Armature modifier.
| Name | Required | Description | Default |
|---|---|---|---|
| mesh | Yes | ||
| max_influences | No |
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 discloses exactly what it checks, which is the core behavior of a diagnostic tool, and 'check' implies read-only. However, it does not state whether it modifies anything, whether it requires specific permissions, or what the return format looks 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?
A single dense sentence that front-loads the category ('Skin quality') and then lists the specific issues. It is efficient, though the list-like structure is somewhat run-on and could be slightly clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 check tool with no output schema and no annotations, the description covers what is checked but does not describe the return format or how results are reported. It is adequate for an agent to understand the tool's scope but leaves gaps about the output.
Complex tools with many parameters or behaviors need more documentation. 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 mentions `max_influences` and explains its meaning ('glTF wants 4'), but provides no documentation for the required `mesh` parameter. The partial coverage of one of two parameters leaves a 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 explicitly enumerates the specific skin-weight issues the tool detects (unweighted vertices, excess influences, non-normalized weights, orphan groups, missing Armature modifier). This is a clear verb+resource for a validation tool, though it does not explicitly differentiate itself from sibling checks like check_mesh or check_game_ready.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 run this tool versus alternatives or prerequisites. It is implied that it is used for skinning validation, but there are no explicit when/when-not statements or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combineA
Merge several meshes into one mesh object, as Join (Ctrl+J) does in Blender (in world space, materials kept). Do it before export to save draw calls. The parts are not welded or moved: use move_to_contact to close a gap.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| names | Yes | ||
| delete_sources | No |
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 usefully discloses world-space merging, material retention, and that geometry is neither welded nor moved, but it omits the destructive default that source objects are deleted (delete_sources defaults to true) and says nothing about the resulting object's name/origin or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler: the core operation comes first, then the motivation, then the boundary condition and alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and 0% schema coverage, the description covers the geometry semantics well but leaves the destructive source-deletion behavior and the output object's identity undocumented, which an agent needs 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% and the description never names or explains any of the three parameters. It implies a plural input ('several meshes') but leaves 'name' and especially the destructive 'delete_sources' default entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (merge) and resource (meshes into one mesh object) and anchors it to a well-known Blender operation (Join/Ctrl+J), which disambiguates it from siblings like weld, attach, and parent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (do it before export to save draw calls) and explicitly routes the agent to move_to_contact when the goal is closing a gap. It does not, however, say when *not* to combine (e.g. when separate objects are needed for rigging or per-part materials/animation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_viewA
Compare the model with a reference image in one flat view: the main metric of a build from references.
The reference is placed in the world: its bottom on the model bottom, horizontal centres equal.
Scale: height_m is the real size of the subject along the VERTICAL of the (turned) picture, width_m along
its horizontal; give one, and a model that is too big or too small is caught. With none the reference is fitted
to the model height and only the outline shape is compared. iou_outline is always that shape-only match.
Views (the model front faces -Y, Z up) and the picture each expects. front: +X to the right. back: -X to the
right. right (side is the same): camera on +X, the front points LEFT. left: the front points right. top: +X to
the right, the front at the BOTTOM. bottom: the front at the top. flip ('x' left-right, 'y' top-bottom) and
rotate (degrees clockwise; flip first) turn the reference for this call.
names is the model (empty: everything visible but a huge floor or backdrop, listed in excluded).
Returns iou_registered, both sizes, a table per band along the vertical (widths, delta, shift, verdict; worst
first) and inner_detail: edge_agreement 0..1 between the reference inner edges and the creases and depth steps
of the model (the IoU does not see slots and holes inside the outline). Under IoU 0.3 a hint says if a mirrored or turned reference fits far better. The image: reference,
model, overlay (red reference outline, green model outline, yellow and blue inner edges), difference; out also
saves it. colors=N adds the match of N colour classes of the reference. For a perspective photo use
match_camera and overlay_reference.
| Name | Required | Description | Default |
|---|---|---|---|
| out | No | ||
| flip | No | ||
| size | No | ||
| view | No | front | |
| bands | No | ||
| names | No | ||
| colors | No | ||
| rotate | No | ||
| width_m | No | ||
| height_m | No | ||
| reference | Yes | ||
| threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the return payload (iou_registered, sizes, per-band table, inner_detail, hint), what happens with empty names ('everything visible but a huge floor or backdrop, listed in excluded'), flip/rotate ordering ('flip first'), and the IoU<0.3 hint behavior. This is unusually rich behavioral disclosure for an un-annotated 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 purpose, which is good, but the body is dense shorthand with heavy parenthetical asides and a long view-orientation block that is hard to parse. Much of the length is justified by 12 undocumented params, but the phrasing is not economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a 12-param tool with no output schema and no annotations, the description supplies return values, scale semantics, and view conventions, which is close to sufficient. Gaps remain for size/bands/threshold meaning, but an agent could 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 coverage is 0% with 12 params, so the description must compensate, and it explains height_m, width_m, names, flip, rotate, colors, out, and view semantics (including per-view camera orientation). It leaves size, bands, threshold, and reference unexplained, so coverage is strong but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Compare the model with a reference image in one flat view') and immediately frames it as 'the main metric of a build from references'. It also names the sibling tools (match_camera, overlay_reference) that handle the perspective-photo case, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not guidance: 'For a perspective photo use match_camera and overlay_reference.' It also explains the selection logic for height_m/width_m ('give one, and a model that is too big or too small is caught') and when the reference is auto-fitted. Clear context, though it doesn't enumerate all sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_armatureA
Make a skeleton from numbers. bones is a list of {"name", "head": [x,y,z], "tail": [x,y,z], "parent": name (optional),
"connect": bool (optional)} in world metres; list parents before children. For a biped: root, spine, chest, neck,
head, and arms and legs with L/R suffixes. Then bind a mesh with bind, and test with pose.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| bones | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses coordinate units ('world metres') and the parent-ordering constraint, but it does not describe side effects, error behavior, or whether the operation is additive to 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?
The description is front-loaded with the core action, then efficiently details bone structure and a biped example. The biped list is useful but slightly verbose; overall it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 creation tool with no annotations, no output schema, and 0% schema description coverage, the description covers input structure well. It omits return value, error handling, and explicit confirmation that it creates a new armature in the scene.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly documents the bone object fields (name, head, tail, parent, connect) and their constraints, though the top-level 'name' parameter is only implied by context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Make a skeleton from numbers.' It is clearly about creating an armature and not a generic mesh or primitive, but it does not explicitly contrast itself with sibling tools like limb or create_primitive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 workflow hint by naming bind and pose as follow-up tools, and gives a biped example structure. However, it does not state when to choose this tool over alternatives such as limb or create_primitive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_primitiveA
Create a primitive with a real size in metres (no hidden scale). For a torus size is [outer width, outer depth,
tube thickness], segments is the count around the ring. The anchor
point of its bounding box (fractions 0..1) is placed at world point at: anchor (0.5,0.5,0) with at (0,0,0)
stands the shape on the ground. size is the size before rotation. rotate_deg [rx, ry, rz] turns the shape
about the point at around the world X, then Y, then Z axis, after it is placed. A barrel along +X: a cylinder
with rotate_deg [0, 90, 0]. The answer shows the size and box after the turn.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| kind | Yes | ||
| name | Yes | ||
| size | No | ||
| anchor | No | ||
| segments | No | ||
| rotate_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the no-hidden-scale guarantee, that size is pre-rotation, the exact rotate order (X then Y then Z about `at`, applied after placement), and that the response reports size and box post-rotation. It stops short of stating persistence/undo or naming/uniqueness 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?
Front-loads the core promise (real size, no hidden scale) and then layers geometry semantics efficiently. Dense but every clause carries information; the only minor cost is a slightly run-on middle section covering anchor and rotation in adjacent 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?
For a 7-parameter creation tool with no annotations and no output schema, the description supplies the placement, sizing, and rotation model an agent needs, plus a note on what the response contains. Missing pieces are minor (naming behavior, material/side-effect details).
Complex tools with many parameters or behaviors need more documentation. 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: size units and torus ordering, anchor as bounding-box fractions 0..1 with a concrete default example, rotate_deg ordering, and segments meaning for a torus. Only `name` semantics (uniqueness/collision) and the `kind` enum are 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?
States a specific verb+resource ('Create a primitive') and immediately pins down the key distinguishing trait — real size in metres, no hidden scale — which separates it from import/loft/lathe siblings that also produce geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 rich semantics for how to use the tool correctly (anchor placement, rotation order, the barrel example), but never states when to prefer it over alternatives like text_mesh, import_glb, or boolean/combine workflows. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decimateA
Reduce the triangle count. collapse: merges vertices to reach ratio (0..1 of the current triangles) or
target_tris; it can distort shapes and UVs, so check with compare_view afterwards. planar: dissolves flat faces
whose neighbours differ less than angle degrees (cleans up subdivided flat surfaces without changing the shape).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | collapse | |
| angle | No | ||
| ratio | No | ||
| object | Yes | ||
| target_tris | No |
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 and does well: it warns that collapse can distort shapes and UVs and recommends compare_view afterwards. It also explains planar's shape-preserving behavior, though it does not explicitly state whether the operation is permanent or 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 core purpose and then efficiently details both modes. It uses two tight sentences with no filler, and the backtick parameter references aid scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema and no annotations, the description still gives enough for correct invocation: mode semantics, parameter meanings, and the main risk/check workflow. Minor omissions like the object parameter's expected format and explicit permanence are acceptable but 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?
Schema description coverage is 0%, so the description must compensate. It explains ratio (0..1 of current triangles), target_tris as an alternative, angle in degrees for planar, and the mode enum, but leaves the required object parameter 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?
The description states a specific verb and resource: reduce the triangle count via decimation. It distinguishes the two modes collapse and planar, making the tool's purpose immediately clear relative to mesh-editing 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?
It clearly explains when to use each mode: collapse for reaching a ratio/target, planar for cleaning up subdivided flat surfaces. It also advises checking with compare_view after collapse, though it does not explicitly contrast decimate with alternatives like remesh or repair_mesh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dedupe_materialsA
Merge materials that look the same: same colour, roughness, metallic, alpha, emission, coat and same textures,
each within tolerance (0.01 means 1 percent). Users move to the first material of each group, the extras are deleted,
and slots that now repeat inside a mesh are joined. Fewer materials means fewer draw calls. names limits the check.
Returns how many were removed and the material count before and after. Textured and procedural materials only merge
when their images and node types are the same.
It also cleans up, on every mesh: clean_slots=true removes empty slots and slots that no face uses
(empty_slots_removed, unused_slots_removed); remove_orphans=true deletes materials with zero users (orphans_removed).
An empty slot that faces still point at is kept and listed in faces_without_material: assign those faces first.
tolerance=0 merges only exact copies.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | ||
| tolerance | No | ||
| clean_slots | No | ||
| remove_orphans | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses that users are moved to the first material, extras are deleted, repeated slots are joined, and that clean_slots/remove_orphans have destructive side effects. It even covers the edge case of an empty slot still referenced by faces (kept and reported in `faces_without_material`) and the tolerance=0 semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded: the core merge behavior and its rationale come first, followed by side effects and edge cases. It is longer than typical, but nearly every clause adds a distinct behavior; minor tightening is possible 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?
No output schema exists, yet the description states what is returned (count removed, material count before/after) and names the individual counters (`empty_slots_removed`, `unused_slots_removed`, `orphans_removed`). For a destructive, no-annotation, no-output-schema tool this is 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 explains all four parameters: `names` limits the check, `tolerance` is quantified ('0.01 means 1 percent', 'tolerance=0 merges only exact copies'), and `clean_slots`/`remove_orphans` are tied to their observable effects and output counters.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource ('Merge materials that look the same') and immediately enumerates the matching criteria (colour, roughness, metallic, alpha, emission, coat, textures). An agent can distinguish this from list_materials, assign_material_faces, and procedural_material without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear rationale and conditions for use ('Fewer materials means fewer draw calls', 'Textured and procedural materials only merge when their images and node types are the same') and constrains scope via `names`. It does not name an alternative tool or state when NOT to dedupe, 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.
deformA
Bend, twist, taper or stretch the whole mesh. bend and twist take amount in degrees, taper and stretch a
factor. axis: for twist, taper and stretch it is the long axis of the part; for bend it is the axis the part curls
around, so a standing bar (long along Z) bends forward with axis X or sideways with axis Y. origin is a world
point (default the object origin); limits [0,1] restrict the effect to a fraction of the length. The mesh needs
enough vertices along the axis: subdivide_faces first.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Z | |
| kind | Yes | ||
| amount | Yes | ||
| limits | No | ||
| lock_x | No | ||
| lock_y | No | ||
| object | Yes | ||
| origin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does well: it gives units per mode (degrees vs factor), explains axis semantics with a worked example, states the origin default and the [0,1] limits range. It omits whether the operation mutates in place/destructively and says nothing about lock_x/lock_y 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?
Dense but front-loaded: the operation and modes come first, then units, then axis semantics, then defaults and the prerequisite. Every sentence adds actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description covers units, axis, origin, limits, and the vertex-density prerequisite. The undocumented lock_x/lock_y and the absence of any statement about in-place modification are the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it explains amount units, axis meaning per mode, origin, and limits. It leaves lock_x and lock_y entirely undefined, which is a real gap for two of the eight parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific operation (deform) and enumerates the four modes (bend, twist, taper, stretch) with the resource being 'the whole mesh'. The mode list distinguishes it from siblings like transform_objects, array, or subdivide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 concrete prerequisite ('The mesh needs enough vertices along the axis: subdivide_faces first'), which routes the agent to a sibling tool. It does not, however, state when to prefer deform over transform_objects or the array tools, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteA
Delete whole objects. Take a checkpoint first if you are not sure. Give at least one of: names; prefix
(every object whose name starts with it: 'bl_light_' removes the setup_lighting preset); lights (added: the
lights made by add_light, all: every light). with_children=true also deletes everything parented to them.
Otherwise the children stay where they are in the world and lose the parent: the answer lists them as
unparented. Use delete_faces to remove a part of a mesh.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | ||
| lights | No | ||
| prefix | No | ||
| with_children | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the side effect of with_children=false (children lose their parent and are reported as `unparented`), the scope expansion of prefix, and the risk mitigation via checkpoint. It stops short of stating reversibility/undo semantics or permission requirements, 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 action and the checkpoint warning, then dense parameter semantics with a worked example, and closes with the sibling routing. No sentence 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 destructive tool with no annotations and no output schema, the description covers selectors, cascading behavior, the returned `unparented` list, and the alternative tool. Nothing an agent needs to invoke it safely and 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 does: it explains that at least one of names/prefix/lights is required, defines prefix with a concrete example ('bl_light_' removes setup_lighting), enumerates the lights values (added vs all), and explains with_children. All four undocumented parameters are given meaning beyond their 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?
States a specific verb and resource ('Delete whole objects') and immediately draws the boundary against the sibling delete_faces ('Use delete_faces to remove a part of a mesh'). An agent can distinguish this tool from the mesh-face deleter 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 names the alternative (delete_faces) and the condition selecting it, tells the agent at least one selector must be supplied, and adds a prerequisite-style warning ('Take a checkpoint first if you are not sure'). When-to-use, requirement, and alternative are all covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_facesA
Delete the picked faces of one mesh (makes openings: doors, windows, open boxes). Use delete to remove whole
objects.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| where | No | ||
| object | Yes |
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 operation's effect (creates openings/holes) and the matching rules for `where`, but says nothing about reversibility, undo/checkpoint interaction, or whether other objects are affected — notable gaps for an unannotated destructive 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 purpose and the sibling distinction, then moves to the filter syntax. Dense but nearly every clause is functional; the `where` enumeration is long but necessary given 0% 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?
For a 2-param destructive tool with no annotations and no output schema, the definition covers the selection semantics thoroughly and warns about the whole-object alternative. It is only incomplete on behavioral matters like undo/checkpoint safety and any return value.
Complex tools with many parameters or behaviors need more documentation. 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 `where` keys (normal with angle default 25, x/y/z ranges, box, area, index), explains that null means open, and that {} or null picks everything. Only the `object` parameter is left implicit, which is why this is not 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+resource ('Delete the picked faces of one mesh') and immediately gives the practical outcome (makes openings: doors, windows, open boxes). It explicitly differentiates itself from the sibling tool delete, which removes whole objects, so an agent can route correctly 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?
Names the alternative (delete) and the condition that selects it ('to remove whole objects'), and adds a workflow prerequisite ('Look at mesh_info first to see where the faces are'). It does not spell out when-not to use it beyond that, but the routing guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_sinceA
What changed since a checkpoint: added and removed objects, and objects that moved or changed size by more than
tolerance metres, with sizes before and now. A changed object also gets topology (counts of verts, edges,
faces and tris, before -> now) and material_slots (the slot lists before and now) when they differ, so an edit
that keeps the size still shows. Use it to review a long session or to see what a tool did.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | last | |
| tolerance | No |
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 return shape in unusual detail (what counts as changed, the tolerance threshold, the topology and material_slots payloads). It doesn't state whether a missing/expired checkpoint is an error or what happens with the default `name`, 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?
Two sentences, front-loaded with the core answer (what changed), then the detail on payload contents, then a closing usage line. No filler and no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does the heavy lifting by describing the returned fields, which is enough for an agent to consume results. The remaining gap is the checkpoint-identification parameter and error behavior when no checkpoint matches.
Complex tools with many parameters or behaviors need more documentation. 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 explain `tolerance` meaningfully (metres of movement/size change required to count as changed), but the `name` parameter and its default "last" are never explained — it is only implied that it identifies a checkpoint.
Input schemas describe structure but not intent. Descriptions should explain 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 operation (diff against a checkpoint) and enumerates exactly what it reports: added/removed objects, moved or resized objects, plus topology and material_slots deltas. This is distinguishable from siblings like checkpoint, rollback, status, or mesh_info, which perform different jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it to review a long session or to see what a tool did" gives clear positive guidance on when this tool applies. It stops short of naming exclusions or pointing at alternatives (e.g. status vs checkpoint vs rollback) for related questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicateA
Copy an object and move the copy by offset metres. linked=true shares the mesh data. rotate_deg [rx, ry, rz]
then turns the copy around the world X, Y, Z axes (in that order) about pivot, a world point. The default pivot is
the centre of the copy's bounding box, after the offset.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| pivot | No | ||
| linked | No | ||
| offset | No | ||
| new_name | No | ||
| rotate_deg | No |
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 substantial work: it explains that linked=true shares mesh data, specifies rotation order around world X, Y, Z axes, and defines the default pivot as the copy's bounding-box centre after offset. It still omits side effects such as whether the original is selected, what is returned, and any naming-collision behavior, but the key non-obvious semantics are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with zero waste. The core action is front-loaded, followed by linked-mesh behavior and rotation/pivot semantics. 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 6 parameters, 0% schema description coverage, no annotations, and no output schema, the description is only partially complete. It covers the most complex geometric behavior well but does not explain the required `name`, the `new_name` parameter, selection/return behavior, or how this relates to alternative duplication 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 coverage is 0%, so the description must compensate. It meaningfully defines offset, linked, rotate_deg, and pivot, but leaves the required `name` parameter and `new_name` entirely unexplained. Partial compensation for half the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Copy') and resource ('an object') and describes the copy's movement. Clear purpose, but it does not explicitly distinguish itself from nearby duplication-like siblings such as array, radial_array, or mirror, 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?
Provides no when-to-use guidance and no alternatives. It never says when to choose duplicate instead of array, radial_array, mirror, or other copy-producing tools. Usage is only implied by the parameter explanations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_glbA
Write a GLB of the named objects (with children), or of all visible geometry. glTF uses +Y up and triangulates
every face. influences 4 (or 8) is the bones per vertex that the game engine reads. draco compresses geometry (the game
needs the Draco decoder). Options this Blender does not know are reported as ignored_options. scale multiplies the
whole export about the world origin (a 0.1 m model with scale 10 leaves as 1 m). The scene is restored after the
export; the scale is written as the node scale of the top objects. max_texture_size (pixels on the longer side)
writes smaller copies of larger textures into the GLB; the images in the scene and on disk stay as they are. Nine
2048 px maps make a file of about 25 MB: 1024 or 512 is enough for a small prop. The answer has textures: count,
bytes, and name, size and bytes of each image in the file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| draco | No | ||
| names | No | ||
| scale | No | ||
| skins | No | ||
| tangents | No | ||
| animations | No | ||
| influences | No | ||
| apply_modifiers | No | ||
| max_texture_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden and does so well: it states the axis convention and triangulation, the world-origin scaling semantics, that the scene is restored afterwards, that the scale is written as node scale, and that max_texture_size rewrites copies inside the GLB while on-disk images stay unchanged. It even hints at return payload structure ('The answer has textures: count, bytes, and name, size and bytes').
Agents need to know what a tool does to the 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 long but dense – nearly every sentence adds a distinct fact (units, side effects, compression caveat, texture budget heuristic). The core purpose is front-loaded, though the texture-size discussion drifts toward an aside for a tool that does much more.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 10-parameter mutation tool with no annotations and no output schema, the description covers side effects, scale semantics and return hints well, which is the hard part. It remains incomplete on five parameters and on whether an existing file at `path` is overwritten, which is the main residual risk for an export 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% across 10 parameters, so the description must compensate, and it only partially does: it explains draco (needs the Draco decoder), influences (bones per vertex), scale (world-origin multiplier with a worked example) and max_texture_size (pixels on longer side, with a size/quality tradeoff). skins, tangents, animations, apply_modifiers and path are left entirely to 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 opening sentence gives a concrete verb and resource ('Write a GLB of the named objects (with children), or of all visible geometry'), so the operation and its scope are unambiguous. It does not name or contrast with the nearby siblings (import_glb, inspect_glb, save_blend), so an agent must infer the boundary 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?
Usage is implied by the game-engine framing ('the bones per vertex that the game engine reads', 'the game needs the Draco decoder') but there is no explicit when-to-use, when-not-to-use, or alternative routing. An agent can infer it exports for a game runtime, but nothing steers it away from inspect_glb or save_blend.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extrude_facesA
Extrude the picked faces as one region. distance is along their average normal (negative digs in); offset is a
world vector instead. scale resizes the new cap about its centre (a taper); inset first shrinks the region by that
many metres. Typical: raise a roof, make a post, a step, a window recess.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| inset | No | ||
| scale | No | ||
| where | No | ||
| object | Yes | ||
| offset | No | ||
| distance | No |
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 disclose real behavior: negative `distance` 'digs in', `offset` is a world vector, `scale` produces a taper, `inset` shrinks the region. However, it says nothing about geometry side effects, whether the source faces are consumed, failure modes, or what the result looks like — gaps that matter for an unannotated 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?
Dense and front-loaded — the core operation and the primary parameters come first, then examples, then the selector grammar. The `where` clause is lengthy but each key earns its place; only minor tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 6-parameter unannotated mutation tool with no output schema, the description covers five parameters in depth and adds usage and selection guidance. Remaining gap is the absence of any statement about the resulting geometry or side effects, but it is otherwise sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains the meaning and units of `distance`, `offset`, `scale`, and `inset`, and fully documents the `where` selector's keys (normal, angle default 25, world-centre ranges, box, area, index) plus the {} / null default. Only the obvious `object` 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 plus the scope ('Extrude the picked faces as one region'), and the mention of `inset`/`scale`/`offset` variants distinguishes it from siblings like inset_faces, subdivide_faces, and delete_faces. 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?
Gives concrete typical uses ('raise a roof, make a post, a step, a window recess') and a prerequisite routing hint ('Look at mesh_info first to see where the faces are'). It does not name explicit alternatives or when-not-to-use cases (e.g. inset_faces vs this), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extrude_profileA
Make a solid by extruding a closed 2D polygon, centred on its depth. plane XZ: points are [x, z] and the
depth runs along Y (front outline); YZ: [y, z], depth along X (side outline); XY: [x, y], depth along Z (top).
at shifts the result in the world. holes is a list of polygons in the same coordinates (or the holes of
trace_outline as they are): each is cut through the solid with the checks of boolean; a flawed cut is kept and
listed in warnings. Good for soles, panels, signs, floor plans, outline-based parts.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| name | Yes | ||
| depth | Yes | ||
| holes | No | ||
| plane | No | XZ | |
| points | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses rich behavior: the solid is centred on its depth, plane coordinate conventions are spelled out, `at` shifts the result in world space, and holes are cut using boolean checks with flawed cuts kept and reported in `warnings`. This is well beyond what any structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the core action, then covers coordinate conventions, positioning, holes/warnings, and use cases. Every sentence contributes necessary information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter 3D modeling tool with no annotations and no output schema, the description covers geometry semantics, hole behavior, and failure reporting well enough for correct invocation. It stops short of explaining the required `name` parameter or the overall return shape, which would help an agent fully understand the result.
Complex tools with many parameters or behaviors need more documentation. 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 for most parameters: `plane` gets detailed coordinate-axis mapping, `at` is explained as a world shift, and `holes` is described as a list of polygons cut through the solid. It leaves `name` unexplained and does not clarify `depth` units or sign, so it is strong but not complete.
Input schemas describe structure but not intent. Descriptions should explain 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 ('extruding') and resource ('closed 2D polygon') to produce a solid, and it explicitly distinguishes this from face extrusion by requiring a closed polygon profile. An agent can tell it apart from siblings like extrude_faces or loft 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?
It gives clear positive use cases ('Good for soles, panels, signs, floor plans, outline-based parts'), which helps an agent decide when to select it. However, it does not state when not to use it or name an alternative tool, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_floatingA
Find parts that hang in the air. Meshes that touch or overlap form groups; the main group is the one
that stands on ground_z (or the largest). Every other group is floating: the answer names its nearest part
and the gap. tiny_gaps lists pairs that miss by touch..near metres (seams you cannot see). Run it
after assembling a model, then fix with move_to_contact or attach. Long lists are folded to max_listed entries
with a count. Empty touch and search follow the part size: 0.001 m and 1 m for parts of 0.3 m and more, less for
small parts (a 5 cm part gets about a sixth). Empty near is 2 percent of the size of each pair (the diagonal of
both parts together), at most 0.03 m: about 6 mm for a pair 0.3 m across. Each tiny gap shows the near it was
held against. Give numbers in metres to fix them.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | ||
| names | No | ||
| touch | No | ||
| search | No | ||
| ground_z | No | ||
| max_listed | No |
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 explains grouping logic, how the main group is chosen, that results are folded to max_listed with a count, and the fallback defaults for empty touch/search/near. It does not explicitly state that the tool is read-only/non-mutating, which is the one behavioral trait left to inference.
Agents need to know what a tool does to the 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 definition before the defaults and follow-up advice, and every sentence carries information. It is dense and some sentences pack multiple clauses (e.g. the size-scaling examples), which costs a bit of readability but no sentence 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?
There is no output schema, so the description explains the return shape (nearest part and gap per floating group, tiny_gaps pairs, folding with a count), which is appropriate. It is nearly complete for a six-param tool; the only omission is any explanation of the `names` filter parameter.
Complex tools with many parameters or behaviors need more documentation. 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 for five of six parameters: near (2% of the pair diagonal, capped at 0.03 m), touch (0.001 m scaled by part size), search (1 m scaled), ground_z, and max_listed. The `names` parameter is never mentioned, leaving one gap in an otherwise strong compensation.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Find parts that hang in the air') and immediately defines the concept operationally: meshes that touch/overlap form groups, the group standing on ground_z (or largest) is the main one, everything else is floating. An agent can distinguish it from siblings like check_contacts, ground, or move_to_contact 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 timing and follow-up ('Run it after assembling a model, then fix with move_to_contact or attach'), naming the concrete remediation siblings. It lacks an explicit when-not-to-use or a contrast against check_contacts, so it falls just short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fit_to_referenceA
Move, scale and tilt parts by itself to raise the match with reference silhouettes. Use it when the forms
are roughly right: it fixes placement and proportions, not shapes. For each part in parts it keeps the changes
that raise the world-registered IoU over all views (as compare_view measures it).
references maps a view (as in compare_view) to an image; names is the whole model (everything visible but a
huge floor or backdrop when empty).
Scale per view, as in compare_view: height_m (vertical of the picture) or width_m (horizontal). Each is one
number for all views or a dict per view, and every view needs one: height_m=0.152 with width_m={"top": 0.0325}.
A size that names the view wins over a plain number.
mirror_pairs [["arm_L","arm_R"]] keeps pairs symmetric (list both in parts). tune picks what may change.
Guard: a move that raises the IoU but hides the part is refused: visible_share (the share of the part that the
rest of the model does not cover) may drop by max_hide at most (1 turns the guard off). The answer lists
rejected moves and visible_share [before, after].
It takes the checkpoint 'before_fit' first: rollback undoes it. Background job: after wait seconds the answer
is a job id for job_status.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| tune | No | ||
| wait | No | ||
| names | No | ||
| parts | Yes | ||
| step_m | No | ||
| width_m | No | ||
| height_m | No | ||
| max_hide | No | ||
| max_tilt | No | ||
| tilt_deg | No | ||
| max_shift | No | ||
| threshold | No | ||
| iterations | No | ||
| references | Yes | ||
| scale_step | No | ||
| time_limit | No | ||
| mirror_pairs | No |
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 substantial work: it discloses the IoU optimization objective, the guard that refuses moves hiding parts, checkpoint creation ('before_fit') with rollback, background-job timeout behavior via wait, and rejection reporting. It doesn't state whether the operation is destructive to existing transforms or whether it fails atomically, leaving a small gap 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-loads the core purpose and 'when' well, but the body is dense, runs long, and mixes several concerns (scaling syntax, guard mechanics, rollback, jobs) in an undifferentiated block. Every sentence is substantive, but structure and segmentation would help 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?
For an 18-param, no-annotation, no-output-schema tool, the description covers the dominant concepts an agent needs: purpose, metric, which views/refs, size specification, guard behavior, and async job handling. Missing detail on numerous tuning parameters and exact returned fields (only partially noted: rejected moves, visible_share before/after) keeps it short of 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% across 18 params, so the description must compensate and does for several key ones: references, names, height_m/width_m (including the dict-per-view form and precedence rule), mirror_pairs, tune, max_hide/visible_share, and wait. However, many numeric tuning params (step_m, scale_step, threshold, iterations, max_tilt, tilt_deg, max_shift, time_limit, size) are undocumented, leaving a gap given the very low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Move, scale and tilt parts') and distinguishes from shape-editing siblings by explicitly saying it 'fixes placement and proportions, not shapes.' The optimization target (world-registered IoU over all views as measured by compare_view) is named precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when the forms are roughly right') and states what it does not do (shapes). It anchors the metric to compare_view, giving the agent an alternative/companion tool for interpreting results. No important exclusions left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
groundA
Move objects (all top-level objects when names is empty) so their lowest point sits at height z. Use place_on instead when the floor is another object or not level.
| Name | Required | Description | Default |
|---|---|---|---|
| z | No | ||
| names | No |
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 usefully discloses scope behavior (all top-level objects when names is empty), which is real behavioral context. However, it never states that this is a mutating operation, whether it is reversible, or how it interacts with grouped/child objects, leaving the safety profile implicit.
Agents need to know what a tool does to the 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, zero waste, with the core transformation front-loaded before the alternative-tool routing. Nothing 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 simple 2-parameter, no-output tool, the description covers purpose, scope default, and the sibling alternative. Remaining gaps (coordinate frame, effect on non-top-level objects) are minor.
Complex tools with many parameters or behaviors need more documentation. 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: it explains that an empty names list means all top-level objects and defines z as the target height of the lowest point. This adds genuine meaning beyond the bare number/null schema, though the coordinate frame (world vs. parent) is unstated.
Input schemas describe structure but not intent. Descriptions should explain 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 (move) and resource (objects) plus the exact transformation applied (lowest point at height z), and explicitly names the sibling tool it is not (place_on). An agent can distinguish it from place_on, move_to_contact, and transform_objects without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit alternative and the selecting condition: 'Use place_on instead when the floor is another object or not level.' This is exactly the when-not guidance that routes the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_glbB
Import a GLB or glTF file and list the new objects with their world sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses a return-side trait ('list the new objects with their world sizes'), which tells the agent the call adds objects and reports their scale. However it omits whether import replaces or appends to the scene, error behavior for malformed files, and unit/scale 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?
A single front-loaded sentence with no filler: action first, artifact type second, result last. Every clause earns its place and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter import tool with no output schema and no annotations, the description covers the core action and roughly what is returned. It is still missing path-format guidance and whether the import mutates the existing scene, which an agent would need to call it confidently.
Complex tools with many parameters or behaviors need more documentation. 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 single 'path' parameter is undocumented in the schema, so the description must compensate. Saying 'GLB or glTF file' hints that path targets a file, but it never states whether the path is absolute or relative, accepted extensions, or how it resolves, leaving the one required parameter underspecified.
Input schemas describe structure but not intent. Descriptions should explain 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 (import) and resource (GLB or glTF file), and the verb clearly separates it from export_glb and inspect_glb among the siblings. It also notes the outcome of listing new objects, so an agent can identify the tool without opening the schema, though it never explicitly names the contrasting 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?
Usage is only implied: an agent can infer this is the tool to call when bringing an external GLB/glTF asset into the scene, but there is no statement of when to prefer it over inspect_glb, nor any prerequisites (e.g. file must exist on disk). No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inset_facesA
Inset the picked faces by thickness metres (empty: 0.02 m, less on objects under 0.3 m), optionally pushing
the inner face by depth (negative is a recess). individual=true insets each face on its own.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| where | No | ||
| object | Yes | ||
| thickness | No | ||
| individual | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the empty/default thickness (0.02 m) and its adaptation to small objects (<0.3 m), the negative-depth convention as a recess, and per-face vs grouped execution. It stops short of stating whether the operation is destructive, reversible, or requires any auth/side-effect warnings.
Agents need to know what a tool does to the 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 verb, and the dense `where` documentation is warranted given 0% schema coverage. The prose is packed but each clause adds needed selection or behavioral detail; the single multi-line paragraph is slightly heavy 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?
For a 5-param, no-annotation, no-output-schema mutation tool, the description is nearly self-sufficient: parameters, defaults, and the selection DSL are covered. The only unanswered question is the return/result behavior and any effect on the pre-existing mesh.
Complex tools with many parameters or behaviors need more documentation. 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: thickness, depth, and individual are all explained with defaults and semantics, and the complex `where` object is fully documented (keys, formats, null/missing behavior). Only `object` is left implicit, 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 and resource ('Inset the picked faces'), immediately distinguishing it from sibling face tools like extrude_faces or subdivide_faces. It also clarifies the core modifiers (thickness, depth, individual) in the first two sentences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 operational context: default thickness behavior, sign convention for depth, and the meaning of individual. It also prescribes a prerequisite workflow ('Look at mesh_info first'). It does not, however, explicitly contrast when to choose inset over extrude_faces or subdivide_faces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_glbA
Read a GLB file without Blender: triangles, vertices, materials, textures with sizes, extensions, file size and warnings (missing normals or UV, oversized or non-power-of-two textures, duplicate node names). Run it on the file you exported, because that is what the game loads.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_texture | No |
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 substantial work: it discloses the exact return contents and the specific warning conditions (missing normals/UV, oversized or non-power-of-two textures, duplicate node names). It never explicitly confirms the operation is read-only/non-mutating, but the phrasing implies inspection only.
Agents need to know what a tool does to the 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 output enumeration, then a short rationale sentence. The field list is long but each item earns its place by telling the agent what it will learn; 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?
For a 2-parameter read-only inspection tool with no output schema and no annotations, the description effectively serves as the output contract by listing returned data and warning triggers. The remaining gap is the undocumented max_texture parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 2 parameters, so the description must compensate. It only implicitly identifies 'path' ('the file you exported') and says nothing at all about 'max_texture' or its 2048 default, leaving the agent without guidance on a parameter that changes the reported result.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Read a GLB file without Blender') and enumerates exactly what is extracted: triangles, vertices, materials, textures with sizes, extensions, file size and warnings. The 'without Blender' framing clearly separates it from import_glb and the mesh-inspection 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?
Gives a clear usage context with rationale: 'Run it on the file you exported, because that is what the game loads.' That tells the agent when this tool is the right one, but it names no alternative (check_mesh, mesh_info, check_game_ready) and gives no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_statusA
State of a background job: running with progress, done with its result, failed with the error. Long tools
(fit_to_reference, match_camera, bake_maps) return a job id when they run longer than their wait seconds.
Without job it lists all jobs of this Blender session. cancel=true stops the job; the scene keeps the changes
the job already made: use rollback to undo them.
| Name | Required | Description | Default |
|---|---|---|---|
| job | No | ||
| cancel | No |
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 cancel stops the job while the scene retains the changes the job already made, and routes the user to rollback for undo. It omits the exact return format/progress shape and any indication of whether polling is required, which keeps it out of the top band.
Agents need to know what a tool does to the 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 tool's purpose and enumerates state outcomes compactly, then handles the job-id origin, the no-arg listing behavior, and cancellation/undo. Dense but each 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 two-parameter, no-annotation, no-output-schema tool, the description covers purpose, both parameter behaviors, the lifecycle that produces job ids, and the cancel/rollback side effect. It is nearly complete, lacking only detail on the returned progress/result payload.
Complex tools with many parameters or behaviors need more documentation. 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 parameters are bare (no descriptions), so the description must compensate. It does: `job` is defined by its absence (lists all session jobs) and `cancel=true` is defined as stopping the job. Both parameters gain meaning 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?
States a specific noun+behavior — reporting the state of a background job — and enumerates the possible outcomes (running/progress, done/result, failed/error). An agent can tell what it returns. It does not, however, differentiate itself from the sibling `status` tool, which is the one thing that could confuse 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?
Explains the trigger condition: long tools that exceed their `wait` seconds return a job id, which you then poll here; omitting `job` lists all session jobs. It names the alternative `rollback` for undoing a canceled job's changes. No explicit when-not-to-use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
latheB
Spin a profile around an axis. profile is a list of [radius, height] points from the bottom up. A profile that
touches the axis (radius 0) at both ends makes a solid (vase, bottle, column, cone). A profile that stays away from the
axis is an open tube: close=true repeats the first point so the loop is closed and the spin gives a ring (donut,
tyre, pipe section, torus-like shapes). angle under 360 makes a wedge.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| cap | No | ||
| axis | No | Z | |
| name | Yes | ||
| angle | No | ||
| close | No | ||
| profile | Yes | ||
| segments | No |
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 disclose real behavioral traits: how a radius-0 profile yields a solid, how close=true closes the loop to produce a ring, and how angle<360 produces a wedge. It stops short of describing defaults for cap/segments/axis or whether it creates a new scene object, but the core operation semantics are unusually well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core operation before the profile format and the shape outcomes. The parenthetical shape examples (vase, donut, wedge) earn their place by anchoring abstract parameters to concrete results, with 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 mutation tool with no annotations and no output schema, the description covers the pivotal geometry but leaves cap, segments, axis, and at unexplained, so an agent cannot fully reason about the call. Adequate but with clear gaps given 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 coverage is 0%, so the description must compensate, and it does document the most consequential parameters: the [radius, height] point format, close, and angle. However, at, axis, cap, segments, and name are undocumented in both schema and description, leaving half the surface unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Spin a profile around an axis') and immediately grounds it with the profile format, so an agent knows exactly what operation this performs. It does not explicitly contrast with nearby siblings like sweep, loft, or extrude_profile, which also turn profiles into solids, 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?
The description explains geometry outcomes (solid vs tube vs ring vs wedge) but never states when to choose lathe over sweep, loft, extrude_profile, or radial_array, nor any prerequisite for calling it. There is implied usage via shape examples but no explicit selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
limbB
Make a smooth tube along a polyline of world points (Skin plus Subdivision). One radius per point, or one radius for all. Good for arms, legs, tails, tentacles, branches. Ends are rounded and stay inside the path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| apply | No | ||
| radii | Yes | ||
| sides | No | ||
| points | Yes | ||
| subdivisions | No |
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 real behavior: ends are rounded, geometry stays inside the path, and radii can be uniform or per-point. It omits whether the object is created/modified, permission or scene-state requirements, and what the 'apply' flag actually does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and technique, and reasonably tight. The use-case list adds selection value rather than pure padding, though it is the softest sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations, no output schema, and 0% schema description coverage over 6 parameters. For a mesh-creation tool the description explains the geometry concept well but leaves too many parameter semantics and mutation behaviors undocumented for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. 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 6 parameters, so the description must compensate. It only clarifies points (polyline of world points) and radii (one per point or one for all); name, apply, sides, and subdivisions are left completely unexplained in both the schema and the 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?
States a specific verb and resource: 'Make a smooth tube along a polyline of world points', plus the technique (Skin plus Subdivision) and example uses. It is clearly distinguishable from generic siblings, but it never explicitly contrasts itself with close relatives like sweep, loft, or extrude_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 example list ('arms, legs, tails, tentacles, branches') implies the intended context, so an agent can infer when to reach for it. However, there is no explicit when-not-to-use guidance and no named alternative against sweep or loft, which is the real selection risk here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
line_of_sightA
Can point or object a see b? Each is a world point or an object name (its bounding-box centre). The two
named objects never block the ray. Returns the first blocker. Use it for sight lines, cover and corridors.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that object names resolve to bounding-box centres, that the two named objects never block the ray, and that the first blocker is returned. This is exactly the kind of caveat an agent needs to interpret results, though the return value when nothing blocks the ray is 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?
Three tight sentences front-loaded with the core question, then parameter semantics, then the blocking caveat and usage. 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?
For a two-param query tool with no output schema, the description covers inputs, the blocking rule, and the primary return. The only gap is the outcome when the ray is unobstructed, which is left to inference.
Complex tools with many parameters or behaviors need more documentation. 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: both parameters are explained as either a world point or an object name (bounding-box centre). The array shape for a world point is left implicit, but the semantic meaning is fully conveyed.
Input schemas describe structure but not intent. Descriptions should explain 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 predicate (visibility between `a` and `b`) with the resource form (world point or object name). It is clearly distinct from the map-level siblings (sightline_map, viewshed), though it never names them explicitly to sharpen 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?
'Use it for sight lines, cover and corridors' gives implied usage context, but there is no when-not guidance and no routing to alternatives like raycast or sightline_map despite the crowded sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bonesC
Bones of an armature with parent, world head and tail, length.
| Name | Required | Description | Default |
|---|---|---|---|
| armature | 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 never states that this is a non-mutating read, whether the armature must be posed/selected first, what happens if the name is invalid, or the ordering of results.
Agents need to know what a tool does to the 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 with no padding, but it is a sentence fragment with no verb, so the key action is not front-loaded. Efficiency comes at the cost of grammatical completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema and no annotations, the description is the only source of truth. Naming the returned fields (parent, world head/tail, length) is a genuine plus, but identifier format, ordering, and read-only behavior are all missing for a tool whose sole input is undocumented.
Complex tools with many parameters or behaviors need more documentation. 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 single parameter 'armature' is undocumented in the schema. The description implies the parameter identifies an armature but never says whether it is an object name, a UUID, or an index, so it only partially compensates for the coverage 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 fragment 'Bones of an armature with parent, world head and tail, length' identifies the resource (bones) and the scope (of an armature), and the name supplies the list verb. However it reads as a description of returned fields rather than a statement of what the tool does, leaving the action 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 indication of when to use this versus siblings like create_armature, bind, transfer_weights, or check_weights. The agent must infer from the name alone that this is a read/inspection step before posing or binding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lightsA
List every light in the scene: name, kind, place, aim (direction), power, colour and the kind's settings.
preset is true for the bl_light_* lights that setup_lighting makes. Remove lights with delete (names, prefix
or lights).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; it discloses the full field set returned and explains the `preset` flag's provenance (bl_light_* lights created by setup_lighting), which is real behavioral context. It does not state explicitly that the operation is non-mutating, though 'List' strongly implies it.
Agents need to know what a tool does to the 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 returned-field inventory before the preset note. The trailing sentence about removing lights is useful routing but slightly drifts from the tool's own behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema, the description compensates by enumerating the returned fields, and with no annotations it clarifies the preset semantics. Nothing essential for calling a zero-parameter listing tool is missing, though a note on ordering/scene scope would make it 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 tool takes zero parameters, so there is nothing for the description to document and the baseline is 4. The mention of 'names, prefix or lights' refers to the sibling delete tool's arguments rather than this tool's inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List every light in the scene') and enumerates exactly what is returned (name, kind, place, aim/direction, power, colour, kind settings, preset flag). This lets an agent separate it from add_light, setup_lighting, set_world and delete without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a read/inspect use case and points to `delete` (with names, prefix or lights) for removal, which gives one clear when-not signal. It never says when to prefer this over sibling inspectors like scene_tree or list_materials, so guidance is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsA
Every material: name, colour, number of users, whether it has a texture and which procedural nodes it has.
Procedural nodes (noise, gradients, math) are not exported to glTF: not_exported marks those materials.
faces_without_material counts, per object, the faces that sit in an empty slot or have no slot. Fix them with
assign_material_faces. Use it to find look-alikes before dedupe_materials.
With name the answer is the card of that one material: colour, roughness, metallic, alpha, emission, coat,
subsurface, the paths of its texture and maps (and the normal map colour space, which must be Non-Color),
procedural nodes, users and faces per object. alpha_mode is the glTF alphaMode that export_glb writes (OPAQUE,
BLEND or MASK); render_method is the EEVEE draw mode (DITHERED is the normal one for opaque).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: it explains that procedural nodes are not exported to glTF and are flagged `not_exported`, what faces_without_material counts, that alpha_mode mirrors glTF alphaMode written by export_glb, and that render_method is the EEVEE draw mode. It never explicitly states this is a read-only, side-effect-free call, which is the remaining 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?
Dense but largely front-loaded: the all-materials behavior leads, then the node/face caveats, then the single-material mode. Some sentences are long and pack field lists that read like schema rather than guidance, 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?
No output schema and no annotations, yet the description enumerates the return contents in both modes, which is the key thing an agent needs. Minor omissions remain (read-only status, whether users/faces counts could be expensive on large scenes), but overall adequate for a one-param read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter is nullable with no description, so the description must compensate — and it does, fully spelling out the two behavioral modes: without `name` returns every material's summary, with `name` returns that one material's detailed card including texture paths, normal map colour space, and per-object face counts.
Input schemas describe structure but not intent. Descriptions should explain 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 (list) and resource (materials) and immediately enumerates the returned fields, so the agent knows exactly what it gets. It implicitly separates itself from mutation siblings like set_material and assign_material_faces, though it never names them as alternatives for the read task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: use it to find look-alikes before dedupe_materials, and fix faces_without_material via assign_material_faces. It also explains the two invocation modes (no `name` = all materials, with `name` = one material's card). No explicit when-not-to-use, but routing is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loftA
Make a closed body from cross-sections you give as numbers along an axis. A section is {"at": [x,y,z], "size": [w,d], "roundness": 2}: roundness 2 is an ellipse, 4 is a rounded box. Sections go in order along the axis. Good for torsos, heads, bottles, columns. With a front and a side image of the form use loft_from_masks: it reads the sections from the images.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Z | |
| caps | No | ||
| name | Yes | ||
| sections | Yes | ||
| segments | No | ||
| subdivisions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It usefully discloses that sections are ordered along the axis, that roundness 2 = ellipse and 4 = rounded box, and implies closure — but it never explains the effect of segments, subdivisions, caps:false, or axis defaults, which are behaviorally significant for a generator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly four front-loaded sentences with no filler: the definition leads, the section grammar follows, then use cases and the alternative. Slightly dense inline JSON, but 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?
For a 6-parameter generator with no annotations and no output schema, the description covers the core section format well but omits the tiling/closure controls (caps, segments, subdivisions) an agent needs to call it correctly. Adequate but with a clear 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% across 6 parameters, so the description must compensate. It does an excellent job on 'sections' (at/size/roundness semantics), but leaves name, axis, caps, segments, and subdivisions completely undefined, so half the interface is 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: 'Make a closed body from cross-sections you give as numbers along an axis.' It defines the section object and names the sibling loft_from_masks as the distinct path, so an agent can separate it from lathe/sweep/revolve-style siblings 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?
Explicit routing: 'Good for torsos, heads, bottles, columns' gives the target use case, and 'With a front and a side image of the form use loft_from_masks' names the alternative and the condition that selects it. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loft_from_masksA
Build one rounded body from a front and a side silhouette image (with numbers instead of images use loft): per band the width comes from the front image and the depth and forward offset from the side image, so the cross-sections follow both outlines. part=largest uses the widest run in a band (the torso, not the arms); part=extent uses everything. side_faces says which way the figure looks in the side image (left matches the world: the front is -Y). z_range limits the height as fractions (0.0 to 0.5 builds the lower half). roundness 2 is an ellipse, 4 a rounded box. The body spans the full height (or z_range): the first and the last band end flat at their outer edge.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| name | Yes | ||
| part | No | largest | |
| side | Yes | ||
| bands | No | ||
| front | Yes | ||
| z_range | No | ||
| height_m | Yes | ||
| segments | No | ||
| roundness | No | ||
| threshold | No | ||
| side_faces | No | left | |
| subdivisions | No |
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 explains the core geometry behavior in detail: per-band cross-sections, part selection semantics, side_faces orientation, z_range fractions, roundness shapes, and flat end bands. However, it does not disclose side effects such as whether it creates a new object, replaces existing geometry, or what it 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?
The description is dense but front-loaded with purpose and core behavior. Every sentence adds useful technical detail, though the long single paragraph could be structured more readably with parameter-focused bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex: 13 parameters, no annotations, no output schema, and 0% schema description coverage. The description covers core geometry but omits return values and leaves many optional parameters unexplained, so an agent still has significant gaps 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% across 13 parameters, so the description must compensate. It meaningfully explains part, side_faces, z_range, and roundness, but leaves at, name, height_m, bands, segments, threshold, and subdivisions undocumented. For a 13-parameter tool with zero schema descriptions, this is only partial compensation.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Build one rounded body from a front and a side silhouette image.' It also distinguishes itself from the sibling tool loft by saying 'with numbers instead of images use loft.' An agent can tell exactly what this tool produces and when it applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 names the alternative tool for numeric input ('with numbers instead of images use loft'), which is a clear routing condition. It also clarifies key mode choices such as part=largest vs part=extent and side_faces orientation, giving the agent actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_cameraA
Find the camera that shows the model like a perspective photo of the real object (for flat orthographic
views use compare_view). It tunes position, rotation, roll and field of view until the model silhouette best
matches the reference silhouette. The camera camera is created or updated and becomes the scene camera. The
answer has location, rotation, look_at, fov_deg and the IoU before and after.
Give the whole original photo, not a crop: the picture frame is the camera frame. The outline comes from alpha
or from the corner colour (plain background); threshold is the colour distance.
Start: init {"location": [x,y,z], "look_at": [x,y,z], "fov_deg": 40}, else the active perspective camera,
else 8 azimuths at 2 elevations are tried. A close start gives a better result.
fov_deg fixes the angle across the LONGER image side: a known lens is far more reliable, because distance and
field of view trade off. ground_z keeps the camera above that height. size is the working resolution;
iterations is how many times the step is halved.
A silhouette does not tell front from back on a symmetric model: check with overlay_reference. Background job:
after wait seconds the answer is a job id for job_status.
| Name | Required | Description | Default |
|---|---|---|---|
| init | No | ||
| size | No | ||
| wait | No | ||
| names | No | ||
| camera | No | match_cam | |
| fov_deg | No | ||
| ground_z | No | ||
| reference | Yes | ||
| threshold | No | ||
| iterations | No | ||
| time_limit | No |
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 states the camera is created or updated and becomes the scene camera, lists the returned fields (location, rotation, look_at, fov_deg, IoU before/after), and discloses the async behavior (after `wait` seconds the result is a job id for job_status). The occlusion/alpha threshold behavior and the symmetric-model front/back caveat are also surfaced.
Agents need to know what a tool does to the 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 the alternative, then dense operational detail. Nearly every sentence earns its place, though the middle paragraphs are telegraphic and a few clauses (e.g. the fov_deg/distance trade-off) are terse enough to risk misreading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 11-parameter, long-running optimization tool with no annotations and no output schema, the description supplies return fields, init heuristics, resolution budget and job handling. Only the unmentioned time_limit and names parameters 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 coverage is 0% for 11 parameters, so the description must compensate and largely does: it explains init, reference ('give the whole original photo, not a crop'), fov_deg, ground_z, size, iterations, camera, wait and background-job semantics. It never explains time_limit or names, leaving two parameters 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?
Opens with a specific verb+resource ('Find the camera that shows the model like a perspective photo') and immediately names the sibling it is not for flat orthographic views (compare_view). The optimization goal — tuning position, rotation, roll and FOV to match the silhouette — 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 routes orthographic cases to compare_view and silhouette-ambiguity checks to overlay_reference, and specifies start conditions ('init' dict, else active perspective camera, else 8 azimuths x 2 elevations) plus when the call degrades to a background job. Named alternatives and conditions make the selection decision inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measureB
World-space size, min, max, center, origin position, origin inside the bounding box (0..1 per axis), rotation in degrees and scale. Notes say 'scale not applied' or 'negative scale'. Use it after every move. Use measure_profile to measure a reference image instead of an object.
| Name | Required | Description | Default |
|---|---|---|---|
| names | 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 discloses output-oriented behavior, including notes like 'scale not applied' or 'negative scale', but does not state that this is a read-only measurement operation, nor does it mention permissions, side effects, or mutation risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loads the returned metrics before usage guidance and the sibling alternative. It is compact and free of obvious filler, though the opening list is more output inventory than purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must cover both behavior and return values. It lists several return fields and usage context, but omits the required `names` input semantics and does not explain whether results are per object or how they are structured.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the sole required parameter `names`, and the description never mentions the parameter, its multiplicity, or what object names it expects. It does not compensate for the missing schema 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 enumerates the measured quantities (world-space size, min, max, center, origin position, rotation, scale) and explicitly distinguishes the tool from measure_profile. It implies measuring an object, but lacks an explicit verb+resource statement such as 'Measure one or more 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?
It gives clear context with 'Use it after every move' and names the alternative for reference images: measure_profile. It does not state when not to use this tool or any prerequisites, but the primary usage condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_profileA
Measure a silhouette in a reference image in metres (use measure for an object of the scene). The image
height is mapped to height_m. Returns, for
each horizontal band from the bottom: width, left and right edge from the centre, the separate runs (arms and
legs are separate runs) and the filled width. Use the numbers for loft sections, assert_spec checks or to find
where the model differs. The outline comes from alpha or from the corner colour (see prepare_reference).
grid=true also returns the reference with a metric grid (labels in millimetres, the same coordinates as the
bands: x from the centre of the silhouette box, z from its bottom), to read where parts and details are.
region [x0, z0, x1, z1] in metres zooms the grid picture into a part; grid_size is its long side in pixels;
out saves it to a file.
| Name | Required | Description | Default |
|---|---|---|---|
| out | No | ||
| grid | No | ||
| bands | No | ||
| region | No | ||
| height_m | Yes | ||
| grid_size | No | ||
| reference | Yes | ||
| threshold | No |
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 return structure (width, edges, runs, filled width per band), the height mapping, grid behavior with metric labels and coordinates, region zoom, and file output. However, it does not explain the threshold or bands parameters and gives no permission or rate-limit context (likely not applicable here).
Agents need to know what a tool does to the 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 dense but front-loaded with the core purpose and return details. It is appropriately sized for a complex measurement tool, though some clauses could be tightened and the line break after 'The image' is awkward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description must cover behavior and returns, which it largely does by explaining bands, coordinates, grid, region, and out. For a complex 8-parameter tool, the remaining gaps around threshold, bands, and reference format keep it from being fully complete, but the core invocation is clear.
Complex tools with many parameters or behaviors need more documentation. 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% for 8 parameters, so the description must compensate. It explains height_m, grid, region, grid_size, and out, but omits the meaning of bands, threshold, and the expected format of reference. The partial coverage is useful but leaves two numeric tuning parameters 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 ('Measure a silhouette in a reference image in metres') and explicitly distinguishes itself from the sibling tool 'measure' for objects of the scene. It also details what the measurement returns, so 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?
Explicitly names the alternative 'measure' and the condition that selects it ('use measure for an object of the scene'). It also gives concrete downstream uses ('loft sections, assert_spec checks or to find where the model differs'), so the agent knows 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.
mesh_infoA
Counts of vertices, edges and faces, and the faces grouped by direction (+X, -X, +Y, -Y, +Z, -Z, other) with
their area and the world range of their centres. Read it before you pick faces with where.
| Name | Required | Description | Default |
|---|---|---|---|
| object | 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 discloses the read-only, informational nature implicitly by describing counts and groupings, and adds a workflow hint (use before selecting faces). However it doesn't state return format, performance characteristics, or that it makes no modifications, which is relevant given zero annotation coverage. A 3 reflects adequate but incomplete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, then the actionable usage note. Efficient and no filler. The directional enumeration is slightly verbose but accurate 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?
No output schema and no annotations, so the description must convey returns and behavior. It does describe the shape of the output conceptually (counts, per-direction face groups with area and centre range), which is helpful. But it omits the `object` parameter semantics and does not clarify mutation safety. Adequate but with clear gaps for a zero-annotation 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% and there is one parameter (`object`). The description never explains the `object` parameter or its accepted values. The parameter is required, so this is a gap. Baseline for one undocumented param is around 3; the description adds context about what info is produced but not about the input.
Input schemas describe structure but not intent. Descriptions should explain 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 (counts) and resource (vertices, edges, faces and their directional grouping) with concrete detail about what is reported, including the six axis directions and area/centre range. It clearly distinguishes itself from siblings like check_mesh, inspect_glb and measure by being an information-gathering op. It doesn't differentiate from every sibling by name, but the content specificity is high.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Read it before you pick faces with `where`', which names a downstream workflow (select_faces / face selection by predicate) and positions this tool as a prerequisite. That's clear context for when to use it. It does not state when NOT to use it or name alternative info tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mirrorA
Make a mirrored copy of a mesh across the plane at at on the axis. Normals stay outward. The name swaps
L/R, Left/Right (arm_L becomes arm_R), or gets '_mirror'. The origin of the copy is the mirror image of the source
origin; the copy has no rotation and scale 1.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| axis | No | X | |
| name | Yes | ||
| new_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that normals stay outward, that the copy's origin is the mirror image of the source origin, and that the copy has no rotation and scale 1. It does not state whether the source mesh is retained or what happens on name collisions, but the disclosed traits are unusually rich 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?
Three tight sentences, front-loaded with the operation and plane, then the naming rule and the transform guarantees. Every clause carries information an agent needs; 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 4-parameter mutation tool with no annotations and no output schema, the description covers operation, orientation, naming, and resulting transform. Missing only the fate of the source mesh and any selection/permission prerequisites, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains `at` (plane position on the axis), `axis` implicitly via X/Y/Z plane, and the naming behavior tied to `name`/`new_name` (L/R swap, Left/Right swap, or '_mirror' suffix). It does not explicitly map the `new_name` parameter to the override case, leaving a small 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?
Specific verb+resource with scope: 'Make a mirrored copy of a mesh across the plane at `at` on the axis.' This clearly distinguishes it from siblings like duplicate and array by naming the mirroring operation and its plane/axis semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 — an agent can infer this is for producing symmetric copies — but there is no explicit when-to-use statement, no mention of alternatives such as `duplicate`, and no prerequisite information (e.g. whether the source must be selected).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_to_contactA
Move a (with children) until its surface touches the surface of to. Without axis it takes the shortest
way; with an axis it slides along that axis only, so other coordinates stay. depth sinks the part into the
target by that many metres to hide the seam: use 0.005..0.02 for limbs and necks. If the parts already
overlap nothing moves. The whole object moves, never only its end: for a long part that must stay put at the
other end, resize it with set_dimensions and anchor, or rebuild it with limb. Use attach to align by bounding
boxes, combine to merge meshes into one object.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| to | Yes | ||
| axis | No | ||
| depth | No |
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 children move with the object, that overlapping parts produce no movement, that the whole object moves rather than just one end, and gives a practical depth range (0.005..0.02 for limbs and necks). It stops short of stating coordinate space, failure behavior, or whether the move is undoable/recorded.
Agents need to know what a tool does to the 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 core action is front-loaded and every sentence carries information, but the passage is long and packs several conditional behaviors and alternatives into one dense block, which slightly reduces scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description covers semantics, side effects on children, no-op conditions, and alternatives. The main gap is return/confirmation behavior and any failure modes, which an agent might 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, and it does for all four parameters: `a` (object plus its children), `to` (the target whose surface is matched), `axis` (restricts sliding so other coordinates stay fixed), and `depth` (metres of sink with recommended values). This is far more than the bare schema conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Move `a` (with children) until its surface touches the surface of `to`') and precisely delimits the operation from neighbors like attach (bounding-box alignment) and combine (mesh merging). An agent can identify the tool's job without reading 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 conditional behavior for each parameter mode ('without axis it takes the shortest way; with an axis it slides along that axis only') and names concrete alternatives for cases it doesn't handle ('resize it with set_dimensions and anchor, or rebuild it with limb'). The no-op case (already overlapping) is also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
noise_displaceA
Move the vertices by fractal noise. Use it for bumps on a surface, worn stone, uneven ground.
amount is the largest shift in metres: no vertex moves further. scale is the size of the biggest bumps in metres
(smaller scale gives finer bumps). octaves 1 to 8 adds finer detail on top, each at half strength.
The same seed gives the same result. Another seed gives other bumps. The noise is sampled in world space.
mode: normal (along each vertex normal), z (up and down only, for ground), vector (any direction, rough lumps).
where picks faces like extrude_faces does (normal, x, y, z ranges, box, area, index); nothing outside is moved.
spread is a soft border in metres around the picked faces, shaped by falloff. Without where the whole mesh moves.
The mesh needs enough vertices to show the bumps: subdivide_faces or subdivide first.
Returns the largest shift that happened.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | normal | |
| seed | No | ||
| scale | No | ||
| where | No | ||
| amount | Yes | ||
| object | Yes | ||
| spread | No | ||
| falloff | No | smooth | |
| octaves | No |
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 explains that amount is the maximum shift in metres, that scale controls bump size, that seed is deterministic, that noise is sampled in world space, and that the return value is the largest shift that happened. It lacks explicit disclosure of whether the mesh is modified in place and whether changes are 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 purpose, then methodically covers parameters. Each sentence contributes useful information for a 9-parameter tool, though it is somewhat lengthy. No significant repetition or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with no annotations, no output schema, and 0% schema descriptions, the description is largely complete: it covers purpose, usage, parameters, prerequisites, and return value. Gaps remain around the required 'object' parameter and whether the operation is destructive in place.
Complex tools with many parameters or behaviors need more documentation. 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 clearly explains amount, scale, octaves, seed, mode, where, spread, and falloff behavior. It does not explicitly define the required 'object' parameter (name or ID) and only partially describes falloff enum options, but overall 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: 'Move the vertices by fractal noise.' The use cases ('bumps on a surface, worn stone, uneven ground') clarify intent. It does not explicitly distinguish from siblings such as deform or sculpt, so it falls short of 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?
Provides clear usage context (bumps, worn stone, uneven ground) and a prerequisite ('subdivide_faces or subdivide first'). Conditions like 'Without where the whole mesh moves' tell the agent when a parameter is optional. However, it does not state when to prefer this tool over alternatives like deform or sculpt.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overlay_referenceA
Draw the model and a reference picture on top of each other, seen through a scene camera: it shows how far
the camera and the model are from the photo. The model is rendered from camera (the scene camera when empty;
without one call set_camera or match_camera first) at the proportions of the reference; the long side is size
pixels. names is the model (everything visible when empty).
Modes: blend (the reference at alpha); edges (red reference outline, yellow reference inner edges, green model
outline over the dimmed model: best for small shifts); difference (black is a match); split (reference left of
a line at the split fraction of the width, model right: lines must continue across it).
The answer has the path, the silhouette IoU and the picture. The reference outline comes from alpha or the
corner colour; threshold is the colour distance. Give the original photo, not a crop.
grid_height_m (the real height of the reference silhouette) draws a metric grid with millimetre labels; zero
is the bottom centre of the silhouette box. It is true for a flat-on (orthographic) reference only. Before a
model exists, read coordinates with measure_profile grid=true.
| Name | Required | Description | Default |
|---|---|---|---|
| out | No | ||
| mode | No | blend | |
| size | No | ||
| alpha | No | ||
| names | No | ||
| split | No | ||
| camera | No | ||
| reference | Yes | ||
| threshold | No | ||
| grid_height_m | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it describes each mode's visual behavior, what the answer returns (path, silhouette IoU, picture), how the outline and threshold are derived, the orthographic-only caveat for grid_height_m, and the 'give the original photo, not a crop' constraint. This is unusually rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action before enumerating modes and parameters, and nearly every sentence adds information. Some parenthetical clauses and run-on sentences ('green model outline over the dimmed model: best for small shifts') make it dense and slightly hard to parse, 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 a 10-parameter tool with no annotations and no output schema, the description covers modes, prerequisites, return contents, and caveats well. The main gap is the unexplained `out` parameter; otherwise an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 parameters, so the description must compensate — and it explains mode, camera, size, names, alpha, split, threshold, grid_height_m, and the reference input. It omits any explanation of `out`, leaving one parameter 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 — drawing the model and reference picture overlaid through a scene camera — and even explains what the overlay reveals (camera/model distance from the photo). It is clearly distinguishable from rendering siblings, though it never names the nearest alternatives (compare_view, fit_to_reference) 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?
Gives prerequisites (call set_camera or match_camera first when no scene camera exists) and routes the agent elsewhere for a related need ('Before a model exists, read coordinates with measure_profile grid=true'). Mode selection guidance is included ('edges ... best for small shifts'), but there is no explicit when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paint_facesA
Paint vertex colour on the picked faces (see select_faces for where: normal, x/y/z ranges, box, area, index).
Colour is '#rrggbb' or [r,g,b]. For stylised models that use vertex colours instead of textures.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| where | No | ||
| object | Yes | ||
| attribute | No | Color |
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 essential behavioral trait that this writes vertex colour data and only on picked faces (implying a selection prerequisite), but says nothing about persistence, reversibility/undo, or what happens to existing vertex colours on those faces.
Agents need to know what a tool does to the 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 tight sentences, zero filler, with the core action and scope front-loaded before the format and use-case details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and no output schema, the description covers the action, the colour format, and the selector semantics, but omits the `attribute` parameter's meaning and any statement about whether painting is destructive or reversible.
Complex tools with many parameters or behaviors need more documentation. 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 well for `color` ('#rrggbb' or [r,g,b]) and `where` (delegating to select_faces and listing the selector kinds: normal, x/y/z ranges, box, area, index). `object` is self-evident, but `attribute` (default 'Color') is never explained — that is the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Paint vertex colour on the picked faces') with the scope qualifier that it operates only on already-selected faces, which distinguishes it from sibling select_faces (selection) and assign_material_faces (material-based colouring). An agent can tell what it 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?
Gives a clear context cue ('For stylised models that use vertex colours instead of textures') and routes the agent to select_faces for the `where` semantics, implying a prior selection step. It does not, however, explicitly name assign_material_faces or set_material as the alternative for textured models, so the routing is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
palette_uvB
Point the UVs of the picked faces at the centre of one cell of a palette texture, so the face takes that flat colour: cell [column, row] with row 0 at the top, grid [columns, rows]. For palette-atlas styles (one small colour grid image shared by all models).
| Name | Required | Description | Default |
|---|---|---|---|
| cell | Yes | ||
| grid | No | ||
| where | No | ||
| object | Yes | ||
| uv_layer | No | UVMap |
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 effect on UVs and the coordinate convention (row 0 at top), but says nothing about prerequisites (does a UV layer need to exist?), whether existing UVs are overwritten, or what happens when no faces are picked.
Agents need to know what a tool does to the 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 core action and effect; the trailing palette-atlas clause earns its place by scoping usage. Minor density in the cell/grid coordinate explanation 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?
For a 5-parameter, 0%-coverage tool with no annotations and no output schema, the description covers the two most important parameters well but leaves three undocumented, including the cryptic `where` filter. An agent can invoke it in the common case but may guess at the rest.
Complex tools with many parameters or behaviors need more documentation. 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 explains `cell` ([column, row], row 0 at top) and `grid` ([columns, rows]) meaningfully, but leaves `object`, `uv_layer`, and especially `where` (an opaque anyOf object/null) undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('point the UVs of the picked faces at the centre of one cell of a palette texture') plus the resulting effect ('the face takes that flat colour'). It implicitly separates itself from siblings like paint_faces and unwrap via the 'palette-atlas styles' framing, but never names an alternative 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?
It gives an implied use case — 'For palette-atlas styles (one small colour grid image shared by all models)' — which tells the agent the workflow context. There is no when-not guidance and no named alternative for other coloring approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parentC
Make child follow to. With keep_world the child stays where it is.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| child | Yes | ||
| keep_world | No |
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 what keep_world does to the child's position, which is real behavioral value, but says nothing about whether transforms are inherited, whether the operation is reversible, or what happens to the child's existing parent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and the optional flag explained second. Efficient, though arguably terse to the point of under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% parameter documentation, the description is too thin. It never explains the object-reference format or the reparenting side effects an agent needs to call 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 coverage is 0% for all three parameters. The description clarifies keep_world's semantics, but both required parameters (child and to) are left as bare names with no indication of whether they are object references, names, or IDs.
Input schemas describe structure but not intent. Descriptions should explain 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 conveys a parenting relationship ('make child follow to'), giving a verb and two resources. But 'follow' is a non-standard metaphor for what is presumably a parent/reparent operation, and it does nothing to distinguish this from siblings like attach, bind, or combine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the plausible alternatives (attach, bind, transfer_weights) among the sibling tools. The agent is left to 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.
path_carveA
Press a road, a ditch or a path into a terrain mesh along a polyline.
points are world [x, y] pairs (extra values are ignored); give at least two. width is the full width in metres of
the level floor. depth is how far the floor sinks, in metres (a negative value raises a bank).
falloff is the width in metres of the sloped edge on each side; default is half of width. 0 gives a hard edge.
The terrain needs a grid fine enough for the width: resolution of at most a third of width looks right.
Existing vertices move only down by depth times a weight, so the road follows the hills. Use this on a mesh from
the terrain tool.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | Yes | ||
| width | Yes | ||
| points | Yes | ||
| falloff | No | ||
| terrain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the deformation rule ('vertices move only down by depth times a weight, so the road follows the hills'), the effect of negative depth, and the hard-edge case for falloff=0. It does not state return values or any auth/permission context, so not 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-loads the action, then proceeds param-by-param with no filler; nearly every clause carries information. It is on the longer side but each 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?
For a five-param, no-annotation, no-output-schema tool, the description covers geometry semantics, the grid precondition, and the deformation behavior well. The main gap is the 'terrain' input reference and any notion of failure/edge cases, but the agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for four of five params: points format and minimum, width semantics ('full width of the level floor'), depth sign convention, and falloff default plus 0 behavior. The 'terrain' parameter's type/expected reference is only implied ('a mesh from the terrain tool').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('press ... into a terrain mesh') with the specific resource and mechanism ('along a polyline'), which clearly distinguishes it from siblings like terrain, sculpt, noise_displace, and subdivide. An agent can tell 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?
Ends with an explicit prerequisite ('Use this on a mesh from the terrain tool') and adds a grid-resolution rule of thumb ('resolution of at most a third of width'). It lacks explicit when-not-to-use or named alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pixel_to_worldA
Turn picture pixels into world points. A ray goes from the camera through each pixel and hits the plane z=plane_z
(the floor by default) or plane {"point": [x,y,z], "normal": [x,y,z]}. pixels is a list of [x, y]: x to the
right, y down, from the top left of a picture of image_size [width, height]. It uses the field of view, the sensor
fit, the lens shift and orthographic cameras. A point is null if the ray is parallel to the plane or the plane is
behind the camera. Use it to read sizes and positions off a photo after match_camera (for example the width of
something that stands on the floor). Heights above the plane cannot be read from one view.
| Name | Required | Description | Default |
|---|---|---|---|
| plane | No | ||
| camera | Yes | ||
| pixels | Yes | ||
| plane_z | No | ||
| image_size | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the exact failure semantics ('A point is null if the ray is parallel to the plane or the plane is behind the camera'), the default plane (the floor, z=0), that camera intrinsics — field of view, sensor fit, lens shift, orthographic — are honored, and a hard limitation on the reading of heights. That is genuine behavioral disclosure beyond anything in 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?
Front-loaded with the core action, then mechanism, parameter conventions, edge cases, and usage — a logical order with little waste. It is dense and multi-clause, and folding the parameter conventions into the same run-on paragraph makes it slightly harder to scan than a structured list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must stand alone, and it covers mechanism, parameters, edge-case nulls, usage and limits. The one remaining gap is the exact return shape — it implies a per-pixel list of points (some null) without saying so directly, and 'camera' is never defined.
Complex tools with many parameters or behaviors need more documentation. 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 the pixel coordinate convention (x right, y down, from top-left), the image_size [width, height] format, the plane_z default of floor, and the plane object shape {"point": [x,y,z], "normal": [x,y,z]}. Only the required 'camera' string parameter is left unexplained — it is inferable from the match_camera reference but its accepted form (name vs. handle) is never stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Turn picture pixels into world points') and immediately grounds it in mechanism (ray from camera through each pixel, intersecting a plane), which an agent can use to tell it apart from the superficially similar place_at_pixel. However, it never explicitly contrasts itself with that sibling, so it stops short of the top tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context ('Use it to read sizes and positions off a photo after match_camera, e.g. the width of something that stands on the floor') plus a when-not condition ('Heights above the plane cannot be read from one view'). It names a prerequisite sibling but not the alternative it should be chosen over, so no exclusion routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_at_pixelA
Move an object so that a point of its box lands where a picture pixel points. anchor is the point of the box
of the object with its children as fractions (0.5, 0.5, 0 is the middle of the bottom). pixel is [x, y] in a
picture of image_size [width, height], y down. With plane_z the ray from camera hits that horizontal plane.
Without it the ray stops on the first surface of the scene (the object itself is ignored) and, if there is none,
on the plane at the bottom height of the object. It only moves: size and rotation stay. Returns the description of
the object and what it was placed on. Use it to put parts where the photo shows them, after match_camera.
Without a photo use attach, move_to_contact or place_on.
| Name | Required | Description | Default |
|---|---|---|---|
| pixel | Yes | ||
| anchor | No | ||
| camera | Yes | ||
| object | Yes | ||
| plane_z | No | ||
| image_size | Yes |
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 does so well. It explains the raycast behavior with and without plane_z, states that only position changes while size and rotation stay, and describes what the tool 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?
The description is front-loaded with the core action and stays dense with useful detail. Despite its length, every sentence contributes to understanding how to call the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 six parameters, no schema descriptions, no annotations, and no output schema, the description provides complete-enough context. It covers parameter semantics, placement behavior, constraints, alternatives, and the return value.
Complex tools with many parameters or behaviors need more documentation. 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 define parameter meaning. It explains anchor fractions and the default, pixel coordinates, image_size dimensions, plane_z behavior, camera involvement, and the object being moved.
Input schemas describe structure but not intent. Descriptions should explain 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: move an object so a point of its box lands where a picture pixel points. It clearly distinguishes this from sibling tools by naming attach, move_to_contact, and place_on as alternatives when no photo is involved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 says to use this tool to put parts where the photo shows them, after match_camera. It also states when not to use it and names three alternative tools for the no-photo case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_onA
Drop an object (with children) onto a surface: its lowest point lands on the first hit under it (or under world xy
at). Use it for props on tables, floors with height changes, terrain. Use ground for a level floor at a known
height, attach to align by bounding boxes, scatter for many copies.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| object | Yes | ||
| surface | Yes | ||
| yaw_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden, and it does disclose the core mechanism (raycast-style drop, lowest point of object + children, first hit, world-xy fallback). It omits edge cases such as behavior when nothing is hit and whether the move is reversible, which for an unannotated mutation tool is a modest 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?
Three tight sentences: mechanism first, then use cases, then the alternative-selection routing. Every sentence earns its place with no repetition of 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 4-param, no-annotation, no-output-schema tool, the description covers behavior and sibling routing well. It leaves minor gaps around yaw_deg semantics and failure modes, but an agent can call it correctly from this text.
Complex tools with many parameters or behaviors need more documentation. 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 clarifies the `at` parameter's role (world xy fallback anchor) and implies what `surface` selects, but `yaw_deg` and the `object`/`surface` formats are never explained. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain 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 (drop/place) and resource (object with children onto a surface) plus the exact placement rule: lowest point lands on the first hit under it, or under world xy `at`. This is clearly distinguishable from siblings like ground, attach, and scatter, which are named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (props on tables, floors with height changes, terrain) and explicit alternatives with their distinguishing conditions: ground for level floors at known height, attach to align by bounding boxes, scatter for many copies. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poseA
Pose bones by numbers: {"bone": [rx, ry, rz]} in degrees (Euler XYZ, local to the bone), or {"bone": {"rot": [..], "loc": [..], "scale": [..]}}. reset=true clears all other bones first. An empty pose returns to rest. A bone along Z bends forward when rotated about X.
| Name | Required | Description | Default |
|---|---|---|---|
| pose | No | ||
| reset | No | ||
| armature | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the rotation convention (Euler XYZ, local to bone), the reset-clobbers-other-bones behavior, and the empty-pose-returns-to-rest semantics. Remaining gaps include error behavior for unknown bones and whether unspecified bones are preserved.
Agents need to know what a tool does to the 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 format definition and behavioral constraints are front-loaded and every sentence adds information with no filler. Sentence fragments are terse and slightly jargon-heavy but functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with no output schema and no annotations, the description covers the main input semantics and reset behavior well, but omits return values, the meaning of the armature argument, and failure modes for invalid bone names.
Complex tools with many parameters or behaviors need more documentation. 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 thoroughly documents the pose parameter with two concrete input shapes, units (degrees), and Euler convention. The armature parameter is left unexplained, but the complex parameter gets real semantic depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb (pose) and resource (bones) and immediately defines the numeric input format, so an agent knows exactly what the tool does. It does not, however, distinguish itself from near-neighbors like pose_sheet or bind, which an agent must infer from 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?
There is no explicit when-to-use or when-not-to-use guidance and no named alternatives; the agent is not told how this differs from pose_sheet, list_bones, or bind. Usage is only implied by the format explanation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pose_sheetA
One image with the mesh in several poses side by side, left to right in the order given: {"rest": {}, "walk": {"thigh_L": [30,0,0]}}. Use it to see joints bend, find tearing and collapsing, and compare with check_weights. The rest pose is restored afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| view | No | front | |
| poses | Yes | ||
| meshes | No | ||
| armature | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a key side effect: 'The rest pose is restored afterwards', which reassures the agent that the scene state is not left mutated. It also fixes the ordering semantics of the output. It does not describe the return format (file path vs inline image) or any cost/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?
Front-loaded with the output and format, followed by purpose and side effect; no filler sentences. The embedded JSON example is slightly dense inline but is genuinely load-bearing for the poses 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?
For a 5-parameter tool with a nested object, no annotations, and no output schema, the description covers the core behavior, the poses format, and state restoration, but omits the meaning of view/size/meshes and any description of what the returned image actually is. Adequate but with 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 coverage is 0% across 5 parameters, so the description must compensate; it does add critical meaning for the most complex parameter ('poses') via a concrete example, clarifying the otherwise opaque additionalProperties object. However, size, view, meshes, and armature receive no explanation at all, leaving half the interface 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 output ('one image with the mesh in several poses side by side, left to right in the order given') which cleanly distinguishes it from the single-pose 'pose' sibling and from view-oriented render tools. The inline poses example makes the resource and its semantics 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 concrete usage intent ('see joints bend, find tearing and collapsing') and names an alternative ('compare with check_weights'). It lacks explicit when-not guidance or a contrast with the sibling 'pose' tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_referenceA
Clean a real-world reference for the other reference tools: crop it, remove the background and keep only the
biggest object (a photo with two donuts and a caption becomes one donut with a transparent background). crop is
[x0, y0, x1, y1] as fractions of the image from the top left (one panel of a sheet of views). keep=all keeps every blob.
threshold is the colour distance from the background; leave it out and it is set just above the noise of the
picture border (the answer shows the value). The background must be plain.
fill_holes closes holes inside the object that are smaller than this share of the object area (glare on steel
that looks like background); bigger openings such as a trigger guard stay. 0 closes nothing, 1 closes all.
flip 'x' mirrors left-right, 'y' top-bottom; rotate turns clockwise by degrees (flip first).
Use them to bring a panel to the picture a view expects (see compare_view).
The result is an RGBA PNG cropped to the silhouette with pad margin; use its path as the reference of
compare_view, fit_to_reference, visual_hull, measure_profile. The answer has the hole count and hole area share
before and after filling, the blobs dropped, a warning (many open holes, the object touches the crop border, a
big part dropped) and a preview picture: the cut-out over magenta and the mask (white object, green filled
holes, red open holes). Look at the preview: alpha is not visible in the PNG itself.
| Name | Required | Description | Default |
|---|---|---|---|
| out | No | ||
| pad | No | ||
| crop | No | ||
| flip | No | ||
| keep | No | largest | |
| image | Yes | ||
| rotate | No | ||
| threshold | No | ||
| fill_holes | No |
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 and does well: it states the background must be plain, threshold is auto-set above border noise, fill_holes semantics, flip-before-rotate ordering, output format (RGBA PNG cropped to silhouette with pad margin), warning conditions, and preview contents. It does not clarify whether the original image is modified or whether writing to `out` overwrites files, leaving some side-effect detail 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 front-loaded with purpose and then systematically covers parameters, usage, and output. It is dense but most sentences carry useful detail for a complex image-processing tool; a few clauses could be tightened, but the length is largely justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must explain return values and behavior. It describes the answer fields (hole count/area before and after, dropped blobs, warning, preview) and preview colors, which is strong, but it omits the `out` parameter and some error/format conditions, so it is 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%, so the description must compensate, and it does for most parameters: crop fractions, keep=largest/all, threshold auto behavior, fill_holes closing semantics, flip axes, rotate direction and order, and pad margin. It does not explain the `out` parameter or the required `image` parameter, leaving two of nine parameters without added 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 states a specific verb and resource: clean a reference image by cropping, removing background, and keeping the biggest object. It explicitly distinguishes this preparation step from sibling tools by naming compare_view, fit_to_reference, visual_hull, and measure_profile as downstream consumers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explains when to use the tool: to bring a panel to the picture a view expects, and that its output path should be used as the reference for compare_view, fit_to_reference, visual_hull, and measure_profile. It does not state when not to use it or name alternative preparation tools, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
procedural_materialA
Give meshes a procedural node material for renders. It does NOT reach glTF: run bake_maps afterwards to turn
it into images. Kinds: wood (rings, fibres, knots), checker, diamond (knurled bump), bricks (with mortar), noise
(mottled), marble (veins), worn_metal (used steel: dirt in cavities, bright edges, scratches, rounded edges).
color_a is the main colour, color_b the second (dark grain, mortar, veins, dirt), both '#rrggbb'; each kind has
its own when empty. scale is the pattern frequency; seed shifts the pattern. roughness is 0-1; for
worn_metal it is the clean metal, dirt and scratches add to it.
Patterns lie on the UV map (a mesh without one is unwrapped with smart project and listed in unwrapped), so
their size follows the UV islands. worn_metal works in object space instead: no seams, sizes follow the object.
Its dirt, edge wear and rounding use ray-traced nodes: seen in cycles and bake_maps, not in eevee, and neighbour
objects darken the cavities, so build the model first.
params (optional): bump_strength; wood: grain_stretch (6), knots (true), distortion; marble: distortion;
bricks: mortar (0.03); noise: detail_scale; worn_metal: dirt (0.6), edge_wear (0.5), scratches (0.3), metallic
(1.0), and in metres bevel_radius, wear_width, ao_distance.
The same material name rebuilds it. Slot 0 of each mesh gets it. For a plain colour or image maps use
set_material.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| seed | No | ||
| names | Yes | ||
| scale | No | ||
| params | No | ||
| color_a | No | ||
| color_b | No | ||
| material | No | ||
| roughness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the glTF export limitation, the bake requirement, UV unwrap/smart-project side effect with an `unwrapped` list, object-space vs UV-space behavior for worn_metal, and the eevee vs cycles/bake rendering difference. It does not state permissions or performance/rate characteristics, but for a material-authoring tool that is a minor 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?
Front-loaded with purpose and the critical glTF/bake caveat, then organized by kind and parameter. It is long and dense, but nearly every clause carries functional information (defaults, space semantics, renderer caveats), so little 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 9-param, no-output-schema, no-annotation tool, the description covers the full calling contract: required fields, kind enum effects, optional params with defaults, UV vs object space, renderer support, the follow-up bake step, and the material/slot naming behavior. Nothing needed 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% across 9 params, so the description must compensate and does: it explains color_a/color_b roles per kind, scale as pattern frequency, seed as pattern shift, roughness semantics (and its special meaning for worn_metal), the full `params` sub-key list with defaults, and the `material` name-rebuild behavior plus slot 0 targeting.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Give meshes a procedural node material for renders', and immediately distinguishes itself from siblings by naming set_material (plain colour/image maps) and bake_maps (glTF path). The seven enumerated kinds further pin down the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when/when-not guidance: use this for procedural patterns, use set_material for plain colour or image maps, and it 'does NOT reach glTF: run bake_maps afterwards'. Also warns to build the model first for worn_metal because neighbour objects darken cavities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
radial_arrayA
Repeat an object around a world axis through center, over angle degrees (360 is a full circle), and merge the
copies. Wheels' spokes, columns in a ring, petals, gears.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Z | |
| name | No | ||
| angle | No | ||
| count | Yes | ||
| center | No | ||
| object | Yes | ||
| keep_source | No |
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 copies are merged and clarifies the angle semantic ('360 is a full circle'), but is silent on whether the source is preserved, what `keep_source` effects are, or anything about the resulting 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?
Two tight sentences: the mechanism is front-loaded and the use-case examples are relegated to the end. No wasted words and the angle default is clarified inline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description must cover the whole surface. It handles the core operation well but omits the meaning of keep_source/name and says nothing about the returned result, leaving gaps for a 7-parameter 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% across 7 params, so the description must compensate. It explains three key params (axis, center, angle with the 360 default nuance) but leaves count, object, name, and keep_source entirely 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+resource ('Repeat an object... and merge the copies') and captures the radial arrangement precisely. It implicitly distinguishes from a linear `array`/`mirror` sibling, though it never names them, so an agent must infer the distinction from the word 'radial' and the examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 trailing examples ('Wheels' spokes, columns in a ring, petals, gears') give concrete usage context, but there is no explicit when-to-use statement and no exclusion or routing to alternatives like `array`, `mirror`, or `scatter`, which are plausible confusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raycastA
Shoot one ray in world space. Returns the first object hit, the distance, the point and the surface normal. Use it to find floors, ceilings, wall thickness and free space.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | ||
| direction | Yes | ||
| max_distance | No |
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 states that the ray runs in world space and returns the first hit, distance, point, and normal, but omits critical behavior such as what happens on a miss, whether non-mesh objects are ignored, and how max_distance limits results.
Agents need to know what a tool does to the 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 tightly packed sentences with no filler. The core action and return payload are front-loaded, and the usage sentence follows immediately, so 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?
For a tool with no annotations, no output schema, and 0% schema description coverage, the description covers the return payload and use cases but leaves significant gaps: max_distance semantics, no-hit behavior, and parameter vector formats are all absent. An agent could call it, but with avoidable guesswork.
Complex tools with many parameters or behaviors need more documentation. 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. 'World space' clarifies the coordinate frame for origin and direction, but max_distance is never mentioned and no vector format or units are specified, leaving a required parameter and a key optional parameter unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Shoot one ray in world space') and describes what it returns, so the agent can distinguish it from general measurement or mapping tools. It does not explicitly name or contrast with siblings like line_of_sight, so sibling differentiation is only 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?
Provides explicit use cases ('find floors, ceilings, wall thickness and free space'), giving clear context for when to reach for this tool. It stops short of naming alternatives such as line_of_sight or viewshed, so the when-not condition is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipeA
Step-by-step recipe for a task: the tool calls in order, the numbers to check and the known traps.
Call it before a task of these kinds: a character from reference images, a hard-surface prop, a weapon or object
from an orthographic sheet, a scene from a perspective photo, a level blockout, materials and a final render,
export for a game. Without topic it lists the topics, one line each. With a topic it returns the universal rules
and that recipe. An unknown topic is an error that lists the topics. It works when Blender is closed.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses default behavior (no topic lists topics, one line each), topic behavior (returns universal rules plus the recipe), the error case (unknown topic errors and lists topics), and the notable state-independence fact that 'It works when Blender is closed.' It stops short of describing output format or lookup cost, keeping 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, then the trigger tasks, then output behavior. Dense but every sentence carries information; the ending 'It works when Blender is closed' is a slightly abrupt tack-on but still 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 one-parameter, output-schemaless documentation tool, the description covers what it returns, when to call it, parameter behavior including the null/error paths, and the offline constraint. Nothing an agent needs to call 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% (topic is an undescribed nullable string), so the description must compensate, and it does: it defines behavior when topic is omitted, when provided, and when invalid. It never enumerates valid topic values, which is the one gap keeping this from 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 deliverable: 'Step-by-step recipe for a task: the tool calls in order, the numbers to check and the known traps.' It is clearly a guidance/planning tool, which distinguishes it from every operational sibling (run_python, render_final, check_mesh, etc.). No ambiguity about what it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Call it before a task of these kinds' and enumerates the task families (character from reference images, hard-surface prop, weapon/object from orthographic sheet, scene from perspective photo, level blockout, materials/final render, game export). This is a strong when-to-use directive absent from its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remeshA
Rebuild the mesh as an even voxel surface: fuses overlapping parts into one skin and gives clean topology to sculpt. A smaller voxel_size means more detail and many more triangles. The old topology and UVs are lost. Use subdivide to round a mesh and keep its topology, subdivide_faces to add geometry to picked faces.
| Name | Required | Description | Default |
|---|---|---|---|
| object | Yes | ||
| voxel_size | No | ||
| smooth_shading | No |
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 destructiveness ('the old topology and UVs are lost') and a cost tradeoff (smaller voxel_size yields many more triangles). It does not mention permissions, whether the operation is reversible/undoable, or runtime cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then the cost note, then the destructive warning and sibling routing. 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 destructive mesh-rebuild tool with no annotations and no output schema, the description covers purpose, consequences, and alternatives adequately. Minor gaps remain around smooth_shading and whether the operation is undoable.
Complex tools with many parameters or behaviors need more documentation. 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% with 3 parameters, so the description must compensate. It explains voxel_size semantics well (detail vs. triangle count), but says nothing about the required 'object' parameter or what smooth_shading controls, leaving two of three params 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 ('rebuild the mesh as an even voxel surface') and elaborates the effect ('fuses overlapping parts into one skin'). It explicitly distinguishes itself from the sibling operations subdivide and subdivide_faces, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives (subdivide for rounding while keeping topology, subdivide_faces for adding geometry to picked faces) and the condition that selects each. It stops short of stating when remesh itself is the right choice (e.g. after boolean/combine or before sculpting), so it is clear but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_finalA
Render the scene to a file with its own lights, materials and camera, and show the picture. Needs a camera:
call set_camera first (or pass camera). For quick check pictures use render_sheet (overview) or render_view (any
angle, no set-up). path is absolute, or relative to the work folder; the folder is created.
engine: eevee (fast), cycles (slow, CPU, real light), workbench (flat preview, no lights needed).
size is pixels for a square, or [width, height]. samples is the quality: 16-64 for eevee, 32-256 for cycles.
transparent writes alpha (PNG, WEBP, TIFF, OPEN_EXR) and hides the world. denoise is for cycles only.
view_transform: Standard keeps colours true; Filmic, AgX or Khronos PBR Neutral if the Blender build has them.
exposure is in stops for this render only (+1 doubles the light); without it the scene exposure (set_post) is used.
auto_exposure=true first renders a small probe and picks the exposure that puts the median luminance of the
geometry at mid grey; the answer has auto_exposure. meter is a list of object names (with children) to
measure instead of all geometry: give the model, so a floor or backdrop does not steer the exposure.
Except for OPEN_EXR the answer has tone numbers of the written picture (0-1): frame and, when the geometry is
known (meter, auto_exposure or transparent), object: median, mean, clipped_highlights and crushed_blacks.
warnings appears when over 10% is clipped or over 50% is black. Read these numbers before you trust the
picture. The scene settings are restored afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| size | No | ||
| meter | No | ||
| camera | No | ||
| engine | No | eevee | |
| denoise | No | ||
| samples | No | ||
| exposure | No | ||
| file_format | No | PNG | |
| transparent | No | ||
| auto_exposure | No | ||
| view_transform | No | Standard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses rich behavior: engine tradeoffs, sample ranges, scene settings restored afterwards, transparent alpha behavior, warnings thresholds, probe exposure, and return tone numbers. It does not contradict any structured field.
Agents need to know what a tool does to the 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 core action and prerequisites are front-loaded, and most sentences carry needed parameter or behavioral detail. However, the description is dense and would benefit from clearer visual grouping or shorter paragraphs for such a long list of points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 12-parameter tool with no annotations and no output schema, the description is highly complete: it covers prerequisites, parameter behavior, return values, warnings, and image-quality caveats. The only minor omission is file_format nuance, which is unlikely to prevent 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 supply parameter meaning. It meaningfully explains engine, size, samples, transparent, denoise, view_transform, exposure, auto_exposure, meter, camera, and path, but it omits explicit guidance for file_format and defaults, leaving one gap in an otherwise strong semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain 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 scene to a file and show the picture. It distinguishes itself from render_sheet and render_view and notes the camera prerequisite, so an agent can identify its role 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 says when to use alternatives: quick check pictures should use render_sheet or render_view, and this tool needs set_camera first or a passed camera. This is direct when/when-not guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_sheetA
Overview: one image with several fixed views. The flat views are orthographic and share one scale. A grid
shows metres, coloured lines show the world axes (X red, Y green, Z blue). names limits the objects (with
children). color_by object gives every object its own colour and the answer has a legend of name to
'#rrggbb' (the lit picture is a little darker or lighter). Use render_view for one free angle, a close-up or a
check mode, render_final for the lit picture through the scene camera.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| names | No | ||
| views | No | ||
| color_by | No | material |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the orthographic/shared-scale rendering model, the grid units, the axis colour convention, and the output legend format ('name to #rrggbb') plus the caveat that the lit picture differs in brightness. It does not mention cost, time, or whether anything in the scene is mutated, which is a minor 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?
Front-loaded with an 'Overview:' summary and tightly organized around what the image contains, then sibling routing. Some sentences are run-on and the backtick-heavy syntax is slightly noisy, but there is little genuine 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 a 4-param render tool with no annotations and no output schema, the description covers the visual contract (views, scale, grid, axes, legend) and sibling choice well. It falls short only on the `size` parameter and the meaning of the `views` values, 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% across 4 params, so the description must compensate. It meaningfully explains `names` ('limits the objects (with children)') and `color_by` (object colouring plus legend), but says nothing about `size` and only obliquely implies the `views` enum through 'several fixed views'. Half the parameters remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('render_sheet' produces 'one image with several fixed views') and immediately characterizes the output: orthographic flat views sharing one scale, with a metre grid and coloured world axes. It also explicitly distinguishes itself from the two rendering siblings by naming 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?
Gives explicit routing: 'Use render_view for one free angle, a close-up or a check mode, render_final for the lit picture through the scene camera.' The agent knows exactly when to pick this tool over its two closest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_viewA
Check picture from any angle with its own camera and light. The camera frames the bounding volume of target
(with children; empty means everything), so a tall figure and a small bolt both fill the picture. Azimuth 0 looks
at the front (from -Y), 90 from +X, 180 from the back; elevation 0 is level, 90 is from above. fov 0 means
orthographic. isolate=false draws the whole scene but still frames target: use it for close-ups of joints in
context. Modes: solid (studio light, material colours), clay (one grey, shows form only), xray (see-through),
flat (material colours without light), wire (edges: topology, hidden parts; lines are about 2 pixels wide at the
centre of the frame at any zoom), ids (one flat colour per object, with a legend), normals (world normal as
colour), backfaces (red where you see the inside of a face: flipped normals, open shells). Use render_sheet for
the overview with a metre grid, render_final for the scene lights, materials and camera.
| Name | Required | Description | Default |
|---|---|---|---|
| fov | No | ||
| mode | No | solid | |
| name | No | view | |
| size | No | ||
| margin | No | ||
| target | No | ||
| azimuth | No | ||
| isolate | No | ||
| look_at | No | ||
| elevation | No |
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 lot: camera framing rules (bounding volume with children, empty=everything), azimuth/elevation conventions, fov 0 = orthographic, isolate semantics, and the visual result of all eight modes. What it omits is output behavior — where the image goes, the role of `name`, and whether anything is written to disk — which for a render tool is a real 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?
Front-loaded with the core idea (own camera and light, frames target's bounding volume) before conventions and modes. Dense with little filler, though the mode enumeration and the pixel-width remark on wire mode are lengthy enough that it reads more as a reference block than a tight 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?
For a 10-parameter render tool with no annotations and no output schema, the camera math and mode semantics are unusually complete. The remaining hole is the output artifact (file name, destination, format) which the agent needs to use the result of the render.
Complex tools with many parameters or behaviors need more documentation. 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 for target, azimuth, elevation, fov, isolate and every mode enum value. It leaves look_at, size, margin and name unexplained; size/margin are guessable but look_at is a meaningful camera parameter left undocumented, so it falls short of full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: render a picture of `target` from any angle using its own camera and light. It explicitly distinguishes itself from render_sheet (overview with metre grid) and render_final (scene lights/materials/camera), so an agent can pick the right render tool without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names both alternatives with the condition that selects each (render_sheet for grid overview, render_final for real lighting/materials). It also gives the when-to-use for isolate=false ('use it for close-ups of joints in context'), so the main branching decisions are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_meshA
Heal one mesh in place: merge doubled vertices (weld in metres; empty follows the size, 0.0001 m for 0.3 m
and more; 0 skips it), drop zero-area faces and edges (dissolve_degenerate), delete loose edges and vertices
(remove_loose), fill holes of up to hole_sides edges (0 means any size; fill_holes=false skips it), turn
normals outward, and remove material slots without a material (remove_empty_slots; their faces go to the first
slot left). The answer gives removed (doubled_vertices, zero_area_faces, loose_edges, loose_vertices,
empty_material_slots) and before and after counts: open_edges, non_manifold_edges (3 or more faces on one edge,
not repaired), doubles, zero_faces, junk_vertices. Run it before boolean on parts you cut or joined by hand.
| Name | Required | Description | Default |
|---|---|---|---|
| weld | No | ||
| object | Yes | ||
| fill_holes | No | ||
| hole_sides | No | ||
| remove_loose | No | ||
| recalc_normals | No | ||
| remove_empty_slots | No | ||
| dissolve_degenerate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses each repair operation, which parameters skip behavior, what happens to empty material slot faces, which defect types are not repaired ('non_manifold_edges ... not repaired'), and the exact shape of the returned removal/count 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 front-loaded with the core purpose and is information-dense without filler. However, it is a single long, clause-heavy sentence that could be easier to scan if broken into a list or shorter 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?
Given no output schema, no annotations, and 8 parameters, the description is complete enough for an agent: it explains the repair operations, parameter effects, return payload, and a concrete usage context. The only minor omission is an explicit description of the required object parameter, but the meaning is clear from 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 for nearly every parameter: weld scaling and zero/empty behavior, hole_sides meaning and 0 special case, fill_holes=false skipping, the effect of remove_empty_slots, and the boolean toggles for dissolve_degenerate and remove_loose. The required 'object' parameter is only implied by 'one mesh' rather than explicitly defined.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Heal one mesh in place,' followed by an explicit list of repair operations. It distinguishes itself from narrower siblings like weld and check_mesh by being a comprehensive, in-place mesh repair tool, and it even names a specific use case (before boolean).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 it: 'Run it before boolean on parts you cut or joined by hand.' It does not, however, name specific alternatives to use instead in other situations, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rockA
Make a closed rock mesh: an icosphere roughened by noise and squashed. Same seed, same rock.
radius is the half width in metres: the wider of the X and Y extents is 2 x radius.
roughness 0 to 1 is how far the shape departs from a ball. flatness 0 to below 1 squashes it down (0.5 is a flat boulder).
detail 1 to 5 is the subdivision: 1 gives 20 triangles, 2 gives 80, 3 gives 320, 4 gives 1280.
For a low-poly game use detail 1 or 2 with facets=true. facets=true shades each face flat (hard crystal look);
false shades smooth.
at is where the bottom centre of the rock sits in world space; the object origin is there, so the rock stands on the ground.
Vary seed, radius and flatness to make a set of different stones. The mesh passes check_mesh.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| name | Yes | ||
| seed | No | ||
| detail | No | ||
| facets | No | ||
| radius | No | ||
| flatness | No | ||
| roughness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses determinism ('Same seed, same rock'), that the mesh is closed, that it passes check_mesh, how facets change shading, and that the origin sits at the bottom centre so the rock stands on the ground. It omits cost/performance notes (e.g. triangle budget limits) and what the tool 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-loads the one-line purpose, then gives each parameter its own tight line, then closes with usage advice. 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 an 8-parameter generator with no annotations and no output schema, the description is nearly complete on inputs and behaviour. It stops short of describing the return value or any post-conditions beyond 'passes check_mesh', which is the one remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does: radius is defined as half-width with the 2x rule, roughness and flatness are given ranges plus behavioural meaning (0.5 = flat boulder), detail is mapped to actual triangle counts, facets explains flat vs smooth shading, at defines origin placement, and seed implies determinism. Only 'name' is left implicit, 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 and artifact ('Make a closed rock mesh') plus the exact construction method ('icosphere roughened by noise and squashed'), which cleanly separates it from siblings like create_primitive, blob, noise_displace and terrain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 selection guidance ('For a low-poly game use detail 1 or 2 with facets=true') and workflow advice ('Vary seed, radius and flatness to make a set of different stones'). It does not name an alternative tool or state when not to use this one, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollbackA
Return to a checkpoint of this file: everything done after it is lost. The open file becomes the checkpoint
copy: use Save As before you save. Without name nothing is rolled back: the answer lists the checkpoints of the
open file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the destructive data loss ('everything done after it is lost'), the side effect that the open file becomes the checkpoint copy, and the no-op behavior when `name` is omitted. It stops short of covering permissions or what exactly the returned checkpoint list looks 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?
Three sentences, all front-loaded with the destructive effect first, then the side-effect warning, then the default behavior. Every sentence adds information; phrasing is slightly dense but never padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with no annotations and no output schema, the description covers the destructive consequence, the file-state side effect, and the return content in the no-arg case. It is essentially complete; the only minor gap is what constitutes a valid checkpoint identifier.
Complex tools with many parameters or behaviors need more documentation. 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 single `name` parameter has no schema-level description, so the description must compensate and largely does: it defines both the supplied case (rollback to that checkpoint) and the omitted/null case (list checkpoints, no mutation). Only the expected string format/identifier convention for `name` is left unstated.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Return to a checkpoint of this file') and immediately scopes the effect ('everything done after it is lost'). It is clearly distinguishable from the creation-side sibling 'checkpoint', though it never names that sibling, so the differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two operating modes ('without `name` nothing is rolled back: the answer lists the checkpoints'), which is genuinely useful conditional guidance, and the Save As warning implies a save-flow precondition. However, it never states when to rollback versus alternatives like diff_since or run_spec, nor any hard prerequisite such as having a checkpoint to begin with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routeA
Shortest walkable route between two world points. Returns the length, the straight-line length, the narrowest
free width on the route with its position, the highest step and waypoints, plus an image. min_width forbids
narrower passages: use it to ask 'can a group or a wide vehicle go from A to B?'. If the points are in different
regions it says so and why.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| cell | No | ||
| names | No | ||
| start | Yes | ||
| max_step | No | ||
| min_width | No | ||
| agent_height | No | ||
| agent_radius | No | ||
| max_slope_deg | No |
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 enumerates the return payload (length, straight-line length, narrowest free width and position, highest step, waypoints, image) and discloses the cross-region failure behavior and its explanation. It omits cost/performance traits and whether the route search is complete, keeping 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 the return contract, then the min_width use case, then the failure mode. Four dense sentences with little waste, though the return-value enumeration is long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description usefully covers the return values and the cross-region failure case. However, eight of nine parameters remain opaque, and an agent cannot tell how cell, agent_height, agent_radius, or max_slope_deg affect routing without guessing.
Complex tools with many parameters or behaviors need more documentation. 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 9 parameters, so the description must compensate. It only explains min_width; cell, names, max_step, agent_height, agent_radius, max_slope_deg, start, and end are left with no meaning beyond their names, which is a substantial gap for a 9-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Shortest walkable route between two world points.' This is clearly distinguishable from siblings like walkable_map (a map, not a path), line_of_sight, and check_passages, which measure different 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?
Gives an explicit use case for the min_width parameter ('can a group or a wide vehicle go from A to B?'), which tells the agent when this tool is the right choice. It does not name alternative sibling tools or state when NOT to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pythonA
Run Python in Blender (bpy, bmesh, mathutils, Vector, np, math are ready). Returns stdout, and the added,
changed and removed objects with their world sizes, so silent mistakes show up. Prefer the other tools for
moving, sizing and checking. With session the variables, functions and imports stay between calls under that
name (reset=true clears them; rollback clears all sessions). paths are folders added to the import path:
keep your helper modules there and import them once.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| paths | No | ||
| reset | No | ||
| session | No |
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 substantial work: it discloses the return payload (stdout plus added/changed/removed objects with world sizes), the persistence model of `session`, the clearing effect of reset=true, the fact that rollback wipes all sessions, and how `paths` feeds the import path. It stops short of warning about the risks of arbitrary code execution (undo behavior, timeouts, failure/crash semantics), which is the one meaningful gap for a tool that runs unrestricted code.
Agents need to know what a tool does to the 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 tool's action and runtime, then return value, then routing advice, then parameter semantics. Every sentence carries information, though the parenthetical import list and the compressed session/rollback clauses are dense enough to read as crammed rather than crisp.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema and no annotations, the description correctly supplies the return shape and the session lifecycle, which are the two things an agent cannot infer from the input schema. It leaves execution limits, error behavior, and reversibility unstated, which matters for arbitrary code execution, but the core call-time information is present.
Complex tools with many parameters or behaviors need more documentation. 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 explains the three non-obvious parameters: `session` (namespace persistence between calls), `reset` (clears that session), and `paths` (folders added to import path, intended for helper modules). `code` is self-evident by name. Format-level detail for each parameter is thin, keeping it off 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 and resource ('Run Python in Blender') and names the exact runtime surface available (bpy, bmesh, mathutils, Vector, np, math). It further distinguishes itself from the large sibling set by saying 'Prefer the other tools for moving, sizing and checking', so an agent can place it as the escape-hatch tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing guidance: fall back to the dedicated scene tools for moving, sizing and checking rather than scripting those operations. It does not state when run_python is the right choice in positive terms beyond being the general fallback, and mentions no prerequisites, but the alternative-avoidance rule is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_specA
Run a stored spec (see save_spec) and return the assert_spec result. Without name nothing runs: the answer
lists the stored specs with their number of checks.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
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 a non-obvious behavioral trait: calling with no `name` is a no-op that instead returns a list of stored specs with their check counts. That is genuinely useful information beyond the schema. It does not cover failure behavior, side effects, or what happens to state on a run, leaving some 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?
Two tight sentences, front-loaded with the primary action and followed immediately by the edge case. No filler, and the parenthetical sibling reference is efficient routing 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 output schema and no annotations, the description does most of the necessary work: it names the return payload ('the assert_spec result') and the degenerate-case return. It assumes the agent already knows what an assert_spec result contains and what a 'spec' is, which is a minor completeness gap for a tool that produces verification output.
Complex tools with many parameters or behaviors need more documentation. 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 single parameter is just a nullable string, so the schema adds nothing. The description compensates by explaining the semantic effect of supplying versus omitting `name`, which is exactly the missing meaning. It still doesn't say what a valid spec name looks like or how names are discovered beyond the no-arg listing.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Run') plus resource ('a stored spec') and explicitly cross-references save_spec, making it distinguishable from the sibling that stores specs and the sibling that asserts them. An agent knows exactly what this 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 gives a clear invocation condition: 'Without `name` nothing runs: the answer lists the stored specs.' That tells the agent what to expect when omitting the optional parameter. It stops short of explicitly saying when to prefer run_spec over assert_spec, so it is not a full when/when-not routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_blendA
Save the scene to a .blend file. By default it saves a copy: the open file and its name stay as they were.
make_current=true makes the saved file the open one (like Save As). path is absolute or relative to the work
folder; .blend is added if missing. compress=true gives a smaller file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| compress | No | ||
| make_current | No |
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 substantial work: it discloses the copy-by-default semantics, the Save-As effect of make_current, path resolution relative to the work folder, automatic .blend extension, and compression. It does not say what happens if the target file already exists (overwrite/prompt), which is the main remaining gap for a write 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?
Four compact sentences, each adding distinct information, with the default behavior front-loaded before the override. No filler or 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?
For a 3-parameter write tool with no annotations and no output schema, the description is close to sufficient. The only material omission is the existing-file/overwrite behavior an agent would need before saving over a target.
Complex tools with many parameters or behaviors need more documentation. 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: path (absolute or relative to work folder, extension auto-added), make_current (Save As semantics), and compress (smaller file). Only the default values of compress=true and make_current=false are 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?
Opens with a specific verb+resource: 'Save the scene to a .blend file.' It is clearly distinguishable from siblings like export_glb (export) and save_spec (spec), and it names the artifact produced.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 default mode ('saves a copy: the open file and its name stay as they were') and when to deviate ('make_current=true ... like Save As'). No alternative tool is named and no explicit exclusions, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_specA
Store a list of assert_spec checks under a name inside the scene (it is saved with the .blend). Rerun it with run_spec after every change, in this or a later session.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| checks | 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 usefully discloses persistence ("saved with the .blend") and cross-session lifetime, plus the fact that saving alone does not execute the checks. However it omits overwrite semantics, permissions, and any return/confirmation behavior, which matter for a store operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded, and no filler. The second sentence is partly about the sibling run_spec rather than this tool, but it is relevant operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 persistence tool with no output schema, the description covers the essentials (what is stored, where, and how it is reused) but leaves collision/overwrite behavior and the return value unexplained, which is a meaningful gap for a save 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 coverage is 0% and both parameters are required. The description does clarify both: `name` is the key it is stored under and `checks` is a list of assert_spec checks (the schema only says generic objects). It still gives no detail on the expected shape of an individual check entry, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: storing a list of assert_spec checks under a name inside the scene. It names the related siblings (assert_spec as the check source, run_spec as the runner), so an agent can distinguish it from the many other tools in this namespace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 workflow guidance: save once, then rerun with run_spec after every change, and notes the checks survive into later sessions. It does not state when NOT to use it (e.g. name collision/overwrite handling or whether an existing spec is replaced), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scatterA
Place count copies of an object at random on top of surface objects, standing on the surface: trees, rocks,
crates, grass, sprinkles. source may be a list: each copy takes one at random and weights sets the odds.
area [x0,y0,x1,y1] limits where (default: the surface bounds); min_distance keeps copies apart; max_slope_deg
skips steep ground; align_to_normal tilts them with the ground; scale_range [min,max] and yaw_random vary them.
The same seed gives the same result. linked=true shares one mesh (cheap). The answer counts the copies per source
and why tries were rejected (too_close, not_on_surface, too_steep). For one object at a chosen spot use place_on.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| name | No | ||
| seed | No | ||
| count | Yes | ||
| linked | No | ||
| source | Yes | ||
| surface | Yes | ||
| weights | No | ||
| yaw_random | No | ||
| scale_range | No | ||
| min_distance | No | ||
| max_slope_deg | No | ||
| align_to_normal | No |
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 randomization behavior, seed reproducibility, linked mesh sharing, default area bounds, and rejection reasons (too_close, not_on_surface, too_steep). This gives the agent strong insight into how placement behaves and what the result reports.
Agents need to know what a tool does to the 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 dense but well-organized, front-loading the core purpose before parameter details and the alternative tool. Every sentence adds useful semantic or behavioral information for a 13-parameter tool, 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?
Given a complex 13-parameter tool with no annotations and no output schema, the description is unusually complete. It covers purpose, parameter meanings, return summary, seed behavior, and the relevant alternative tool. The only minor gap is the undescribed name parameter.
Complex tools with many parameters or behaviors need more documentation. 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 for almost every parameter. It defines area format and default, min_distance, max_slope_deg, align_to_normal, scale_range, yaw_random, source list behavior, weights, seed, linked, and implied count. Only the optional name parameter is not explicitly described, which is a minor omission.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Place') and resource ('copies of an object at random on top of surface objects'), with concrete examples. It clearly distinguishes random scattering from the single-object placement handled by place_on. 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?
Explicitly routes the single-object-at-a-chosen-spot case to place_on, and the examples imply use for random scattering. It does not explicitly contrast with deterministic placement tools like array or radial_array, though the random-placement purpose makes the distinction inferable. Clear context, but not a full when/when-not comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scene_treeB
Every object with type, collection, parent (by indent), world size, world minimum corner and triangle count.
Shows the first limit objects.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
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 and the truncation behavior ('Shows the first `limit` objects'), which is useful, but it says nothing about ordering, whether it covers the entire scene, or the read-only nature of the call.
Agents need to know what a tool does to the 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 compact sentences with no filler, and the field list is front-loaded. It is efficient, though the dense noun-phrase field list would read better with an explicit lead verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema, no annotations, and one parameter, the description does list the returned fields, which partly compensates. However it omits ordering/traversal semantics and any context for when this listing is the right tool, leaving the definition 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?
The single `limit` parameter has 0% schema coverage, so the description must compensate. 'Shows the first `limit` objects' explains that limit truncates the listing to the first N objects, which adds real meaning beyond the bare integer type and default.
Input schemas describe structure but not intent. Descriptions should explain 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 enumerates the fields returned (type, collection, parent, size, triangle count) which implies a scene-hierarchy listing, but never states the action with a verb and does not distinguish this from siblings like mesh_info, measure, or list_materials. The reader must infer that this dumps the whole scene tree rather than inspecting one object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives. With many inspection siblings (mesh_info, measure, list_bones, list_materials, check_mesh), the description gives no signal for choosing scene_tree over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sculptA
Sculpt by numbers: move the vertices under a brush. Brush: either at + radius (a sphere in the world,
strongest at the centre), or where (+ mode) with spread, the number of metres around the region that still
feel the brush; falloff shapes the fade. The mesh needs enough vertices: subdivide_faces first.
op grab: pull the surface by the world vector move.
op inflate: push it out (or in, negative) along its normals by amount metres.
op smooth: relax it towards the average of the neighbours, iterations times by factor; with no brush it
smooths the whole mesh; keep_boundary leaves open edges in place. For shading only use shade.
op flatten: press the area onto its own average plane; strength 1 (default) is fully flat. Soles, table tops.
op pinch: draw the area towards its centre in the surface plane (sharpens creases, narrows a part); strength
1 collapses it, default 0.5.
Parameters of another op are ignored. The answer has vertices_moved.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| op | Yes | ||
| mode | No | faces | |
| move | No | ||
| where | No | ||
| amount | No | ||
| factor | No | ||
| object | Yes | ||
| radius | No | ||
| spread | No | ||
| falloff | No | smooth | |
| strength | No | ||
| iterations | No | ||
| keep_boundary | No |
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 effects of each op, brush semantics, that parameters of another op are ignored, and that the answer contains vertices_moved. It does not explicitly state whether operations are destructive/undoable or what permissions are required, which leaves some behavioral gaps for a 14-parameter 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 dense but well-structured: front-loaded purpose, then brush mechanics, then each op in sequence. It is appropriately sized for a complex sculpting tool, though the parenthetical style and run-on sentences make it slightly harder to scan than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, 14 parameters, and 0% schema coverage, the description is nearly complete: it covers operations, prerequisites, selection conditions, and the return value. It omits explicit definition of the required 'object' parameter and does not discuss reversibility or permissions, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does. It explains op semantics, brush parameters (at, radius, where, spread, falloff), op-specific parameters (move, amount, factor, iterations, keep_boundary, strength), and complex where-condition keys. Only the required 'object' parameter is not explicitly defined, which is a minor gap against 14 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Sculpt by numbers: move the vertices under a brush.' It distinguishes itself from siblings by naming prerequisites (subdivide_faces) and an alternative for shading (shade). An agent can tell it apart from deform, transform_region, and shade without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: mesh must have enough vertices, subdivide_faces first, look at mesh_info first, and use shade for shading only. It does not explicitly state when not to use sculpt versus other deformation tools like deform or transform_region, but the operational guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_facesA
Preview a face selection without changing anything: how many faces, their area, the world range of their
centres and the first indices.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| where | No | ||
| object | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares the operation is non-mutating and enumerates exactly what is returned. It does not discuss limits or performance on large meshes, but the read-only semantics and output shape are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the preview purpose, then a dense but well-organized enumeration of filter keys, ending with the mesh_info pointer. Every sentence earns its place, though the key listing is packed tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description enumerates the return contents; no annotations, but read-only behavior is stated. For a two-parameter selection-preview tool, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does thoroughly: it defines every `where` key (normal with angle, x/y/z ranges with null-as-open, box, area, index) plus the empty-object/null default. This is meaning far beyond the bare `additionalProperties: true` 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?
Specific verb+resource ('Preview a face selection') with explicit scope ('without changing anything') and even names the returned quantities (count, area, world range, first indices). An agent can distinguish this from siblings like delete_faces or extrude_faces, which act on selections rather than previewing 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?
Gives a clear prerequisite ('Look at mesh_info first to see where the faces are') and states the default behavior ('{} or null picks everything'), which tells the agent when the filter can be omitted. It does not explicitly name an alternative tool for actually mutating the selection, but the preview-vs-act distinction is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cameraA
Create or update a camera for render_final. Place it one of two ways.
Explicit: location and look_at in world metres; on an existing camera, one of them keeps the other.
Framed: frame is a list of object names (with children); the camera stands so their box fits the view.
azimuth (degrees around Z: 0 looks from the front at -Y, 90 from +X; 35 when empty) and elevation (above
the horizon; 20 when empty) set the side; margin is spare room (1.15 = 15%); look_at overrides the aim point.
fov_deg is the vertical field of view and is applied on every call, so repeat it on updates. fov_deg=0 or an
ortho_scale (metres across) makes it orthographic. roll_deg rolls about the view axis. make_active sets the
scene camera. Returns the location, the forward vector and the projection. For a camera that matches a photo
use match_camera.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | camera | |
| frame | No | ||
| margin | No | ||
| azimuth | No | ||
| fov_deg | No | ||
| look_at | No | ||
| location | No | ||
| roll_deg | No | ||
| elevation | No | ||
| make_active | No | ||
| ortho_scale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it warns that fov_deg is applied on every call so must be repeated on updates, notes look_at overrides the aim point, states make_active sets the scene camera, and documents the return payload (location, forward vector, projection).
Agents need to know what a tool does to the 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 and the two placement modes, and every sentence conveys a distinct rule. It is dense and somewhat long, but there is little pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 11-parameter mutation tool with no annotations and no output schema, the description covers placement logic, defaults, side effects, output, and the sibling alternative. Nothing essential for correct invocation appears 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 11 params, so the description must compensate and largely does: it defines location/look_at semantics, frame, azimuth degrees with the empty default (35), elevation (20), margin (1.15 = 15%), fov_deg/ortho_scale orthographic behavior, roll_deg, and make_active.
Input schemas describe structure but not intent. Descriptions should explain 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 or update a camera') and ties it to a downstream purpose ('for render_final'). It also distinguishes itself from the sibling match_camera at the end, so an agent can route correctly 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?
Explains the two placement modes (explicit vs framed) and when each applies, and explicitly routes to match_camera 'for a camera that matches a photo.' It lacks explicit when-not conditions relative to other scene/view tools, but the 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_dimensionsA
Set the size in metres. Empty axes stay. With uniform=true the first given axis sets a factor for all axes.
The anchor point of the bounding box (fractions 0..1) stays where it is; (0.5,0.5,0) keeps the bottom.
With apply=true the scale is baked into the mesh, so the object keeps scale 1 and exports cleanly.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| name | Yes | ||
| apply | No | ||
| anchor | No | ||
| uniform | No |
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 does well: it explains that empty axes stay, uniform uses the first given axis as a factor, the anchor point remains fixed, and apply bakes scale so the object keeps scale 1 and exports cleanly. It still omits permissions, reversibility, and hierarchy effects, so it is 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 front-loaded with purpose and then uses compact sentences to cover the key behaviors. Every sentence adds useful information, with no filler 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 7-parameter mutation tool with no annotations and no output schema, the description is largely complete: it covers most parameter semantics and the side effect of baking scale. It does not explain the required name target or return behavior, leaving a notable but not severe 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 explains x/y/z handling, uniform, anchor with default logic and an example, and apply. The required name parameter remains unexplained, preventing 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?
The description states a specific verb and resource: 'Set the size in metres.' This is clear and actionable, but it does not distinguish the tool from siblings such as transform_objects 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?
Usage is implied through the resize operation and parameter behaviors like uniform and apply, but there is no explicit when-to-use guidance or comparison against alternatives such as transform_objects or measure. A 3 reflects minimum viable implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_materialA
Give meshes a material (Principled BSDF, exports to glTF). The quick form is names and color: '#rrggbb' or
[r, g, b] in 0..1. Without material the name comes from the numbers, so equal parameters reuse one material
(fewer draw calls); an existing name is rebuilt. Slot 0 gets it: use assign_material_faces for parts of a mesh.
alpha below 1 is glTF BLEND: glass only, transparent faces cost sorting. emission is {"color": "#ffcc66",
"strength": 2.0}. coat is a clear layer. subsurface does not reach glTF.
Image paths (the meshes need a UV map: unwrap or palette_uv first): texture (base colour; color then tints
it, '#ffffff' keeps it; alpha multiplies its alpha), normal_map (tangent space), roughness_map and metallic_map
(grey), or orm_map instead of those two (R occlusion, G roughness, B metallic). A map replaces its number.
bump {"scale": 20, "strength": 0.3} is a procedural noise for renders only: bake_maps turns it into a normal map.
The answer has gltf: alphaMode, the factors and the texture slots that will be written. For patterns (wood,
bricks, worn metal) use procedural_material.
| Name | Required | Description | Default |
|---|---|---|---|
| bump | No | ||
| coat | No | ||
| alpha | No | ||
| color | Yes | ||
| names | Yes | ||
| orm_map | No | ||
| texture | No | ||
| emission | No | ||
| material | No | ||
| metallic | No | ||
| roughness | No | ||
| normal_map | No | ||
| subsurface | No | ||
| metallic_map | No | ||
| roughness_map | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses extensive behavior: material reuse and rebuilding ('equal parameters reuse one material... an existing name is rebuilt'), slot assignment ('Slot 0 gets it'), glTF export implications for alpha and subsurface, map channel packing for orm_map, render-only behavior of bump with bake_maps, and the response shape ('The answer has gltf: alphaMode...').
Agents need to know what a tool does to the 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 and quick form, and every sentence adds needed information for a 15-parameter tool with no schema descriptions. However, the dense parenthetical style and run-on parameter explanations reduce scannability compared to a more structured presentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters, 0% schema description coverage, no annotations, and no output schema, the description is complete enough: it covers prerequisites, alternatives, export behavior, behavioral side effects, parameter semantics, and the return values described as a gltf object. Nothing critical an agent needs to call the tool 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 does so thoroughly. It explains accepted formats for names/color, the optional material name override, alpha glTF BLEND semantics, emission object format, coat and subsurface export behavior, texture tinting and alpha multiplication, normal_map tangent space, roughness/metallic map channels, orm_map packing, and bump scale/strength. The only lightly covered parameters, metallic and roughness, are still contextualized through 'A map replaces its number.'
Input schemas describe structure but not intent. Descriptions should explain 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: 'Give meshes a material (Principled BSDF, exports to glTF).' It clearly distinguishes this tool from siblings by naming assign_material_faces for parts of a mesh and procedural_material for patterns, so 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?
It gives explicit alternatives and conditions: 'use assign_material_faces for parts of a mesh' and 'For patterns (wood, bricks, worn metal) use procedural_material.' It also states prerequisites for texture maps: 'the meshes need a UV map: unwrap or palette_uv first,' and explains when alpha below 1 is appropriate (glass only) versus costly transparent faces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_originA
Move the origin of each object without moving its geometry or its children in the world. Give either at (one
world point for all) or anchor (fractions of the world box of each object, without children: (0.5, 0.5, 0) is the
bottom centre, (0.5, 0.5, 0.5) the centre). Use it for pivots: a hinge axis, the base of a prop, the grip of a
weapon. Mesh data shared with other objects becomes a private copy.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| names | Yes | ||
| anchor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses important behavior: geometry and children do not move, and shared mesh data becomes a private copy. It does not cover return values, undo behavior, or error cases, but the key side effect is surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then parameter semantics, then use cases and the copy-on-write caveat. Every sentence adds value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers behavior, both optional parameters, use cases, and a side effect. It does not address what happens if both `at` and `anchor` are supplied or clarify the required `names` parameter, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clearly explains `at` (one world point for all) and `anchor` (fractions of the world box, with concrete examples like (0.5, 0.5, 0) as bottom centre). The `names` parameter is only implied, not explicitly described, which keeps this from 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?
The description states a specific verb and resource: 'Move the origin of each object without moving its geometry or its children in the world.' This clearly differentiates it from siblings like transform_objects or apply_transforms, which move geometry rather than repivot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 concrete usage context ('Use it for pivots: a hinge axis, the base of a prop, the grip of a weapon') and explains the two mutually exclusive parameter strategies. It does not name alternative tools or state when not to use it, but the guidance is clear enough to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_postA
Set post-processing for render_final: vignette, glare, colour, exposure, contrast. It builds a compositor tree,
works with every engine and is not shown in the viewport. A call changes only what you pass and keeps the rest.
Pass false to switch one effect off (vignette=false); reset=true removes everything this tool set.
vignette {"strength": 0-1 (how dark the corners get), "softness": 0-1 (how far in the fade starts)}; both
start at 0.5. The darkening is an ellipse that follows the picture shape.
glare {"type": "bloom" | "fog_glow" | "streaks", "threshold": 1.0 (how bright a pixel must be to glow; lower
= more glow), "size": 1-9 (8 when empty)}. It needs pixels above 1: strong lights or emission.
color {"saturation": 1.0 (0 = grey), "gamma": 1.0 (above 1 brightens the mid-tones)}.
exposure is in stops (+1 doubles the light). contrast is -1 to 1.
It refuses to replace a compositor tree it did not make. Returns the active settings.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| glare | No | ||
| reset | No | ||
| contrast | No | ||
| exposure | No | ||
| vignette | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden and does so well: it builds a compositor tree, refuses to replace a tree it did not create, applies partial updates, and returns the active settings. Mutation, idempotence-adjacent semantics and a failure/refusal condition are all disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by per-effect parameter blocks that are dense but each carry needed detail; no filler sentences. It is long and backtick-heavy, but for a 6-parameter tool with zero schema documentation the length is largely earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description closes that gap by stating it returns the active settings. Combined with engine compatibility, viewport invisibility and the tree-ownership refusal, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage this description does the heavy lifting: ranges, defaults and meanings for vignette.strength/softness, glare.type enum values, threshold, size, saturation, gamma, exposure in stops, and contrast bounds. Minor mismatch: it says vignette=false disables an effect, but the schema types those params as object|null only, leaving a small ambiguity about how 'off' is expressed.
Input schemas describe structure but not intent. Descriptions should explain 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 post-processing for render_final') and enumerates exactly which effects it controls (vignette, glare, colour, exposure, contrast). An agent can distinguish it from render_final and the many mesh/material siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong operating context: it works with every engine, is not shown in the viewport, partial calls change only what you pass, false disables a single effect, and reset=true wipes everything the tool set. It does not explicitly state when to use it relative to render_final or alternatives, 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.
setup_lightingA
Replace the studio lights with a preset. Lights are named bl_light_*; earlier ones are deleted first,
so a second call never doubles them. Other lights in the scene are not touched.
Presets: three_point (key, fill, rim), sun (one hard sun), soft_studio (large soft panels, even light),
night (dim blue moon and a warm lamp), metal (for metal and glossy product shots: an interior HDRI that the surface
reflects, a key spot and a rim spot). strength scales all of them (1 is a normal exposure).
metal also replaces the world: set_world hdri='interior' at strength 0.6, hidden from the camera, so the backdrop keeps the colour it had.
The answer has it under world; call set_world afterwards for another HDRI, rotation or backdrop. The other presets
do not touch the world: with area lights only, metal has nothing to reflect and renders black or blown.
target is a list of object names; light size and distance follow their box (default: all visible geometry).
The key light stands front-right (azimuth 40) so it suits the default set_camera view.
color tints the lights: '#rrggbb' or [r, g, b] (0-1). Pair it with set_world for the background.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| preset | No | three_point | |
| target | No | ||
| strength | No |
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 does so well: it discloses the deletion of prior bl_light_* lights and resulting idempotency ('a second call never doubles them'), that other lights are untouched, that metal alone mutates the world and other presets leave it untouched (with the render consequence), and that strength scales globally. This is unusually complete side-effect 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?
Purpose is front-loaded and every sentence carries information, but the text is dense and there is mild redundancy around set_world ('call set_world afterwards...' and 'Pair it with set_world for the background'). Slightly more verbose than necessary, though nothing is wasted outright.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and 0% schema description coverage, the description fills every gap: purpose, side effects, world mutation, parameter formats, and follow-up calls. It even notes where the world result appears in the answer.
Complex tools with many parameters or behaviors need more documentation. 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 for all four parameters: strength (1 = normal exposure), target (object names, light size/distance follow their bounding box, default all visible geometry), color (format '#rrggbb' or [r,g,b] 0-1), and preset (each of the five enum values explained). Nothing an agent needs to pass is left 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 and resource ('Replace the studio lights with a preset') and immediately scopes it against the sibling tools: lights are named bl_light_*, prior ones are deleted first, and other scene lights are untouched (distinguishing it from add_light). An agent can tell exactly what it 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?
Gives strong context for preset selection (three_point for default set_camera view, metal for glossy product shots, etc.) and explicitly instructs to call set_world afterwards for world changes. It does not name add_light or list_lights as alternatives or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_worldA
Set the background and ambient light: a plain colour or an HDRI image. color is '#rrggbb' or [r, g, b] (0-1).
An explicit color wins over the preset colour.
strength multiplies the light (1 is normal). With neither colour, preset nor hdri only the strength changes.
hdri lights the scene with an image and gives metal and glass something to reflect. It is a path to an .hdr or .exr
file, or the name of a studio light shipped with Blender: city, courtyard, forest, interior, night, studio, sunrise, sunset
(the answer lists them in builtin_hdris; an unknown name gives the list in the error). rotation_deg turns it about Z.
visible_to_camera=false keeps the HDRI for light and reflections, and the camera sees the plain color or preset
colour instead (without them: the colour the world had). Works in eevee and cycles.
A later call without hdri and with a colour or preset makes the world a plain colour again.
transparent=true makes the render background transparent (alpha 0) and the world only lights the scene.
The flag stays on until set_world is called again with transparent=false.
| Name | Required | Description | Default |
|---|---|---|---|
| hdri | No | ||
| color | No | ||
| preset | No | ||
| strength | No | ||
| transparent | No | ||
| rotation_deg | No | ||
| visible_to_camera | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses error behaviour for unknown HDRI names, renderer support (eevee and cycles), the persistence of the transparent flag across calls, and that visible_to_camera=false keeps HDRI for lighting/reflection while the camera sees the plain colour. This is exactly the kind of state and side-effect disclosure a mutation tool 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?
Dense but front-loaded: it opens with the core operation and then explains precedence, HDRI specifics, and flags in order of importance. Every sentence carries information, though the multi-clause final lines about transparent and visible_to_camera could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no annotations, no param descriptions and no output schema, the description supplies everything an agent needs: value formats, precedence, state persistence, error behaviour and renderer compatibility. Nothing material 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 every parameter: color's '#rrggbb' or [r,g,b] (0-1) form, preset, strength as a multiplier, hdri as path or builtin name, rotation_deg as a Z turn, visible_to_camera, and transparent. No parameter is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the background and ambient light') with the two concrete modes (plain colour vs HDRI image), which cleanly separates it from sibling lighting tools like add_light, set_material and setup_lighting. An agent can tell what this mutates 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 precedence rules ('An explicit color wins over the preset colour'; 'With neither colour, preset nor hdri only the strength changes') and reset semantics ('A later call without hdri and with a colour or preset makes the world a plain colour again'). It does not explicitly route the agent away from alternatives such as add_light or setup_lighting, 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.
shadeA
Set shading of meshes. smooth: every face and edge smooth. flat: every face flat. auto: smooth faces, but edges
sharper than angle degrees stay sharp (a cube stays crisp, a sphere becomes smooth). Cheap and exports as is.
weighted_normals=true (with smooth or auto) adds a Weighted Normal modifier that keeps sharp edges: large flat faces
stay flat and only the bevels blend. Use it for parts with both bevels and flat chamfers, where no single angle
works. export_glb writes these normals while apply_modifiers is true. A later shade call without it removes it.
It changes normals only: to move vertices use sculpt with op smooth.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | smooth | |
| angle | No | ||
| names | Yes | ||
| weighted_normals | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses cost ('cheap'), export interaction ('export_glb writes these normals while apply_modifiers is true'), modifier lifecycle ('a later shade call without it removes it'), and scope of change ('it changes normals only'). These are exactly the non-obvious behaviors an agent needs before invoking 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 mode semantics, and the sentences about modifier lifecycle and export behavior each add distinct value. It is dense and slightly long, but almost no sentence is expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must stand alone, and it covers modes, modifier behavior, and export interaction thoroughly. Minor gap: it does not say what 'names' refers to (objects vs mesh datablocks) or whether a selection is required, but that is small for a shading 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 the description must compensate: it explains mode values, what 'angle' controls ('edges sharper than angle degrees stay sharp'), and what weighted_normals does and how it interacts with mode. The only parameter not addressed is names, whose meaning is self-evident from the array of object 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?
States a specific verb and resource ('Set shading of meshes') and then defines each mode's exact semantics, including the discriminating example (a cube stays crisp, a sphere becomes smooth). It also explicitly distinguishes itself from the sibling tool sculpt at the end, so an agent can tell what this tool does and does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 concrete when-to-use rule for the weighted_normals option ('parts with both bevels and flat chamfers, where no single angle works') and names the alternative for a related-but-different need ('to move vertices use sculpt'). It does not spell out when to prefer flat vs smooth vs auto beyond the mode definitions, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shrinkwrapA
Snap the vertices of object onto the surface of target (clothes onto a body, a clean mesh onto a sculpt, a
floor onto terrain). Method project moves them along axis (default Z) in direction. offset keeps a gap in
metres. Subdivide the object first for a smooth fit.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | ||
| method | No | nearest_surface | |
| object | Yes | ||
| offset | No | ||
| target | Yes | ||
| direction | No | both |
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 behavior of specific parameters ('project moves them along axis', 'offset keeps a gap in metres') and the subdivide prerequisite, which is useful. But it lacks critical behavioral details: it mutates geometry in place (no reversibility info), no mention of whether it requires edit mode or specific object types, and no performance or return-value notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and scope, then parameter behavior, then a prerequisite tip. No filler; every clause adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and some parameter behavior, but for a mesh-modifying tool with no annotations and 0% schema coverage, it omits important context: whether the operation is destructive or reversible, how it handles targets without a surface (e.g., open meshes), and output/return behavior. The subdivide prerequisite is a good start but not enough 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?
Schema coverage is 0%, so the description must compensate. It does: it explains 'method project moves them along axis (default Z) in direction', defines 'offset' as 'keeps a gap in metres', and gives use-case context for axis. However, it doesn't explain the 'nearest_surface' vs 'nearest_vertex' methods or the direction enum values, leaving some parameters under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Snap the vertices of object onto the surface of target', with concrete use-case examples (clothes onto a body, mesh onto sculpt, floor onto terrain). This clearly distinguishes it from siblings like move_to_contact, place_on, or ground, which serve different projection/placement purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage context (clothes onto body, clean mesh onto sculpt, floor onto terrain) and includes the key prerequisite 'Subdivide the object first for a smooth fit', which is actionable guidance. However, it doesn't explicitly compare to alternatives like move_to_contact or place_on, so it lacks sibling-level routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sightline_mapA
Exposure of a level. For every reachable cell it shoots rays around at eye height and measures how far one
can see. Returns a heat map (blue enclosed, red exposed), the longest sight lines with their positions and the
area that has a sight line longer than long_sightline. Use it to find sniper alleys and to check that
cover and corners break long views. Same agent settings as walkable_map.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | ||
| rays | No | ||
| names | No | ||
| start | No | ||
| max_range | No | ||
| eye_height | No | ||
| long_sightline | No |
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 explains the algorithm (ray casting at eye height per reachable cell), the output encoding (blue=enclosed, red=exposed), and the threshold-driven area metric. It omits cost/runtime expectations and any prerequisite state (e.g. an existing level), so it falls short of 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?
Four tight sentences, front-loaded with what is computed before the interpretation and use case. Dense but no filler; the only slight cost is that the output description is packed into one long sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description supplies both the computation and the return shape (heat map, sight lines with positions, thresholded area), which is what an agent needs to invoke and interpret it. The remaining gap is the un-documented half of the parameter set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, so the description must compensate. It meaningfully explains `long_sightline` (the threshold for reported area) and implicitly `eye_height` and `rays` ('shoots rays around at eye height'), but leaves `cell`, `names`, `start`, and `max_range` undocumented, so coverage 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?
States a specific computation ('Exposure of a level... shoots rays around at eye height and measures how far one can see') and its output (heat map, longest sight lines, exposed area). It is clearly distinguishable from geometry-modelling siblings, and it hints at kinship with walkable_map, though it doesn't contrast itself against line_of_sight or viewshed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the use case: 'find sniper alleys and check that cover and corners break long views.' This is clear positive guidance, but there is no when-not guidance and no named alternative (walkable_map is cited only for shared settings, not as a routing alternative).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solidifyC
Give a surface thickness in metres (walls from planes, cloth, leaves). offset -1 grows inward, 1 outward, 0 both ways.
| Name | Required | Description | Default |
|---|---|---|---|
| even | No | ||
| object | Yes | ||
| offset | No | ||
| thickness | Yes |
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 explains offset direction but omits whether the operation is destructive, how it interacts with existing geometry, and what the required 'object' parameter expects. This is a mutation tool, so those gaps matter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the most important parameter behavior. No filler 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 4-parameter mesh operation with no annotations, no output schema, and 0% schema coverage, the description is incomplete. It should at least clarify 'object' and 'even', and ideally note whether the original surface is replaced or duplicated.
Complex tools with many parameters or behaviors need more documentation. 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 useful meaning for thickness (metres) and offset (-1 inward, 1 outward, 0 both ways), but says nothing about 'object' or 'even', leaving two of four parameters 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?
The description states a specific verb ('give') and resource ('surface thickness'), and gives examples of intended surfaces (walls from planes, cloth, leaves). It does not differentiate from sibling mesh-editing tools such as extrude_faces or inset_faces, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The examples imply some use cases, but the description never states when to choose solidify over alternatives like extrude_faces, inset_faces, or subdivide. There are no exclusions or explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusA
Call it first. Blender version, add-on version, open file, scene and its object count, and the toolsets of this
server. It compares the tools of this server with the handlers of the add-on: server_is_stale means restart the MCP
server, addon_is_stale means restart Blender. When Blender is not reachable it says where Blender is installed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden and does so well: it discloses the returned fields, the meaning of the two staleness flags and the remedy for each, and the failure mode when Blender is unreachable. This is unusually rich behavioral disclosure for a no-annotation 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 imperative "Call it first" is front-loaded, and the remaining two sentences pack return contents, flag interpretation, and the offline case with no filler. Every clause 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 zero-parameter, no-output-schema, no-annotation tool, the description covers what it returns, how to interpret the diagnostic flags, and what happens on failure. An agent has everything needed to call it and act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to add beyond the schema baseline. A 4 is the correct baseline for a parameterless tool; nothing in the description is needed or missing here.
Input schemas describe structure but not intent. Descriptions should explain 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 enumerates exactly what the tool reports (Blender version, add-on version, open file, scene object count, server toolsets) and adds the stale-detection semantics, so its purpose is unmistakable. No sibling tool overlaps with a diagnostics/environment-report role, so it is trivially distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call it first" is an explicit invocation ordering, and the description further tells the agent what action each result implies (restart the MCP server vs. restart Blender). That is actionable when-to-use guidance plus result-driven next steps, not mere implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subdivideA
Round the whole geometry with Catmull-Clark subdivision (each level quadruples the faces). apply=true bakes it into the mesh and sets smooth shading. Watch the triangle count in the answer against your budget. Use subdivide_faces to cut picked faces into a grid without rounding, remesh for an even skin over merged parts.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| names | Yes | ||
| levels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full load, and it does well: it discloses the core side effect ('apply=true bakes it into the mesh and sets smooth shading'), the multiplicative cost of levels, and a budget caveat about triangle count. It does not state reversibility, prerequisites (object selection/names), or what happens when apply=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences that are front-loaded with the operation, then the side effect, then the caveat, then the routing to alternatives. Every clause delivers distinct information with no restatement of the name or 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 no output schema, it covers operation, side effects, cost, and alternatives well. Remaining gaps are the meaning of 'names' and whether the bake can be undone, neither of which is recoverable from the structured fields.
Complex tools with many parameters or behaviors need more documentation. 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 explains apply (bakes geometry, enables smooth shading) and conveys levels indirectly via 'each level quadruples the faces'. The required 'names' parameter is only implied by 'whole geometry', leaving its target semantics unstated.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Round the whole geometry with Catmull-Clark subdivision') and immediately differentiates from the two nearest siblings, subdivide_faces and remesh, by naming what each does instead. An agent can select this tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes: use subdivide_faces for a grid cut of picked faces without rounding, use remesh for an even skin over merged parts, implying this tool is for whole-object rounding. When-to-use and both alternatives are stated with the distinguishing condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subdivide_facesA
Split the picked faces into a grid; cuts is the number of cuts per edge. The shape stays: it gives geometry
to bend, sculpt or displace. Use subdivide to round the whole mesh, remesh for an even skin over merged parts.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| cuts | No | ||
| where | No | ||
| object | Yes |
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 useful behavior: it says the operation preserves the overall shape and creates geometry useful for bending, sculpting, or displacing. However, it does not mention mutation side effects, reversibility, required permissions, or return behavior, leaving some behavioral gaps for a mesh-editing 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 core operation is front-loaded in the first sentence, followed by alternatives and then necessary `where` details. The description is long but dense and mostly free of repetition, though the multi-key `where` explanation could be more tightly formatted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and 0% schema description coverage, the description is fairly complete for usage and the `where` parameter. It still omits the required `object` parameter and any return or side-effect information, so it is not fully complete for safe 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%, so the description must compensate. It thoroughly explains `cuts` and gives extensive semantics for `where`, including normal, angle, coordinate ranges, box, area, and index filters. But it never explains the required `object` parameter, so the description only partially compensates for the missing schema 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 states a specific verb and resource: 'Split the picked faces into a grid,' with `cuts` clarified as the number of cuts per edge. It explicitly distinguishes itself from sibling tools by naming `subdivide` and `remesh` and the conditions that select 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?
It gives clear alternatives: use `subdivide` to round the whole mesh and `remesh` for an even skin over merged parts. It also provides a prerequisite workflow hint: 'Look at mesh_info first to see where the faces are,' and explains that `where` controls face selection, so an agent knows when and how to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sweepC
Pull a cross-section along a path of world points: pipes, cables, railings, trims, horns, tails, roads. radii gives
one radius per point (a taper). profile is a closed 2D polygon [[right, up], ...] of the cross-section (default a
circle with sides); the frame turns smoothly along the path, up is the starting up direction.
| Name | Required | Description | Default |
|---|---|---|---|
| up | No | ||
| caps | No | ||
| name | Yes | ||
| path | Yes | ||
| radii | No | ||
| sides | No | ||
| closed | No | ||
| radius | No | ||
| profile | No |
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 hints at sweep behavior (frame turns smoothly along path) but does not cover key behaviors such as caps (default true), closed option, return value, or side effects. With 9 params and 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 a single, dense paragraph that front-loads the core purpose and then explains key parameters. It is efficient and avoids fluff, though it could be slightly more structured with separate sentences per 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 9 parameters, no annotations, no output schema, and 0% schema description coverage, the description is far from complete. It covers only a few parameters and provides no details on required parameters (name, path), defaults, or the return value. An agent would struggle to call this tool correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains radii (one radius per point, taper), profile (closed 2D polygon [[right, up], ...], default circle with sides), and up (starting up direction). However, it omits several parameters: name, path, caps, sides, closed, radius. The explanation adds value for some params but is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (pull a cross-section) and resource (along a path of world points), and gives concrete example use cases (pipes, cables, railings). It is clear what the tool does, though it doesn't explicitly differentiate from siblings like loft or extrude_profile, 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?
The description explains what parameters do but provides no guidance on when to use this tool versus alternatives like loft, extrude_profile, or radial_array. There are no exclusions or conditions given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terrainA
Make a ground mesh from a noise height map, for outdoor levels. Same seed, same ground.
size is [width along X, depth along Y] and resolution the grid step, in metres (0.5 looks low-poly). Over
160000 vertices is an error: raise resolution.
height is the full range above the z of the object. scale is the size of the biggest hills in metres;
octaves adds finer bumps. at is the world position of the centre and the origin.
edge_falloff 0-1 makes an island: the share of the half size at the border where the ground sinks to zero.
flat_center is the radius of a level circle in the middle (for a building); it blends out over half that
radius. plateau_levels (2 or more) makes terraces of equal height.
The bottom is open. skirt (a world z below the lowest border point) adds walls down to that z and a flat
bottom: a closed block. Faces are flat shaded unless smooth=true. Returns the vertex count and height range.
Then use path_carve for roads and scatter for rocks and trees.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| name | Yes | ||
| seed | No | ||
| size | No | ||
| scale | No | ||
| skirt | No | ||
| height | No | ||
| smooth | No | ||
| octaves | No | ||
| resolution | No | ||
| flat_center | No | ||
| edge_falloff | No | ||
| plateau_levels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so unusually well: it discloses a hard error condition (>160000 vertices), the default open-bottom topology, that `skirt` closes the mesh into a solid block, that faces are flat-shaded unless smooth=true, and what the call returns. This is exactly the operational detail an agent needs before invoking a mesh generator.
Agents need to know what a tool does to the 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 leads, then parameter semantics are packed into terse clauses with no filler, and the workflow hint closes. Every sentence conveys distinct information despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 13-parameter procedural generator with no annotations and no output schema, the description covers purpose, determinism, error limits, topology options and return values, so an agent can call it correctly without further probing.
Complex tools with many parameters or behaviors need more documentation. 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 13 parameters, so the description must compensate and it does: it defines units and semantics for size (metres, [X,Y]), resolution, height, scale, octaves, at, edge_falloff, flat_center, plateau_levels, skirt and smooth, plus the seed determinism guarantee. Only the self-evident `name` 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 ('Make a ground mesh from a noise height map') plus its domain ('outdoor levels'), which is far more than a restatement of the name. The only gap is that it never distinguishes itself from the sibling `ground`, which an agent could reasonably confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (outdoor levels) and an explicit downstream workflow ('Then use path_carve for roads and scatter for rocks and trees'), which is genuinely routing guidance. It lacks any when-not-to-use or alternative-selection statement, e.g. versus `ground` or `build_from_grid`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_meshA
Make a text label as a closed mesh, or engrave text into a mesh. size is the height of a capital letter and
depth the thickness, in metres. \n starts a new line.
plane: XZ stands upright and reads from the front (-Y), XY lies flat and reads from above, YZ stands and reads
from +X. The back face is on the plane.
at is the anchor in the world (the origin when empty) and the object origin; align puts the middle, the left
end or the right end of the text there; vertically the text is centred.
font is a path to a .ttf or .otf file. The built-in font has Latin and Cyrillic; a font without a glyph shows
nothing for that character. bevel rounds the edges (0 to depth/2). The same name replaces the earlier text.
on_object (a mesh) puts the text on its surface: a ray through at along the plane normal finds the first hit,
and the text lands offset metres above it (a decal that does not z-fight). The text stays flat: use it on flat
or nearly flat surfaces.
engrave=true cuts the letters depth deep into on_object instead, with the checks and clean-up of boolean; no
text object stays and bevel is ignored. The mesh must be closed. The answer has the volume before and after.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| font | No | ||
| name | No | text | |
| size | No | ||
| text | Yes | ||
| align | No | center | |
| bevel | No | ||
| depth | No | ||
| plane | No | XZ | |
| offset | No | ||
| engrave | No | ||
| on_object | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: engrave applies boolean checks and clean-up, requires a closed mesh, leaves no text object and ignores bevel; the decal does not z-fight; the same name replaces earlier text; the response reports volume before and after. These are exactly the mutation side effects an agent 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?
Dense but every clause carries information; parameter explanations are grouped per concept with backticked names for scanability. It is a long block of near-continuous prose, so it is efficient rather than optimal, 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?
No annotations and no output schema, so the description must cover behavior and does, even stating the return value (volume before and after). It stops short of describing the exact response shape or the resulting object's name in the scene tree, which is a minor gap for a 12-parameter 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% and 12 parameters are present, so the description must compensate, and it does: units (metres), size = capital-letter height, depth = thickness, bevel range 0..depth/2, plane orientation with reading direction, at as world anchor and object origin, align horizontal placement with vertical centring, font path and glyph fallback, offset height above the hit point. Only the self-evident `text` parameter 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?
Opens with a specific verb+resource: 'Make a text label as a closed mesh, or engrave text into a mesh.' The two modes are distinguished up front, and no sibling tool in the list does text geometry, so the agent can route to it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 selection criteria: use on_object for a decal on flat or nearly flat surfaces, engrave=true for cutting letters into a closed mesh, and notes engrave ignores bevel and leaves no text object. It does not name an alternative tool, but there is no competing sibling for text creation, so the remaining guidance is conditional rather than comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trace_outlineA
Trace the outer outline of a reference silhouette as a closed polygon of [x, z] points in metres (x from the
centre of the silhouette box, z from its bottom). simplify is the largest allowed deviation in metres. Feed
the points to extrude_profile, or build a hull with visual_hull. holes=true also returns holes: the openings
inside the outline (a trigger guard, a handle) as polygons, largest first, each at least min_hole of the outline
area; give them to extrude_profile as holes. The reference must keep its openings (prepare_reference fill_holes).
| Name | Required | Description | Default |
|---|---|---|---|
| holes | No | ||
| height_m | Yes | ||
| min_hole | No | ||
| simplify | No | ||
| reference | Yes | ||
| threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses output shape, coordinate frame, simplification meaning, holes behavior, ordering, and a precondition. It omits what the threshold parameter does and does not explicitly state whether the operation is read-only or mutates scene state, leaving some behavioral traits 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?
Three sentences with the core purpose front-loaded, followed by output/parameter details and a prerequisite. Every sentence earns its place and there is no redundant 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 6-parameter tool with no schema descriptions, no output schema, and no annotations, the description covers purpose, usage, output format, and a key precondition. However, it leaves critical parameter semantics (threshold, height_m, reference) unexplained and does not clarify read-vs-mutate safety, so it is only partially adequate 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 explain all 6 parameters. It explains simplify, holes, and min_hole, but omits reference, height_m, and threshold entirely, including the required height_m parameter, leaving half the parameters semantically 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 (trace), resource (outer outline of a reference silhouette), and output format (closed polygon of [x, z] points in metres), including coordinate origin. It clearly distinguishes the tool from siblings by naming extrude_profile and visual_hull as downstream consumers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: feed points to extrude_profile or build a hull with visual_hull. It also states when holes=true should be used and that the resulting holes should be given to extrude_profile, plus the prerequisite that the reference must keep its openings (prepare_reference fill_holes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_weightsB
Copy skin weights from a skinned mesh to another mesh by nearest vertex (same rig for clothes, hair, a new character body). Both meshes should stand in the same place. The Armature modifier is set up too.
| Name | Required | Description | Default |
|---|---|---|---|
| donor | Yes | ||
| target | Yes | ||
| armature | No |
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 algorithm (nearest vertex), a precondition (both meshes in the same place) and a real side effect (the Armature modifier is set up too). It does not say whether existing target weights are overwritten, what happens on mismatched rigs, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, with each sentence adding a distinct fact (method, precondition, side effect). The parenthetical use-case list is slightly cluttered but 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 an unannotated, no-output-schema mutation tool this covers purpose, precondition and one side effect, which is the minimum viable set. It leaves gaps on parameter roles, overwrite behavior and error conditions that matter for a weight-transfer 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% across all three parameters. The description conveys direction (from donor mesh to target mesh) but never maps the parameter names donor/target to their roles, and the optional armature parameter is entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (copy) and resource (skin weights) plus the method (nearest vertex) and the concrete use cases (clothes, hair, new character body). It is clearly distinguishable from mesh-mutation siblings, though it does not name the closest relatives like bind or check_weights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 parenthetical use cases and the 'same rig'/'same place' constraint imply when this applies, but there is no explicit when-not guidance and no routing to alternatives such as bind or check_weights. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_objectsA
Move, turn and scale objects together with their children. Order: scale, then rotate, then move. rotate_deg
[rx, ry, rz] turns around the world X, then Y, then Z axis. scale is a number or [x, y, z] along the world axes.
pivot is a world point for the turn and the scale; the default is the centre of the bounding box of all the
objects and their children. Several objects turn as one group. Scaling a turned object by different factors
on each axis shears it a little: set the size with set_dimensions first. The answer lists every object after the
change. Use it when you know the numbers; to place a part against another use attach or move_to_contact.
| Name | Required | Description | Default |
|---|---|---|---|
| move | No | ||
| names | Yes | ||
| pivot | No | ||
| scale | No | ||
| rotate_deg | No |
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 transform order, axis order for rotation, pivot default, group behavior, shear caveat, and that every object is listed after the change. It does not state whether the mutation is reversible or what happens on partial failure, 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?
The description is front-loaded with purpose and order, then packs parameter and behavioral details efficiently. It is longer than a single sentence but nearly every clause adds useful context; the shear warning and alternative routing are not 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 5-parameter mutating tool with no annotations and no output schema, the description covers most operational context: order, pivot default, group behavior, shear caveat, return listing, and sibling alternatives. The main remaining gap is the exact meaning of the move parameter and any reversibility details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains rotate_deg, scale, and pivot in useful detail, but move is only implied by the word 'move' and names is undocumented beyond its obvious meaning. This partially compensates for the coverage gap but leaves move semantics underspecified.
Input schemas describe structure but not intent. Descriptions should explain 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 sentence gives a specific verb set (move, turn, scale) and resource (objects together with their children), making the tool's action immediately clear. It also distinguishes itself from sibling tools by contrasting numeric transforms with attach and move_to_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'Use it when you know the numbers'. It also names alternatives and the condition for choosing them: 'to place a part against another use attach or move_to_contact'. This leaves little inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_regionA
Move, scale and rotate the vertices of the picked faces (mode faces) or the picked vertices (mode vertices)
in world terms. pivot defaults to the region centre. falloff > 0 drags the neighbours too, like proportional
editing: weights fall from 1 at the region to 0 at falloff metres away, shaped by falloff_type.
Use it to widen a head, taper a leg, raise a ridge. symmetric adds the mirror twins of the picked vertices
about the centre of the mesh box on that world axis (the answer gives mirrored_vertices and without_twin); the
transform itself is not mirrored. Without it the answer has a warning when the mesh is mirror-symmetric and
the selection lies on both sides of the plane but is not symmetric.
where picks faces (or vertices, edges) by a condition, all given keys must hold: normal ('+Z', '-X' or [x,y,z]) with
angle (degrees, default 25); x, y, z ranges [min, max] (null means open) on the world centre; box [[x0,y0,z0],[x1,y1,z1]];
area [min, max]; index [...]. {} or null picks everything. Look at mesh_info first to see where the faces are.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | faces | |
| move | No | ||
| pivot | No | ||
| scale | No | ||
| where | No | ||
| object | Yes | ||
| falloff | No | ||
| symmetric | No | ||
| rotate_deg | No | ||
| falloff_type | No | smooth |
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 important behavior: world-space transforms, default pivot at region centre, falloff semantics with weights and falloff_type, symmetric mirror-twin handling, and warning conditions. It still omits some operational context such as mutation/reversibility expectations and object 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 dense but front-loads the core action and uses backticks to structure parameter references. It is appropriately detailed for a complex 10-parameter tool, though some explanatory clauses could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no annotations and no output schema, the description covers most behavior, including falloff, symmetric behavior, where-condition semantics, and some return fields like mirrored_vertices and warning. The missing explanation of the required object parameter and incomplete parameter-name mapping 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. It explains mode, pivot, falloff, falloff_type, symmetric, and the where condition keys, but it does not explicitly document the required object parameter or map move, scale, and rotate_deg to their 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?
States a specific verb+resource: move, scale and rotate vertices of picked faces or vertices in world terms. It clearly distinguishes region vertex editing from object-level tools, but does not explicitly differentiate itself from the sibling transform_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?
Gives use cases (widen a head, taper a leg, raise a ridge) and a prerequisite (look at mesh_info first). It does not name alternatives or state when not to use this tool versus transform_objects, deform, or other transform-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unwrapA
Make a UV map. Method smart is Smart UV Project (a larger angle gives fewer, larger islands); angle is
angle-based unwrap; cube, cylinder and sphere are projections. margin is the gap between islands (0..1); pack
arranges the islands in the 0..1 square. Returns the UV numbers of each mesh: islands, used area, faces outside
0..1, degenerate faces and texel_density_spread (1 is even, above 4 is stretched). check_mesh gives the same
numbers for an existing UV map.
| Name | Required | Description | Default |
|---|---|---|---|
| pack | No | ||
| angle | No | ||
| names | Yes | ||
| margin | No | ||
| method | No | smart |
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 the return payload (islands, used area, faces outside 0..1, degenerate faces, texel_density_spread with its scale), which is valuable. However, it never states that this writes UV data onto the named meshes or what happens to pre-existing UV maps, a notable gap 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?
Dense but well front-loaded: the core action comes first, then method semantics, then parameter meanings, then returns. Every clause carries information, though the single run-on paragraph and parenthetical-heavy style reduce readability slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and no output schema, the description covers parameter meaning and return values well, which is exactly what's needed. It is missing only the side-effect statement (that UVs are written to the given meshes) and any precondition on object selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains method's six enum values, angle's dual meaning ('larger angle gives fewer, larger islands' for smart, 'angle-based unwrap' otherwise), margin's 0..1 range, and pack's purpose. Only 'names' is left implicit, which is why this is not 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+resource ('Make a UV map') and then enumerates the methods it supports, so an agent knows exactly what operation is performed. It explicitly distinguishes itself from the sibling check_mesh ('gives the same numbers for an existing UV map'), making selection 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 per-method explanations (smart vs angle vs cube/cylinder/sphere) and the check_mesh reference give real context for choosing this tool and its mode. It stops short of explicit when-not-to-use or prerequisite guidance (e.g., whether objects must be selected or whether existing UVs are overwritten).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
viewshedA
What can be seen from a point: for each reachable cell, a ray from the eye to a point target_height above the
floor. Returns visible and hidden area, the farthest visible distance and a map. Use it for spawns (what does an
enemy see?), sniper spots, hiding places, objective visibility. The area is the one that contains the point.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | ||
| names | No | ||
| point | Yes | ||
| max_step | No | ||
| max_range | No | ||
| eye_height | No | ||
| agent_height | No | ||
| agent_radius | No | ||
| max_slope_deg | No | ||
| target_height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does a fair job: it discloses the ray-casting method, the three return artifacts (visible area, hidden area, farthest distance, map), and the area-containment rule. It omits any note on cost/performance for a 60-unit-range sweep, which is the main behavioral 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?
Three sentences, front-loaded with the core definition before the use cases, with no filler. It is information-dense rather than padded, though the use-case list could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 10 parameters, no output schema, and no annotations, the description covers the return values well (compensating for the missing output schema) but leaves most parameters unexplained and gives no cost or prerequisite guidance. Adequate but clearly incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 parameters. The description names only target_height and implies eye_height via 'ray from the eye'; the other eight (cell, names, max_step, max_range, agent_height, agent_radius, max_slope_deg) are undocumented anywhere, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific computation and its output: 'for each reachable cell, a ray from the eye to a point target_height above the floor. Returns visible and hidden area, the farthest visible distance and a map.' The phrase 'for each reachable cell' implicitly distinguishes it from single-ray siblings like line_of_sight, but 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?
Gives concrete use cases — spawns ('what does an enemy see?'), sniper spots, hiding places, objective visibility — which is clear when-to-use context. It stops short of naming alternatives such as sightline_map or line_of_sight, so an agent must infer which visibility tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visual_hullA
Make a solid that matches BOTH silhouettes exactly: the front outline extruded and intersected with the side outline extruded. Arms, ears, noses and other outline details come out right in both views. The inside is a straight extrusion, so refine curved surfaces afterwards (sculpt, subdivide). Use it for a precise first form of characters, props and vehicles.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| name | Yes | ||
| side | Yes | ||
| front | Yes | ||
| height_m | Yes | ||
| simplify | No | ||
| threshold | No | ||
| side_faces | No | left |
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 disclose a genuinely important behavioral trait: the interior is a straight extrusion, so curved surfaces need post-processing. It still omits failure modes (e.g., mismatched silhouette scale/orientation), expected input format, and any cost or permission notes.
Agents need to know what a tool does to the 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 operation in the first sentence, then appends limitation and use-case in two short sentences. Every sentence carries information, though the parenthetical refinement note is slightly terse and the third sentence could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, 4-required geometry tool with no annotations, no output schema, and 0% schema coverage, the description explains what the tool does and its main limitation but leaves the bulk of parameter semantics undocumented. It is adequate for selection but thin 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% across 8 parameters, so the description must compensate and largely does not. It implicitly maps 'front outline' and 'side outline' to the front/side params and mentions shape/height, but leaves at, simplify, threshold, and side_faces entirely unexplained, including the meaning of the 0.01/0.06 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?
States a specific verb and resource ('make a solid') and defines the exact construction method (front outline extruded intersected with side outline extruded). That method statement distinguishes it from siblings like extrude_profile, loft, and loft_from_masks without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the target use case ('precise first form of characters, props and vehicles') and prescribes the follow-up workflow ('refine curved surfaces afterwards (sculpt, subdivide)'). It gives clear context but does not state when NOT to use it or compare against an alternative silhouette-based tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walkable_mapA
Check where an agent of this size can walk, then flood from start (default: the largest area). Floors are
found by rays, so ramps, stairs and several levels work. Returns the reachable, unreachable and blocked areas
in m2 and a top-down image. Use it to prove that every room, spawn and objective connects.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | ||
| names | No | ||
| start | No | ||
| max_step | No | ||
| max_levels | No | ||
| agent_height | No | ||
| agent_radius | No | ||
| max_slope_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses meaningful behavior: default start is the largest area, floors are detected by rays so ramps/stairs/levels work, and the tool returns reachable, unreachable and blocked areas in m2 plus a top-down image. It does not explicitly state that the operation is read-only or whether it modifies the scene, but for a geometry-analysis tool the behavioral context is largely 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 front-loaded with purpose and remains tight across four sentences. Each sentence adds useful information: capability, default behavior, algorithm detail, output, and intended use. It is appropriately sized for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 eight undocumented parameters, no annotations, and no output schema, the description does well to explain the return values and high-level behavior. However, it leaves most parameter semantics unexplained, which is a clear gap for correct invocation. It is minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has eight parameters and 0% description coverage, so the description must compensate. It only explains the `start` parameter's default behavior (flood from the largest area if omitted) and vaguely refers to 'an agent of this size,' without mapping to `agent_height`, `agent_radius`, `max_step`, `max_levels`, `max_slope_deg`, `cell`, or `names`. Most parameters remain semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: checking where an agent of a given size can walk, then flooding from a start point. It names the return values (reachable, unreachable, blocked areas in m2 and a top-down image) and explains that floors are found by rays so ramps, stairs and multiple levels are handled. This distinguishes it from sibling analysis tools like sightline_map, viewshed, or route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear intended use: 'Use it to prove that every room, spawn and objective connects.' That tells an agent when this tool is appropriate. It does not, however, name alternatives or state when not to use it, so it falls short of the explicit when/when-not guidance required for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weldA
Merge vertices closer than distance metres (empty: 0.0001 m, less on objects under 0.3 m; optionally only those inside where: x, y, z, box). Fixes doubled
vertices and seams after joining parts. For a broken mesh with holes and junk use repair_mesh. A distance wider
than the thinnest faces collapses them and opens the mesh: the call then fails, changes nothing, and names the new
boundary and non-manifold edges, their world box and a smaller distance that is safe. allow_open=true welds anyway
and puts the same report into warning.
| Name | Required | Description | Default |
|---|---|---|---|
| where | No | ||
| object | Yes | ||
| distance | No | ||
| allow_open | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so richly: it discloses atomic failure ('changes nothing'), the failure report contents (boundary and non-manifold edges, world box, a safe smaller distance), and the allow_open escape hatch that converts failure into a `warning`. This is exactly the mutation-safety context an agent needs before calling.
Agents need to know what a tool does to the 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 first, then the alternative, then failure semantics — a sensible ordering. It is dense and parenthetically packed ('empty: 0.0001 m, less on objects under 0.3 m'), but every sentence carries distinct information 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 no output schema, the description supplies the safety profile, the failure/report contract, and the override flag. An agent has everything needed to call it correctly and predict the result.
Complex tools with many parameters or behaviors need more documentation. 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 for distance (defaults and size-dependent behavior), where (x, y, z, box), and allow_open (its warning effect). The required `object` parameter and the exact shape of `where` remain undocumented, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Merge vertices closer than `distance` metres') with concrete defaults and scope, and explicitly distinguishes itself from the sibling repair_mesh. An agent can pick between weld and repair_mesh 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?
Gives the trigger ('fixes doubled vertices and seams after joining parts'), the exclusion ('for a broken mesh with holes and junk use repair_mesh'), and the correct alternative named explicitly. Nothing is left to inference.
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.
113 tool updates
v0.4.0- First observed
add_light - First observed
apply_transforms - First observed
array - First observed
assert_spec - First observed
assign_material_faces - First observed
attach - First observed
bake_maps - First observed
bevel_edges - First observed
bind - First observed
bisect - First observed
blob - First observed
boolean - First observed
build_from_grid - First observed
check_contacts - First observed
check_game_ready - First observed
check_mesh - First observed
check_passages - First observed
check_symmetry - First observed
check_weights - First observed
checkpoint - First observed
combine - First observed
compare_view - First observed
create_armature - First observed
create_primitive - First observed
decimate - First observed
dedupe_materials - First observed
deform - First observed
delete - First observed
delete_faces - First observed
diff_since - First observed
duplicate - First observed
export_glb - First observed
extrude_faces - First observed
extrude_profile - First observed
find_floating - First observed
fit_to_reference - First observed
ground - First observed
import_glb - First observed
inset_faces - First observed
inspect_glb - First observed
job_status - First observed
lathe - First observed
limb - First observed
line_of_sight - First observed
list_bones - First observed
list_lights - First observed
list_materials - First observed
loft - First observed
loft_from_masks - First observed
match_camera - First observed
measure - First observed
measure_profile - First observed
mesh_info - First observed
mirror - First observed
move_to_contact - First observed
noise_displace - First observed
overlay_reference - First observed
paint_faces - First observed
palette_uv - First observed
parent - First observed
path_carve - First observed
pixel_to_world - First observed
place_at_pixel - First observed
place_on - First observed
pose - First observed
pose_sheet - First observed
prepare_reference - First observed
procedural_material - First observed
radial_array - First observed
raycast - First observed
recipe - First observed
remesh - First observed
render_final - First observed
render_sheet - First observed
render_view - First observed
repair_mesh - First observed
rock - First observed
rollback - First observed
route - First observed
run_python - First observed
run_spec - First observed
save_blend - First observed
save_spec - First observed
scatter - First observed
scene_tree - First observed
sculpt - First observed
select_faces - First observed
set_camera - First observed
set_dimensions - First observed
set_material - First observed
set_origin - First observed
set_post - First observed
set_world - First observed
setup_lighting - First observed
shade - First observed
shrinkwrap - First observed
sightline_map - First observed
solidify - First observed
status - First observed
subdivide - First observed
subdivide_faces - First observed
sweep - First observed
terrain - First observed
text_mesh - First observed
trace_outline - First observed
transfer_weights - First observed
transform_objects - First observed
transform_region - First observed
unwrap - First observed
viewshed - First observed
visual_hull - First observed
walkable_map - First observed
weld
TDQS
Scored across 113 tools
The set spans many domains and contains numerous closely related tools, such as attach/move_to_contact/place_on/ground, subdivide/subdivide_faces/remesh, render_sheet/render_view/render_final, and set_material/procedural_material/assign_material_faces. The descriptions are unusually detailed and often explicitly compare alternatives, which helps a lot, but with 113 tools an agent still faces many near-overlapping choices.
Almost all tool names use lower snake_case and are readable as verb_noun or noun forms, e.g. create_primitive, check_mesh, export_glb, list_materials. There are some bare nouns/verbs such as array, lathe, ground, pose, terrain, rock, and mixed patterns like check_* versus render_*, but the deviations are minor.
113 tools is an extreme over-scoping for a single MCP server, far beyond the typical 3-15 well-scoped range. Even for a broad Blender automation server, many specialized operations could be consolidated or grouped, making the surface overwhelming.
For a broad Blender asset/level creation, materials, rendering, reference matching, rigging, and export server, the surface is very extensive and covers most core workflows. Missing areas such as animation keyframing, constraints/IK, advanced UV editing, and physics/simulation prevent a perfect score, but agents can accomplish a wide range of tasks.
Maintenance
Related MCP Connectors
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Cloud Blender for AI agents: build, inspect, render and animate 3D scenes over remote MCP. Keep editable .blend projects and export GLB or STL. Make your first 3D asset free—30 compute minutes per UTC month, no credit card. First 100 eligible Free account owners to use all 30 minutes in one UTC month by December 31, 2026 UTC receive one calendar month of beta free: 4 compute hours per UTC month, 2 concurrent workers per deployment, 2 deployments, 2048×2048 renders at up to 256 samples, and 10 GiB storage. Existing usage counts toward the 4-hour allowance. Limited to 100 rewards; expires January 1, 2027 00:00 UTC. Free resumes afterward without an automatic charge. Examples, eligibility and terms: https://sceneplane.online/launch?utm_source=glama&utm_medium=directory&utm_campaign=first100
Blender cloud GPU render farm for AI agents (MCP/API): .blend, bpy, glTF/FBX/USD in; frames/MP4 out
3D avatar/asset foundry: text/image -> rigged, validated, engine-ready GLB via x402.
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables AI agents to control Blender through 150+ tools across 24 modules, including modeling, materials, lighting, animation, rendering, mesh quality analysis, and visual feedback, plus expert prompts and goal-first workflow management.209MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to inspect and drive Blender scenes directly, either through a live editor bridge on port 8190 or automatically via headless background CLI when Blender is closed. Provides token-efficient tools for scene outlining, object creation and modification, modifiers, materials, rendering, asset export, and arbitrary bpy script execution.-
- AlicenseAqualityBmaintenanceEnables AI agents to drive Blender 5.1+ for modeling, sculpting, mesh editing, scene management, and rendering through live Python execution.26MIT
- AlicenseCqualityBmaintenanceEnables AI agents to build game assets in Blender by modeling, lighting, rendering previews to inspect and correct, validating against engine budgets, and exporting to GLB/FBX.126MIT