rhino-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rhino-mcpModel a helix curve and export it as STEP"
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.
rhino-mcp
Drive McNeel Rhino 8 and Grasshopper from Claude through the Model Context Protocol.
Overview
rhino-mcp is a Model Context Protocol server that lets Claude (or any MCP client) drive Rhino 8 — creating geometry, manipulating layers and materials, baking Grasshopper output, exporting STEP/IGES/STL/OBJ — through plain natural-language tool calls.
It runs in two modes:
Standalone (default): backed by
rhino3dmfor headless.3dmfile authoring; works without Rhino installed and exposes ~242 tools (geometry, file-I/O, transform, layer, material, analysis, RhinoScript docs, composition, document hygiene, geometry validation, GH template catalogue, freeform skin / panelisation / curvature / fields, drawing-set sheet + title block, schedule / quantity, block definition, sun-position + shadow projection, BIM metadata tagging, 19 physical material presets, BRE daylight factor + Bird DNI clear-sky model, and multi-Rhino announcement-file discovery).Bridge: when the C# bridge plugin is loaded in a live Rhino 8 session, the server transparently forwards every call (booleans, lofts, sweeps, viewport image capture + zoom-to-object / zoom-to-layer, render, scripting (Python and gated Roslyn C# with timeouts and extra references), deformation, NURBS editing, SubD, paneling, freeform analysis with true Gaussian curvature, drawing-set view placement + section cuts + PDF export, accurate Brep-area schedules, block explode/redefine, ray-cast solar exposure + Brep ray probe, IFC / gbXML import-export, HDRI environment, camera / light / render / turntable automation, layer-material binding, and every Grasshopper operation including batched
connect_manywiring and slider placement) to RhinoCommon and Grasshopper.Instances, exposing ~245 tools.
Related MCP server: GOLEM-3DMCP-Rhino-
Features
Full geometry catalogue — points, lines, polylines, arcs, circles, ellipses, polygons, helixes, NURBS curves, rebuilds.
Solids and meshes — boxes, spheres, cylinders, cones, tori, mesh boxes; booleans / sweeps / lofts / fillets via the bridge.
Transforms — move, rotate, scale, mirror, plane-to-plane orient, linear/polar/rectangular arrays.
Script execution — run arbitrary RhinoScript Python (IronPython) or RhinoCommon C# (Roslyn) code in a live Rhino session, with built-in RhinoScript API documentation search (899 functions).
Advanced modeling — deformation (bend/twist/taper/flow), NURBS editing (rebuild/unroll/evaluate), SubD, surface matching, extraction (dup edge/border/isocurve/Make2D), control points, and paneling tools.
Drawing-set authoring — sheet / title block / north arrow / scale bar in standalone; multi-view placement, section cuts, and PDF export through the bridge.
Quantity & schedule — per-layer / per-material / per-
user_textaggregation with CSV export; bridge mode usesAreaMassProperties/VolumeMassPropertiesfor accurate Brep area + volume.Block / instance reuse — define / insert / list blocks in standalone; explode / redefine in bridge mode for synchronized component edits.
Environmental analysis — sun position + monthly sun-path polylines + shadow projection (NOAA SPA approximation); ray-cast solar exposure in bridge mode. Daylight precision adds Bird DNI clear-sky model with Kasten-Young air mass and Linke turbidity, plus BRE simplified daylight factor.
BIM interchange — IFC2x3 / IFC4 / IFC4x3 import & export, gbXML export, and IFC PropertySet metadata tagging that round-trips through
user_text.Material presets + HDRI — 19 bundled physical presets (concrete / brick / steel / aluminium / glass / timber / stone / plaster / fabric / landscape) keyed by category; HDRI environment for rendering.
Render automation — camera / light / render-engine setup, render-to-file, and parametric turntable sequences (bridge mode).
Undo / redo and batch operations — every bridge operation is wrapped in undo records; batch modify changes many objects in a single call.
Layers, materials, blocks, groups — full attribute control on the document.
File I/O — open/save
.3dm, export OBJ/STL standalone; STEP/IGES/DXF and screenshots via the bridge.Inline base64 screenshots —
rhino_screenshot(as_base64=True)returns the PNG payload inline for visual verification by the LLM.Rich object selection —
rhino_object_selectfilters by glob name pattern, layer, RGB color, object type, and user-text key/value pairs.Pagination on bulk queries —
rhino_list_objectsreturns apagination: {total, offset, limit, returned, has_more}block so large documents stay manageable.Scene composition shortcuts (v0.2) —
rhino_place_grid,rhino_stack_floors,rhino_scatter,rhino_replicate_along_curvecollapse "loop + transform" into a single tool call.Document hygiene tools (v0.2) — query/set units, tolerances, and base point (
rhino_document_units_*,rhino_tolerance_*,rhino_origin_set);rhino_document_summaryexposes them so the LLM can verify scale before issuing geometry calls.Geometry validation (v0.2) —
rhino_validate_brep,rhino_report_mesh_health,rhino_curve_continuity, plusrhino_check_naked_edges(bridge) for explicit topology diagnostics before booleans / exports.Grasshopper template loader (v0.2) —
gh_template_listreads a manifest of pre-wired definitions;gh_load_template,gh_bind_template_parameter,gh_run_template(bridge) load, parameterise, and bake them.Free-form architecture toolkit —
rhino_skin_from_sections,rhino_uv_grid_panels,rhino_panel_planarity,rhino_panel_curvature_classify,rhino_surface_developable_score,rhino_attractor_displace_points,rhino_smooth_polyline. Bridge mode adds true Gaussian / mean / principal curvature, world-axis slicing, and waffle ribs.Strategy prompts for the LLM — seven
@mcp.prompt()guides (general_strategy,rhinoscript_workflow,viewport_workflow,parametric_workflow,bim_authoring_workflow,design_dialogue_workflow,freeform_workflow) help Claude pick the right tool, avoid hallucinated APIs, and keep the user in the loop on design decisions.Async-capable tools — read-only query tools run on
async defso concurrent bridge round-trips don't stall the MCP transport.Robust connection layer — JSON-RPC over named pipe / Unix socket / TCP with
MSG_PEEKliveness probes and exponential backoff with jitter on reconnect.Grasshopper automation — open
.ghfiles, drop components, wire them, set sliders/panels/toggles, run, bake, read DataTrees.Three transports — stdio (Claude Desktop), Streamable HTTP, Docker/TCP.
Capability-aware registration — bridge-only tools are simply not registered when no bridge is reachable; no stub functions, ever.
Actionable errors — every failure carries a category, a remediation hint, and details the agent can act on.
Architecture
┌──────────────┐ stdio | HTTP ┌────────────────┐
│ Claude / │ ◀──────────────────▶ │ rhino-mcp │
│ MCP client │ │ (Python) │
└──────────────┘ └─────┬──────────┘
│
JSON-RPC 2.0 │ (named pipe / unix socket / TCP)
│
┌─────────▼──────────┐
│ C# Bridge Plugin │
│ (inside Rhino 8) │
│ ──────────────── │
│ RhinoCommon │
│ Grasshopper │
│ Roslyn (C# exec) │
│ IronPython (Py) │
└────────────────────┘In standalone mode the right-hand side is replaced by an in-process rhino3dm.File3dm document; bridge-only tools are unregistered.
Requirements
Python 3.11 or newer
rhino3dm >= 8.9,mcp[cli] >= 1.2,pydantic >= 2.6(installed automatically)Optional: McNeel Rhino 8 (any platform) — needed only for bridge mode
Optional: .NET 8 SDK — to build the C# bridge plugin (
dotnet build)Optional:
pywin32on Windows for the named-pipe transport
Installation
Using uv (recommended)
uv tool install rhino-mcp
# or, from a checkout:
uv sync && uv run rhino-mcpUsing pip
pip install rhino3dm-mcp
rhino-mcp --versionOne-shot Claude Desktop wiring
After installing the package, register the server with Claude Desktop in a single command instead of editing claude_desktop_config.json by hand:
rhino-mcp install # auto-detect launcher (uvx / rhino-mcp / python)
rhino-mcp install --mode bridge # force bridge mode in the env block
rhino-mcp install --force # overwrite an existing entry
rhino-mcp install --dry-run # preview the JSON without writingThe command writes a timestamped .bak.* copy of the existing config before saving, and is idempotent — re-running with the same flags is a no-op.
Restart Claude Desktop afterwards to pick up the change.
From inside Rhino — _McpInstall
If the bridge plugin is loaded, type _McpInstall on the Rhino command line.
The command is non-interactive: it locates uvx / rhino-mcp / python on PATH (with ~/.local/bin, ~/.cargo/bin, /opt/homebrew/bin, and /usr/local/bin searched on macOS so the GUI-app PATH is enough), runs the same install pipeline as rhino-mcp install, and streams the outcome to the Rhino command line.
The MCP server is registered with --mode auto so Claude Desktop attaches to the bridge when Rhino is running and falls back to standalone (rhino3dm) when it is not.
Docker
docker compose -f docker/docker-compose.yml up --buildThe container exposes the server over Streamable HTTP on TCP :8765.
Running the server
rhino-mcp is normally launched by an MCP client (Claude Desktop / Cursor / claude.ai connector) via the command + args you put into the client's config.
You can also run it manually for debugging.
Launch modes
Use case | Command |
Stdio (Claude Desktop default) |
|
Streamable HTTP (local dev / Cursor) |
|
Streamable HTTP (claude.ai connector) |
|
Docker (HTTP on |
|
Force standalone (no Rhino needed) |
|
Force bridge (fail fast if Rhino down) |
|
Force bridge with HTTP fallback |
|
Show all CLI flags |
|
The HTTP endpoint is http://<host>:<port>/mcp.
Use --allow-external only when exposing the server through ngrok / Cloudflare Tunnel / etc.
— it disables DNS-rebinding protection.
Claude Desktop (stdio)
claude_desktop_config.json lives at:
OS | Path |
macOS |
|
Windows |
|
Linux |
|
Paste this entry under mcpServers:
{
"mcpServers": {
"rhino-mcp": {
"command": "uvx",
"args": ["rhino3dm-mcp"],
"env": {
"RHINO_MCP_TRANSPORT": "stdio",
"RHINO_HOST": "127.0.0.1",
"RHINO_PORT": "4242",
"RHINO_MCP_LOG_LEVEL": "INFO"
}
}
}
}Prefer a checkout?
Point command at uv and run from the repo:
{
"mcpServers": {
"rhino-mcp": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/rhino-mcp", "run", "rhino-mcp"],
"env": { "RHINO_MCP_LOG_LEVEL": "DEBUG" }
}
}
}Restart Claude Desktop; the rhino-mcp tools and the three strategy prompts (general_strategy, rhinoscript_workflow, viewport_workflow) appear in the palette.
Cursor IDE
Cursor reads ~/.cursor/mcp.json (global) or <project>/.cursor/mcp.json (per-project):
{
"mcpServers": {
"rhino-mcp": {
"command": "uvx",
"args": ["rhino3dm-mcp"],
"env": { "RHINO_MCP_FORCE_MODE": "bridge" }
}
}
}claude.ai remote connector (Streamable HTTP)
Run the server with HTTP + external access:
rhino-mcp --transport http --host 0.0.0.0 --port 8765 --allow-external --statelessTunnel it (e.g.
ngrok http 8765) and grab the public HTTPS URL.In claude.ai → Settings → Connectors → Add custom connector, set the URL to
https://<your-tunnel>/mcp.
Generic stdio MCP clients
Any MCP-compatible client (mcp-inspector, Continue, Claude Code, etc.) that can spawn a subprocess will work — give it uvx rhino3dm-mcp or the path to your rhino-mcp entry-point and inherit env vars from the table below.
Rhino-side bridge plugin (C# — recommended)
Build and install the C# plugin for full 235 tool support.
The included helper script wraps dotnet build and verifies the post-build install location:
./scripts/build-plugin.sh # debug build + install
./scripts/build-plugin.sh --release # release build
./scripts/build-plugin.sh --clean # clean + rebuild
# Or invoke dotnet directly:
dotnet build rhino_plugin/csharp/RhinoMCPPlugin.csproj -c ReleasePost-build targets copy the .rhp:
OS | Path |
macOS |
|
Windows |
|
Restart Rhino 8 — the bridge starts automatically on load (TCP :4242 by default).
Then restart rhino-mcp (or set RHINO_MCP_FORCE_MODE=bridge) and the bridge-only tools become available.
Quick start
# After "rhino-mcp" is configured in Claude Desktop, ask Claude:
# "Create a 10-unit sphere at the origin and save the document to /tmp/demo.3dm"
# Behind the scenes Claude calls rhino_sphere → rhino_save.Strategy prompts
Three MCP prompts are registered automatically and surfaced in the client's prompt picker:
Prompt | When to use |
| Decision tree for orienting in a document → choosing the right tool → best practices. |
| Mandatory steps before invoking |
| How to combine |
Telling Claude "use the general_strategy prompt before you start" gives much better tool selection on long sessions.
Visual verification with base64 screenshots
"Build a 5x5x5 box on layer 'Demo', then take a 1280x720 base64 screenshot so you can confirm it landed."Claude calls rhino_box → rhino_zoom_extent → rhino_screenshot(as_base64=True) and reads the inline PNG from the response (image_base64 field) on the next turn.
Pagination & rich filtering
"List the first 50 curves on the 'Walls' layer, then select every object whose name matches 'Pillar_*' on layer 'Structure'."rhino_list_objects returns a pagination block; iterate with offset += limit until has_more is false. rhino_object_select accepts name_pattern, layer, color, object_type, user_text, and deselect_first.
Standalone smoke run from the shell:
RHINO_MCP_FORCE_MODE=standalone uv run python - <<'PY'
import asyncio
from rhino_mcp.server import build_server
from rhino_mcp.utils.registry import Mode
mcp, count = build_server(runtime_mode=Mode.STANDALONE, bridge_client=None)
print(f"{count} tools registered")
sphere = asyncio.run(
mcp._tool_manager._tools["rhino_sphere"].run(
{"args": {"center": {"x": 0, "y": 0, "z": 0}, "radius": 10.0}}
)
)
print(sphere)
PYTools reference (summary)
Category | Standalone | + Bridge | Notable members |
Geometry | 14 | 14 |
|
Curves | 3 | 3 |
|
Solids | 5 | 10 |
|
Surfaces | 0 | 11 |
|
Mesh | 1 | 8 |
|
Transform | 9 | 11 |
|
Annotation | 2 | 8 |
|
Layer / Object | 6 | 8 |
|
Material | 2 | 3 |
|
File I/O | 5 | 9 |
|
Analysis | 4 | 9 |
|
Query | 7 | 8 |
|
Display | 0 | 5 |
|
Scripting | 0 | 2 |
|
RS Docs | 4 | 4 |
|
History | 0 | 2 |
|
Batch | 0 | 1 |
|
Deformation | 0 | 4 |
|
NURBS | 0 | 5 |
|
SubD | 0 | 2 |
|
Srf Match | 0 | 3 |
|
Extraction | 0 | 4 |
|
Ctrl Points | 0 | 2 |
|
Paneling | 0 | 3 |
|
Grasshopper | 0 | 22 |
|
Drawing | 2 | 5 |
|
Schedule | 5 | 5 |
|
Blocks | 3 | 5 |
|
Environment | 3 | 4 |
|
Freeform | 8 | 11 |
|
BIM I/O | 1 | 4 |
|
Materials+ | 2 | 3 |
|
Render | 0 | 5 |
|
Daylight | 2 | 2 |
|
Detailed signatures live in docs/en/tools-reference.md.
Grasshopper integration
1. Start Rhino 8 → open Grasshopper → load your `.gh` definition.
2. Ensure the C# bridge plugin (`rhino-mcp.rhp`) is loaded in Rhino.
3. Set `RHINO_MCP_FORCE_MODE=bridge` and restart rhino-mcp.
4. From Claude:
- "Open /work/wing.gh, set the 'span' slider to 12.5, run, bake to layer 'Wing'."
- "Read the output of the 'Voronoi' component as a DataTree."See docs/en/grasshopper-guide.md for canvas/component/cluster recipes.
Configuration
Every knob is controlled by an environment variable. CLI flags override env where applicable.
Variable | Default | Purpose |
|
|
|
| (auto) | Force |
|
| When |
| (auto) | Bridge transport selector: |
|
| TCP transport endpoint |
|
| Windows named-pipe name |
| (XDG runtime) | Unix socket path override |
|
| Seconds to wait for a bridge ping |
|
| Max reconnect attempts after a transient transport failure |
|
| Base delay (seconds) for exponential backoff |
|
| Symmetric jitter ratio ( |
|
| Stderr log level. Set |
Development
git clone https://github.com/easehee/rhino-mcp.git
cd rhino-mcp
uv venv && source .venv/bin/activate
uv pip install -e '.[dev]'
# Tests + coverage
uv run pytest --cov=src/rhino_mcp
# Lint + type check
uv run ruff check src/ tests/
uv run mypy src/rhino_mcp
# Build the C# bridge plugin (auto-installs into Rhino on macOS/Windows)
./scripts/build-plugin.sh --release
# Wheel + sdist
./scripts/build.shManual smoke test against a running server
# Terminal A — start the server with verbose logging
RHINO_MCP_LOG_LEVEL=DEBUG rhino-mcp --transport http --port 8765
# Terminal B — list tools via the MCP inspector or a curl probe
npx @modelcontextprotocol/inspector http://127.0.0.1:8765/mcpTroubleshooting
Symptom | Likely cause / remediation |
| Start Rhino 8 with the C# bridge plugin loaded; verify |
Bridge-only tool absent in Claude | Server is in standalone mode — load the bridge plugin or set |
| Standalone supports only |
| Standalone import is |
| The bridge crashed or Rhino was closed — |
Stdout corrupted under stdio transport | Always log to stderr; rhino-mcp does this — verify no third-party libraries print to stdout. |
| Caller passed |
Pagination loops forever | Always advance |
| Filters AND together — try removing one filter at a time; the |
More in docs/en/troubleshooting.md.
License
MIT — see LICENSE.
Available Tools
542 toolsgh_add_componentB
Drop a Grasshopper component onto the active canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal that this is mutating (readOnlyHint=false), and the description's 'active canvas' phrasing adds a small amount of placement context. However, it does not disclose side effects, failure modes, or requirements such as the component needing to be installed or known, beyond what the annotation already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean, front-loaded sentence. Every word carries meaning and there is no redundant or generic filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple insert operation with a clear schema and output schema, the description is nearly complete: it names the action and target surface. It could additionally note behavior on invalid names or coordinate units, but these are minor for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description itself adds no parameter meaning. The nested input schema does explain that x/y are canvas coordinates and name is the component nickname or full name, which covers most of the semantic burden. Since the computed schema description coverage is 0%, this is a partial gap, but the actual schema text prevents serious ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Drop') and identifies the resource ('a Grasshopper component') and destination ('the active canvas'), which clearly separates it from sibling tools that search, connect, or delete components. It does not explicitly name a contrasting sibling, so it misses 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?
The description gives no guidance about when to use this tool versus alternatives like gh_place_slider, gh_components_search, or gh_connect_components. No prerequisites, exclusions, or decision context are provided, so an agent must infer when this is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_bake_to_rhinoB
Bake the output of one or more components into the active Rhino document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already signals mutation, and the description adds that output is written into the active Rhino document. It does not disclose side effects such as whether existing baked objects are replaced or whether a GH definition must be running, but the core write behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to identifying the action, object, and destination.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 bake operation, the description plus schema is mostly sufficient, but it omits practical context about obtaining component IDs and ensuring the components have computed output before baking. The available output schema may cover return values, so that gap is 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?
The description does not explain parameters, but the schema's nested properties define component_ids ('Components whose output to bake') and layer ('Target Rhino layer (created if absent)'), so the schema carries the semantic load. The description adds no additional parameter value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb ('bake'), resource ('output of one or more components'), and destination ('active Rhino document'), so an agent can tell what the tool does. It does not explicitly say 'Grasshopper' or distinguish this from sibling tools like gh_run or gh_data_tree_get, so it misses full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, nor are prerequisites mentioned, such as having a Grasshopper definition open or needing component IDs from gh_component_list. Usage is only implied by the word 'bake'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_bind_template_parameterA
Set a single named parameter on a loaded template (slider / panel / toggle).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint=false annotation by indicating a mutation ('Set'), but it does not disclose additional behavioral details such as side effects on the template or immediate application.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear, concise sentence that directly states the tool's function without extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple set operation with an output schema inferred, the description is sufficient to understand the primary action, though it lacks details on success/failure output or error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that the parameter refers to a slider, panel, or toggle, and implies the template must already be loaded, but it does not explain the value parameter's types or the exact meaning of template_id beyond the schema field 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 'Set' and a clear resource 'single named parameter on a loaded template', and specifies the types (slider/panel/toggle) that distinguish it from related tools like gh_set_slider or gh_set_parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mention of when to use this tool versus alternatives such as gh_set_parameter or gh_set_slider; it only describes the action without indicating conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_cluster_createB
Group components into a named cluster.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint: false already signals mutation, and the description's action (grouping components into a cluster) is consistent with that annotation, so there is no contradiction. However, the description adds little beyond the annotation: it does not disclose side effects on the original components, whether it operates on the active GH definition, or reversibility via gh_cluster_expand.
Agents need to know what a tool does to the 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 7-word sentence with zero filler and the verb front-loaded, making it very economical. It borders on under-specification given the 0% schema coverage, but unlike a tautology it conveys real semantic content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and the mutation annotation covering safety, the description does not need to explain return values or read-only status. Still missing are operational context such as prerequisites (an open GH canvas), how to obtain valid component_ids, and the tool's relationship to gh_cluster_expand, leaving the definition at minimum viable for a simple 2-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for documenting the parameters. It only implicitly maps 'components' to component_ids and 'named' to name; it does not explain what format component_ids take, how to source them (e.g., from gh_component_list), or that both parameters are required. The compensation is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Group), resource (components), and outcome (a named cluster), so an agent can tell this creates a Grasshopper cluster. However, it does not explicitly differentiate from the inverse sibling gh_cluster_expand or from Rhino grouping tools like rhino_group and rhino_group_selected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, no prerequisites are mentioned (e.g., active GH document), and no reference is made to the inverse operation gh_cluster_expand. The only implied usage is what the tool name itself suggests, so the description provides effectively no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_cluster_expandC
Expand a cluster back into its constituent components.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false signals that the tool modifies the document, and the description implies this without detail. It does not disclose side effects (e.g., whether the cluster itself is deleted or kept) or any other behavioral characteristics beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It directly states the purpose in a clear and efficient manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally sufficient for a simple tool with one parameter, but it does not clarify what 'expand' entails (e.g., whether the cluster is replaced by its components, how the output is structured). The existence of an output schema mitigates this slightly, but the description alone is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the only parameter (cluster_id), and the tool description does not mention it at all. Since schema coverage is 0%, the description fails to compensate, leaving the parameter's role entirely 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 clearly states the action ('expand') and the object ('a cluster'), making the purpose understandable. It does not explicitly distinguish itself from sibling tools like gh_cluster_create, but the verb 'expand' is specific enough to avoid 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 gives no indication of when to use this tool over alternatives, such as gh_cluster_create or gh_component_list. It lacks any context about the appropriate scenario for expanding a cluster.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_component_listARead-onlyIdempotent
List components currently on the active canvas (optionally filtered).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and 'List' is consistent with those. The description adds valuable context beyond annotations: the operation is scoped to the active canvas and can be narrowed by a filter. No side effects or hidden behaviors are suggested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence that states the operation, the scope, and the optional parameter. Every word earns its place; there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list operation with an output schema present, the description covers the core needs: what is listed, where, and the availability of filtering. The annotations cover safety and idempotency, and the output schema handles return-value details. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'optionally filtered' but does not explain what the filter operates on. While the input schema's 'filter' property does contain a description ('Substring to filter component nicknames by.'), at the top level the args parameter has no description and the context signal reports 0% schema description coverage. The description adds only minimal value over the nested schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('components on the active canvas'), immediately distinguishing this from siblings like gh_components_search (library search) or rhino_list_objects (Rhino document objects). The optional-filter note adds specificity without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently on the active canvas' clearly establishes the context in which this tool is appropriate. However, it does not explicitly name alternatives or state when not to use it, though the scope alone is strong enough guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_components_searchARead-onlyIdempotent
Search the Grasshopper component catalog (built-in + plugin-supplied).
Returns ``rows`` of ``{guid, name, nickname, category, subcategory,
description, plugin}`` and a ``summary`` block with match counts.
Use this to find the GUID needed by ``gh_add_component`` before
dropping a component on the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint and idempotentHint; the description aligns and adds detail about return shape (rows fields, summary block) and catalog scope. No mention of pagination or exact match semantics, but the safety profile is covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no redundancy, front-loaded with verb and resource. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with a rich parameter schema and output format described, the description is sufficient; the workflow hint to gh_add_component completes the picture.
Complex tools with many parameters or behaviors need more documentation. 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 nested schema fully describes limit, query, plugin, and category, so the description doesn't need to repeat them. It adds only the workflow tie to gh_add_component. While the reported coverage is 0% at the top level, the visible schema provides complete parameter documentation; description doesn't add further meaning, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the verb 'Search', the resource 'Grasshopper component catalog', and scopes it as 'built-in + plugin-supplied'. It names the sibling gh_add_component and clarifies the catalog’s purpose, distinguishing it from sibling tools like gh_component_list and gh_plugin_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the intended workflow: use to find the GUID needed by gh_add_component before dropping a component. It lacks exclusion criteria or alternative routing, but the use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_connect_componentsB
Create a wire from one component output to another component input.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a modification but does not disclose any side effects, failure conditions, or requirements such as the existence of the components or parameter types. It adds little beyond the readOnlyHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that immediately states the purpose without any extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and lacks context about the Grasshopper environment, the requirement that the components and parameters exist, and the effect on the definition. It is complete enough for an expert but not for a general user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the parameters, but the schema's property descriptions (e.g., 'Input name or zero-based index.') cover their meanings. Since the schema handles this, the description's lack of parameter detail is acceptable, but it adds no additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and object, 'Create a wire from one component output to another component input,' which specifically distinguishes it from other tools like adding or deleting components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as gh_connect_many or gh_add_component. There is no mention of prerequisites, use cases, or 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.
gh_connect_manyA
Add multiple wires in a single round-trip.
Returns a per-row ``results`` array so partial failures are visible
(each row carries ``status`` and, on error, ``error``).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the minimal readOnlyHint=false annotation, the description discloses meaningful behavior: it returns a per-row results array, surfaces partial failures, and defines the status/error fields on each row. This clarifies the non-atomic failure mode, which is the critical behavioral trait for an agent invoking a batch write. It doesn't describe side effects on the GH document, but the core failure semantics are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that front-load the purpose and add only the essential failure-semantics detail. There is slight internal redundancy ('per-row results array' followed by 'each row carries status and error'), but overall every sentence earns its place and the structure is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rich input schema covers the connections array and stop_on_error structure, and the output schema covers the return shape, so the description rightly focuses on the missing piece: partial-failure behavior. For a batch tool this is nearly complete, though it omits any hint of prerequisites such as needing an open GH document or guidance on batching limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage at the top level, the description should compensate by explaining the connections batch and stop_on_error parameters, but it mentions neither. The nested $defs do carry individual property descriptions, which partially mitigates the gap, yet the description itself adds no parameter-level value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') with a clear resource ('multiple wires') and adds the 'single round-trip' batching context, which inherently distinguishes it from single-connection tools like gh_connect_components. However, it never names the sibling explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a batch use-case through 'multiple wires' and 'single round-trip', giving an agent a reasonable sense of when to call it. But it provides no explicit guidance about when not to use it, no prerequisites, and no named alternative such as gh_connect_components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_data_tree_getBRead-only
Read a component output as a DataTree (list of branches).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description's 'Read' matches that safety profile without contradiction. The description adds a useful detail by explaining that the result is a list of branches, but it does not disclose edge cases like missing component IDs, invalid outputs, or how the optional 'output' parameter behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It communicates the core action and result format immediately, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with an output schema and readOnlyHint annotation, the description is nearly complete: it identifies what to read and what format to expect. It only falls short by not addressing the relationship to the batch or set variants, but that is more of a usage-guidance gap than a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters, but it does not explain 'component_id' or 'output' beyond what the schema shows. 'component_id' and the default of 0 for 'output' are present in the schema, yet the description provides no additional guidance about their meaning or valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Read'), the resource ('component output'), and the expected return format ('DataTree (list of branches)'). It does not explicitly distinguish from the related sibling tools 'gh_data_tree_get_batch' or the set variants, so it loses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to prefer this tool over alternatives such as 'gh_data_tree_get_batch' or 'gh_data_tree_set'. There are no explicit context cues, conditions, or exclusions to help an agent choose among the related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_data_tree_get_batchARead-only
Read multiple component outputs in a single bridge round-trip.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals the safe read-only nature. The description adds meaningful behavioral context by explaining that multiple reads are batched into a single bridge round-trip, which is not evident from the schema or annotation alone. It does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise: one sentence, front-loaded with the action, and every word adds signal. It avoids restating 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?
The output schema and annotations cover return values and safety, and the description covers the batching behavior. However, the lack of parameter semantics and the absence of guidance on how to construct queries leaves meaningful gaps for an agent selecting and invoking this tool, especially given the nested schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate for parameter meaning, but it does not explain what 'component_id' refers to, what 'output' selects, or how the 'queries' array maps to results. The schema provides structure but not semantic 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 ('Read'), a specific resource ('multiple component outputs'), and a distinguishing mechanism ('in a single bridge round-trip'). This clearly separates it from single-output reads like gh_data_tree_get and from write operations like gh_data_tree_set_batch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when multiple component outputs need to be read and batching into one round-trip is desired. However, it does not explicitly name alternatives or state when NOT to use it, such as recommending the single-read variant for one output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_data_tree_setC
Push a DataTree into a component input.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false provided by annotations, the description must disclose more behavioral context, but it only says 'Push' without explaining effects such as overwriting existing input, triggering recomputation, or failure behavior. There is no contradiction with annotations, but the description adds little beyond signaling a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, fluff-free sentence with no wasted words. However, it is under-specified for a tool with a complex nested schema, so the brevity is closer to incompleteness than to effective 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 tool that pushes structured data-tree branches into a component input, the one-sentence description is inadequate. It omits how branches/paths/values are structured, which component fields are needed, and how this relates to sibling set/get batch tools. The output schema exists but does not compensate for missing operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it does not explain component_id, branches, or input parameters. The term 'DataTree' and 'component input' map only loosely to the nested schema fields, leaving the agent to infer the exact required structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Push') and resource ('a DataTree') into a component input, so an agent can understand what the tool does. It does not explicitly distinguish from sibling tools like gh_data_tree_set_batch or gh_data_tree_get, but the write direction and component-input target are 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?
No guidance is given about when to use this tool versus alternatives such as gh_data_tree_set_batch, gh_data_tree_get, or gh_set_parameter. The description provides no context about prerequisites, single-component scope, or cases where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_data_tree_set_batchA
Apply many DataTree assignments at once with a single GH solve.
With ``defer_solve=True`` (default) the GH document is paused while
the assignments are applied and recomputed exactly once at the end —
critical for parameter sweeps where N independent ``set`` calls
would otherwise trigger N solver runs.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the burden of explaining side effects. It discloses that the GH document is paused during assignment and recomputed exactly once, which is genuinely useful behavioral context for a mutation tool. A small gap remains around mid-batch failure behavior, but the core side effect is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose statement, with no filler. The defer_solve explanation earns its place by pairing the mechanism with the motivating use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 nested-schema write tool, the description plus annotations and output schema cover the essential call requirements: what to write, the batching mechanism, and the read-only/write posture. It doesn't spell out that a GH document must exist or how component_id maps to an added component, but sibling tools (gh_add_component, gh_data_tree_get) establish that 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?
Top-level schema coverage is 0%, so the description must compensate; it thoroughly explains defer_solve's behavioral meaning and why its True default matters. The remaining parameters (assignments, component_id, branch path/value structures) are structurally clear and partially documented inside the nested schema defs, so the description doesn't need to re-explain them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Apply many DataTree assignments') on a concrete resource, and the 'many ... at once with a single GH solve' phrasing encodes the batch semantics that distinguish it from the single-assignment sibling gh_data_tree_set. The annotation title 'GH: Write DataTree (batch)' reinforces the write direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly contrasts the tool with N independent 'set' calls and identifies the exact scenario (parameter sweeps) where batching is critical. It also explains the default defer_solve=True behavior as the mechanism that makes the batch path preferable, giving an agent a clear decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_delete_componentBDestructive
Remove a component from the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the destructive nature is covered. The description's 'Remove' is consistent with those annotations and adds the canvas scope, but it does not disclose side effects like whether connected wires are removed or whether the action is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It is concise without being a tautology, though the brevity leaves out useful supporting 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 simple one-parameter destructive tool, the description covers the basic action, and annotations plus output schema provide safety and return information. However, it is still missing parameter semantics and any guidance on side effects, making it minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema defines component_id as a plain string, and the description gives no detail about what this ID refers to, how to find it, or what format is expected. With 0% schema description coverage, the description should compensate but does not, offering only the weak hint that a 'component' is being removed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Remove') and resource ('a component from the canvas'), which gives the agent a clear sense of what the tool does. It is essentially a paraphrase of the tool name, but the 'canvas' context helps distinguish it from Rhino object deletion tools and Grasshopper creation 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?
There is no guidance on when to use this tool versus alternatives such as gh_add_component, gh_component_list, or rhino_object_delete. No prerequisites are mentioned, such as how to obtain a component_id or whether the component must exist before deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_get_parameterBRead-only
Read the current value of a component parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint annotation and does not contradict it. It adds only the context that a 'current value' is being read; no additional behavioral details such as source document, staleness, or side-effect-free guarantees are disclosed, but the annotation already covers the safety profile.
Agents need to know what a tool does to the 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 focused sentence with no filler. The core action and resource are front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with readOnlyHint and an output schema, this is mostly adequate. However, the missing parameter semantics and lack of routing to the paired write tool leave an agent with some ambiguity about how to identify the component/parameter and when to prefer this over related gh_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain component_id or the output parameter beyond what the schema's terse 'Output name or zero-based index' already states. The agent must infer that component_id selects a Grasshopper component and that output selects the specific parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and the resource ('current value of a component parameter'), and the readOnlyHint annotation aligns with this. It does not explicitly differentiate from siblings like gh_set_parameter or gh_data_tree_get, but the read-vs-set contrast is strongly implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as gh_set_parameter, gh_data_tree_get, or gh_component_list. The read-only use case is implied but no explicit when/when-not guidance or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_load_templateC
Open a bundled template on the canvas and return its template_id + parameter map.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only indicate readOnlyHint=false, so the agent knows this is not a pure read operation but gets no destructiveHint coverage. The description says 'Open a bundled template on the canvas' but does not disclose whether it replaces existing canvas content, preserves it, or otherwise mutates the canvas beyond loading. The mutation scope is 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?
The description is a single sentence with no filler, front-loading the action and then stating the return payload. It is appropriately concise and structured, though the missing usage/alternative context is a substantive omission.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 presence of an output schema means return values do not need further elaboration, but the description does not clarify how this tool relates to the near-sibling 'gh_run_template,' nor does it explain the effect of loading on the current canvas. For a mutating tool with only readOnlyHint=false and no other behavioral annotations, this is an important gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-level detail for 'name' or 'canvas_target,' but the input schema already provides useful descriptions for both: name is sourced from gh_template_list, and canvas_target accepts 'active' or 'new.' Since the schema carries the parameter semantics, the description does not need to repeat them, though a brief pointer would have been helpful.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Open a bundled template on the canvas' and clarifies the return value as 'template_id + parameter map.' This is clear and not a tautology. It stops short of a 5 because it does not explicitly distinguish itself from the closely related sibling 'gh_run_template.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as 'gh_run_template' or 'gh_template_list.' The name parameter in the schema points to gh_template_list for valid names, but the description itself does not explain the selection context or say when loading is preferred over running a template.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_new_canvasB
Create a fresh empty Grasshopper canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide readOnlyHint=false, indicating a mutation but not detailing side effects. The description adds minimal context beyond the purpose: it does not disclose whether the current canvas is closed without saving, how the optional name is applied, or what happens to unsaved work. For a document-creation tool, this is a significant behavioral transparency 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?
A single, front-loaded sentence with no redundant words. It delivers the core purpose immediately, and every word contributes 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?
For a simple creation tool, the description is not fully complete: it omits the optional name parameter and any side effects on the current canvas. The output schema may document return values, but behavioral context around creating/replacing a document is missing, which an agent needs to make safe calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'name' (default 'untitled') is described in the schema as 'Document name,' but the tool description makes no mention of it or its effect. With schema description coverage reported at 0%, the description does not compensate, so an agent reading the description alone would not know the new canvas can be named.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Create') and a specific resource ('fresh empty Grasshopper canvas'). It clearly distinguishes from siblings like gh_open_file and gh_load_template, making the tool's role unambiguous. The qualifiers 'fresh empty' further clarify that this starts a blank canvas rather than loading content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for starting a new blank canvas but does not explicitly state when to prefer it over alternatives such as gh_open_file or gh_load_template. No exclusions, conditions, or prerequisite steps are provided, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_open_fileC
Open a Grasshopper definition.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false already signals a state-changing operation, and the description adds no behavioral context beyond that. Critically, it does not disclose what happens to the currently open Grasshopper definition when a file is opened (e.g., replacement, risk of losing unsaved work). No contradiction exists, but the description contributes none of the behavioral disclosure an opening-file action warrants.
Agents need to know what a tool does to the 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, complete sentence with no filler and the verb front-loaded. It is appropriately sized for a one-parameter tool, though the brevity borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a near-identical sibling (rhino_open_file) and a mutation annotation, the description omits the key context an agent needs: which file types it targets versus Rhino documents, and what happens to the current definition on open. The schema documenting 'path' and the existence of an output schema do not compensate for these 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?
The tool description mentions no parameter at all, and the top-level 'args' schema node lacks a description (0% coverage per context signals). Only the nested 'path' property is documented ('Absolute path to a .gh / .ghx file.'), so the description fails to compensate for the coverage gap at the parameter level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Open') and a domain-specific resource ('Grasshopper definition'), which maps cleanly to .gh/.ghx files per the schema. The term 'Grasshopper definition' implicitly distinguishes this from the near-identical sibling rhino_open_file (which opens Rhino documents). However, it relies on domain knowledge rather than naming the alternative, 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 guidance is given for when to use this tool versus rhino_open_file or other gh_* siblings. The description neither states prerequisites (e.g., file existence, an active Grasshopper session) nor exclusions. An agent must infer the use case from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_place_sliderA
Create a Number Slider on the canvas with bounds and initial value.
Returns the new ``component_id`` so subsequent ``gh_connect_components``
or ``gh_set_slider`` calls can target it.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation only declares readOnlyHint:false, and the description confirms a mutating create action while adding a useful behavioral contract: it returns the new component_id for chaining. This goes beyond the annotation by telling the agent how the output will be consumed in later steps. It does not disclose potential side effects like coordinate validation or canvas state requirements, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler: the first sentence states the primary purpose, and the second explains the return value and its follow-up use. This is well front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's write nature and creation role, the description adequately explains the primary purpose and the return contract. It mentions the relevant follow-up tools, which helps an agent plan a multi-step workflow. It could additionally note that a valid Grasshopper canvas is required, but the output schema and existing annotations reduce the need for extensive detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps 'bounds and initial value' to the min/max/value parameters, and the schema itself provides detailed descriptions for all properties inside args. However, schema coverage is reported as 0% at the top-level args parameter, and the description does not mention x, y, name, or decimals. The partial compensation plus the schema's embedded property descriptions make this adequate but not fully self-sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Create a Number Slider on the canvas with bounds and initial value.' This clearly distinguishes it from generic component creation tools like gh_add_component and from modification tools like gh_set_slider. The mention of bounds and initial value uniquely identifies the slider-specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage sequence by noting the returned component_id enables subsequent gh_connect_components or gh_set_slider calls. However, it does not explicitly state when to choose this tool over alternatives such as gh_add_component or gh_set_slider, nor does it mention exclusions/preconditions like needing an open Grasshopper canvas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_plugin_listARead-onlyIdempotent
Enumerate Grasshopper plugin libraries currently loaded.
Returns one entry per ``GH_AssemblyInfo`` library: id, name, author,
version, description, and the on-disk path. Useful for the LLM to
discover whether the user has LunchBox / Ladybug / Kangaroo etc.
installed before attempting to drop in a custom component.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral detail by stating it returns one entry per GH_AssemblyInfo library and emphasizing 'currently loaded,' which clarifies that only plugins loaded in the live session are listed, not merely installed ones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the action first, then the output shape, then the motivating use case. Every sentence adds value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-parameter listing tool with an output schema, the description covers all essential aspects: what is enumerated, what each entry contains, and when an agent should call it. No missing prerequisites, side-effect warnings, or return-value explanations are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains no real parameters—only an empty 'args' object—so there is little for the description to explain. A baseline of 4 applies for zero-parameter tools. The description does not explicitly say 'takes no arguments,' but the schema itself already makes that 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?
The description opens with a specific verb and resource: 'Enumerate Grasshopper plugin libraries currently loaded.' It clearly differentiates from sibling component-oriented tools like gh_component_list and gh_components_search by targeting plugin assemblies rather than canvas components, and it lists the returned fields (id, name, author, version, description, path).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete use case: discover whether the user has LunchBox, Ladybug, Kangaroo, etc. installed before attempting to drop in a custom component. It does not explicitly name alternatives or state when not to use this tool, but the provided context makes the intended invocation scenario clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_preview_toggleA
Toggle preview on/off for a list of components (or all).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals mutation, and the description adds that preview state changes for selected components or all. However, it does not explain whether 'toggle' means flip current state or set it according to the 'enabled' parameter, nor does it describe any side effects or requirements such as needing an open Grasshopper document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes meaning: the action, the target resource, the optional scope, and the 'all' case are all conveyed efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity and existing output schema, the description is mostly adequate, but it leaves ambiguity around the enabled parameter's role and the exact way to target all components. It also does not clarify that this is Grasshopper-specific preview behavior, which could matter given the large sibling toolset.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries the burden. It does add meaning by linking 'on/off' to the enabled boolean and 'a list of components (or all)' to component_ids. However, it does not explicitly explain that null component_ids means all, or that enabled determines the target state rather than toggling based on current state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Toggle preview on/off') applied to a specific resource ('a list of components (or all)'). This distinguishes it from sibling tools like rhino_render_preview or gh_bake_to_rhino because it focuses on Grasshopper component preview state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool rather than alternatives. There is no mention of prerequisites, exclusions, or comparison with similar preview/visibility tools like rhino_viewport_preview or gh_component_list. The intended context is only implied by the name and the word 'components.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_resetADestructive
Reset the canvas (clear cached solution).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as destructive, and the description adds the specific behavior that the cached solution gets cleared. This goes beyond a generic 'reset' by naming what is affected, though it does not clarify whether the definition or canvas contents themselves are also cleared.
Agents need to know what a tool does to the 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 one short, front-loaded sentence with no filler. Every word contributes to explaining the action and its main effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-argument tool with an output schema and annotations already marking it destructive, the description is nearly sufficient. It clearly names the action and target, though it could have clarified that it only clears the cached solution and does not delete the Grasshopper definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema confirms this, so there is no parameter documentation burden on the description. The baseline of 4 applies because no parameter-level clarification is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Reset') and a target ('the canvas'), with a clarifying parenthetical ('clear cached solution') that tells the agent what the reset actually does. It is distinguishable from siblings like gh_new_canvas or gh_run, though it does not explicitly contrast itself with those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'clear cached solution' implies the tool is for situations where a stale or cached Grasshopper solution must be discarded. However, there is no explicit guidance about when to prefer gh_reset over related alternatives such as gh_new_canvas, gh_run, or gh_open_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_runC
Run the current solution.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false, the description only adds that the action applies to the current solution. It does not disclose that running a Grasshopper solution recomputes the graph, may update geometry or baked data, or could be time-consuming. The description does not contradict the annotations, but it adds little beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact and front-loaded with the action verb. However, it is under-specified rather than efficiently detailed: it avoids all useful elaboration, making it minimally adequate but not a model of concise clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an execution-style tool, the description omits prerequisites such as having an active Grasshopper document, side effects of running a solution, and the role of the new_solution parameter. The output schema may describe return values, but the decision context and behavioral impact are not covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description never mentions the new_solution parameter or explains the difference between running the current solution and forcing a fresh one. The schema contains only a bare 'Force a fresh solution' description, so the tool description adds no compensating parameter semantics given the low schema coverage signal.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific action ('Run') and a specific resource ('current solution'), and the title confirms the Grasshopper context. It is not a tautology and is distinguishable from most sibling creation tools, though it does not explicitly differentiate itself from gh_run_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of gh_run_template, gh_reset, or Rhino run commands. There are no conditions, prerequisites, or exclusions, so the agent must infer the intended context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_run_templateC
Force a fresh solution and (optionally) bake the declared outputs.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the readOnlyHint=false annotation: it signals that the tool forces a fresh solution rather than reusing a cached one, and that baking outputs into Rhino is optional. However, it does not disclose potential document mutation implications, what happens to prior solution state, or failure/timeout behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tight sentence with no filler or repetition. It is front-loaded with the primary action, though it errs on the side of being terse given the tool's parameter and workflow 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 the surrounding sibling tools and the required template_id workflow, the description is too thin. It does not explain that the template must first be loaded via gh_load_template, how this differs from running the active definition with gh_run, or what 'declared outputs' refers to operationally.
Complex tools with many parameters or behaviors need more documentation. Simple 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 effectively 0% for the top-level parameter, so the description should compensate by explaining parameters. It only hints at the 'bake' behavior and says nothing about template_id, layer, or timeout_seconds, leaving the agent to rely on the nested schema descriptions for those important details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear action ('Force a fresh solution') and a concrete optional outcome ('bake the declared outputs'), which maps well to running a Grasshopper template. It is understandable in context, but it does not explicitly differentiate gh_run_template from the closely related gh_run or gh_bake_to_rhino 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?
There is no guidance about when to use this tool versus alternatives such as gh_run, gh_load_template, or gh_bake_to_rhino. The workflow dependency on gh_load_template is only implied by the parameter name, and there are no exclusions or conditions for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_save_fileA
Save the active Grasshopper definition.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal write behavior (readOnlyHint: false), and the description's 'Save' matches that. It does not go beyond the annotation to disclose overwrite semantics, failure modes if no default path exists, or whether any confirmation is given, but for a save operation the basic behavior is clear and consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the core operation immediately and leaves details to 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 simple save operation with one optional path parameter, an output schema, and an annotation marking it as a write, the description is largely sufficient. It could mention the default-path behavior or when no active definition exists, but the schema already covers the path default, so the main gap is only the usage guidance captured above.
Complex tools with many parameters or behaviors need more documentation. 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 description adds no parameter-specific detail, but the input schema's path property already explains that it defaults to the open file. Because the schema provides the essential semantics, the lack of extra description is acceptable, though the tool description itself does not guide parameter choice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Save') and a specific resource ('the active Grasshopper definition'), which immediately distinguishes this from Rhino document save tools like rhino_save / rhino_save_as and from gh_open_file. No ambiguity remains about what the tool operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use gh_save_file versus alternatives such as gh_bake_to_rhino, gh_open_file, or rhino_save. The context is implied by the name, but the description does not state prerequisites (an open definition) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_set_panelB
Set the text contents of a Panel component.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, and the description explicitly indicates a mutating operation on a Panel's text, which is consistent. However, it adds little behavioral depth beyond the basic 'set' action—it does not say whether text is overwritten wholesale, whether the component must already exist, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one front-loaded sentence with no filler. It is appropriately concise for a simple tool, though it could have used the saved space to add parameter or usage 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?
The tool is simple and an output schema exists, so return-value documentation is not required. Still, the description omits how to identify the target Panel beyond the schema field name and lacks any guidance on how component_id relates to the broader Grasshopper document, making it minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only sheds light on 'text' ('text contents'); it does not explain component_id's role or how to obtain/format it. The parameter names and titles are self-explanatory at a basic level, but the description does not compensate for the lack of 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 ('set'), a precise resource ('text contents of a Panel component'), and this distinguishes it from sibling gh_set_slider/gh_set_toggle/gh_set_parameter tools. The GH context is reinforced by the title, so there is no ambiguity about which component type is targeted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 choose this tool over alternatives such as gh_set_parameter or gh_set_toggle, nor does it mention prerequisites like obtaining a component_id from gh_component_list. The description only states what the tool does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_set_parameterC
Push a value into a component parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only restates that a value is pushed into a parameter, which aligns with readOnlyHint=false but adds little. It does not disclose whether the parameter is replaced or appended, whether recomputation is triggered, or what happens on invalid typed input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler. The action verb is front-loaded and the resource is clearly stated, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too thin for an agent to safely invoke this tool. It omits how to identify the component, how to name/select the parameter input, and how the typed value maps to Grasshopper data.
Complex tools with many parameters or behaviors need more documentation. Simple 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% at the top level, and the description does not compensate. It does not explain the role of component_id, how input selects a parameter, or how the GhParameterValue discriminated union should be constructed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Push') and a specific resource ('a component parameter'), making the core action clear. It broadly distinguishes itself from getter siblings like gh_get_parameter, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as gh_connect_components, gh_set_slider, or gh_get_parameter. An agent gets no explicit context about prerequisites or conditions that would route it to this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_set_sliderC
Set a Number Slider component to a numeric value.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only set readOnlyHint to false, so the description must carry the behavioral burden. It does not disclose potential side effects, whether the value must be within an existing slider range, or what happens if an invalid component_id is provided. The description adds no behavioral context beyond the mutation implied by 'Set'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or redundant phrasing. It is efficiently structured, though it carries so little detail that the conciseness borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter operation, this is minimally viable: it states the target component and the value to set, and an output schema exists so return-value documentation is not required. However, it omits context about slider domain constraints and how component_id is resolved, leaving notable gaps for an agent invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for missing parameter documentation. It clarifies that the value is numeric, matching the schema type, but it does not explain component_id semantics, such as the expected identifier format or that it must reference an existing slider component.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') with a clear resource ('Number Slider component') and target ('numeric value'), making the operation unambiguous. It does not explicitly distinguish from siblings like gh_place_slider or gh_set_parameter, but the component type is specific enough to avoid most 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 provides no guidance on when to use this tool versus alternatives such as gh_set_parameter, gh_set_toggle, or gh_place_slider. It also does not mention prerequisites like the slider needing to already exist in the Grasshopper document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_set_toggleB
Set a Boolean Toggle component to true or false.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, and the description's 'Set' matches that mutating behavior. However, the description adds no additional behavioral context such as whether the change persists, whether it triggers recomputation, or what happens if the component_id is invalid.
Agents need to know what a tool does to the 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 clear sentence with no filler. The core action is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with an output schema, the action is clear, but the description omits how to identify the target component and any operational context. It is adequate but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The phrase 'to true or false' explains the value parameter, but the required component_id parameter is not described at all. With 0% schema description coverage, the description must compensate but only partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Set' and names the resource 'Boolean Toggle component' with the target values 'true or false'. This clearly distinguishes it from sibling setters like gh_set_slider and gh_set_panel, which target different component types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 or when-not-to-use guidance is given. The description does not mention alternatives such as gh_set_slider, gh_set_panel, or gh_set_parameter, nor does it state prerequisites like the component needing to exist in the Grasshopper document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gh_template_listARead-only
List bundled Grasshopper templates with their parameter contracts.
``available=False`` means the .gh binary has not been shipped yet —
the contract is described in the manifest but loading it will fail
until the binary is placed alongside the manifest.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context by defining the available=False state and explaining that loading will fail until the .gh binary is shipped. This helps the agent interpret list results without attempting doomed loads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core purpose, and every sentence adds value. The available=False caveat earns its place by preventing incorrect assumptions about template readiness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and a readOnly annotation, the description covers the key behavioral nuance that could cause failures. It is slightly incomplete only because it does not mention the relationship to load/run template tools, but this is a minor gap for a simple listing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only an empty args wrapper with no meaningful properties, so there are effectively no parameters to document. The description does not need to add parameter details; the baseline for an effectively zero-parameter tool is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List bundled Grasshopper templates with their parameter contracts.' This clearly identifies what the tool does and distinguishes it from generic listing tools like gh_component_list or gh_plugin_list by focusing on templates and their parameter contracts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as gh_load_template or gh_run_template. There is no mention of prerequisites, exclusions, or a recommended workflow for discovering templates before loading them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_1viewA
Maximize the active viewport to fill the entire viewport area.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It clearly states that the operation maximizes the active viewport and is view-related rather than a model-editing action. It does not mention whether the action toggles back to a multi-viewport layout, but for a simple no-argument viewport command this 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?
The description is a single, focused sentence that front-loads the action and then specifies the target and result. There is no filler, redundancy, or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless viewport command with an output schema present, the description provides the essential info an agent needs to invoke it correctly. It is only missing a brief statement about when to choose this over rhino_3view or rhino_4view, so it is strong but not maximal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is no parameter meaning for the description to add. The baseline 4 applies here because no parameter documentation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a concrete verb ('Maximize') with an identifiable resource ('active viewport') and a clear outcome ('fill the entire viewport area'). It is unambiguous, though it does not explicitly contrast itself with siblings like rhino_3view or rhino_4view, so differentiation relies on name and 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?
The intended use is reasonably implied: use it when the active viewport should be enlarged to fill the screen. However, there is no explicit when-to-use guidance, no mention of alternatives, and no exclusions, leaving the agent to infer selection among the many viewport-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_3viewA
Switch to the three-viewport layout.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry behavioral context. 'Switch to the three-viewport layout' conveys a viewport configuration change and implies a non-geometric UI action, but it does not mention side effects such as preservation of camera positions, undoability, or behavior if already in that layout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to meaning, making it an ideal concise definition for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's trivially simple nature, zero parameters, and existence of an output schema, the description is sufficiently complete for an agent to invoke it correctly. It lacks only deeper behavioral context, but none is essential for a layout switch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The empty input schema fully describes the lack of arguments, and the description does not need to add parameter-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Switch to') and a specific resource ('three-viewport layout'). It is clear and distinguishes itself from siblings like rhino_1view and rhino_4view by explicitly naming the three-viewport layout, though it does not explicitly reference those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: call this tool when you want the three-viewport layout. However, it provides no explicit guidance about when to choose it over rhino_1view or rhino_4view, nor any exclusions or prerequisites. The purpose effectively carries the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_4viewA
Switch to the standard four-viewport layout (Top, Front, Right, Perspective).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It transparently describes the visible result—switching to the four named viewports—which is the core behavioral effect of the tool. It does not mention subtler side effects such as preserving or resetting zoom or the active viewport, but for a simple viewport-layout command this 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?
The description is a single, front-loaded sentence with no filler or repetition. Every word contributes to identifying the action and the exact resulting viewport configuration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 viewport-switching command, the description provides the essential information: the action and the resulting layout. An output schema exists to define return values, so the description does not need to cover those. The only missing context is explicit handling of the current viewport state, but this is a low-complexity tool and the description is otherwise 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 has zero parameters, so there is nothing for the description to document beyond implying a no-argument call. The baseline of 4 for parameterless tools applies, and the description adds no conflicting or redundant parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Switch to') and a specific resource (the standard four-viewport layout), and names the exact viewports (Top, Front, Right, Perspective). This makes the tool unambiguous and distinguishes it from viewport-related siblings like rhino_1view and rhino_3view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is inferable: call this when the user wants the standard four-viewport arrangement. However, the description does not explicitly mention when not to use it or name alternatives such as single-view or three-view layouts, leaving the comparison to sibling tools implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_clipping_planeD
Enter clipping plane creation mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, and 'enter creation mode' discloses almost nothing. It does not say whether the tool blocks waiting for interactive canvas input, requires a prior selection, produces an object, or what side effects it has. The mode-based language strongly implies a non-deterministic, interactive behavior that is left entirely unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, but this is under-specification rather than disciplined conciseness - the single sentence is vague and does not earn its place because it conveys almost no operational information beyond the tool name itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the empty parameter list reduces the documentation burden, the description still fails to explain the interactive mode behavior, what the output represents, or how it relates to the overlapping sibling 'rhino_clipping_plane.' The existence of an output schema helps, but the mode semantics and the distinction from the sibling remain significant 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?
The tool has zero parameters and an empty input schema, so there is no parameter documentation burden for the description to carry. Per the baseline for 0-parameter tools, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Enter clipping plane creation mode' is nearly a tautology of the tool name 'rhino_add_clipping_plane' - both convey the same idea of creating/adding a clipping plane. It adds only the word 'mode,' which hints at an interactive workflow, but it never states what a clipping plane is, what creating one entails, or how this differs from the sibling 'rhino_clipping_plane.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 zero guidance on when to use this tool versus alternatives. Notably, a sibling tool 'rhino_clipping_plane' exists and no distinction is made between the two - an agent cannot determine whether this mode-entry tool or the sibling performs the actual clipping plane operation. No context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_control_pointA
Add a control point to the end of a selected NURBS curve in the U direction.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It states the core side effect (adds a control point to the end) and the prerequisite (a selected NURBS curve), but does not disclose whether the curve is modified in place, how the selection is resolved, or any failure conditions. The primary mutation is clear, though.
Agents need to know what a tool does to the 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. Every word contributes either the target, the position, or the prerequisite, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with an output schema, this is nearly complete: it identifies the object type, selection state, and insertion location. It would be stronger with an explicit note about modifying the original object or requiring an active selection, but the simplicity of the tool and presence of the output schema cover most gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameter descriptions to supplement. The description adds the essential implicit parameter: the operation applies to a selected NURBS curve at its U-direction endpoint, which is exactly the guidance an agent needs when no explicit arguments are accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a precise verb ('Add') and names the specific resource ('control point'), the target ('selected NURBS curve'), the position ('to the end'), and the direction ('U direction'). This clearly distinguishes it from siblings like rhino_remove_control_point and rhino_set_control_points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 only usage cue is the operation itself — an agent can infer it should be used when a control point needs to be appended to a NURBS curve. It does not explicitly state when to prefer it over rhino_set_control_points or rhino_edit_points_on, nor does it mention exclusions or prerequisites beyond selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_dimension_angularB
Enter angular dimension placement mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It indicates a modal interaction ('placement mode') but does not explain whether an object is created, whether user input is required, what happens after placement, or whether the command is destructive 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 a single, well-structured sentence with no filler. It front-loads the action and is appropriately sized for a zero-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?
For a zero-parameter tool with an output schema, the description does not need to document return values, so the main gap is behavioral context. The phrase 'placement mode' is ambiguous about whether the tool requires interactive user input or simply creates an angular dimension, making the description 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 tool has zero parameters, so the baseline is 4. There are no parameter semantics for the description to clarify, and the empty input schema already conveys that the tool takes no arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Enter') and identifies the resource ('angular dimension placement mode'), which distinguishes it from linear, aligned, ordinate, and radial dimension siblings. It stops short of a 5 because it does not state the resulting outcome or how the mode affects the document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_dimension_angular or other dimension-placement tools. No prerequisites, selection requirements, or exclusions are mentioned, leaving the agent to infer appropriate use from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_dimension_linearB
Enter linear dimension placement mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself, but it only states that a placement mode is entered. It does not say what happens next, whether a dimension is immediately created, whether the command blocks awaiting user clicks, or what state changes occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one short sentence and is front-loaded with the essential action and resource. There is no redundant wording or structured fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument mode-entry tool, the description gives the bare minimum needed to know what command to invoke. However, it lacks context about the interactive nature of placement mode and does not mention how this relates to other dimension tools, leaving the agent to guess about the resulting behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema covers them completely, so the description does not need to add parameter documentation. The baseline for a no-parameter tool is therefore appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action ('enter placement mode') and resource ('linear dimension'), so an agent can tell it is not adding an angular, aligned, or radial dimension. It remains slightly ambiguous whether this creates a dimension or starts an interactive mode, and it does not distinguish itself from the similarly named rhino_dimension_linear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to choose this tool over alternatives such as rhino_dimension_aligned or rhino_dimension_linear. There is no mention of prerequisites, workflow context, or whether the user must interact with the Rhino viewport after the mode starts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_dimension_ordinateC
Enter ordinate dimension placement mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to indicate safety or side effects, the description carries full burden. It only mentions entering a mode, without disclosing whether this creates objects, modifies the document, or requires user interaction. No behavioral implications are 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?
The description is a single, focused sentence with no unnecessary words. It is exceptionally concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides only a minimal phrase without context about the mode's purpose, duration, or what happens after entering it. It lacks crucial operational details that a user or agent would need to understand the tool's function fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description does not need to explain parameters because they do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (enter placement mode) and the object (ordinate dimension), which is specific enough. However, it lacks the additional clarity of naming the resource type explicitly (e.g., 'dimension') and could be more explicit about what 'mode' entails, so it is not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like rhino_add_dimension_linear or rhino_add_dimension_angular. The agent is left without context to choose this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_dimension_radialB
Enter radial (radius) dimension placement mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavior. It indicates the tool enters a placement mode, but it does not disclose that this is likely an interactive operation requiring user input, whether it creates an object, or what the tool returns. The behavioral surface is therefore largely unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It communicates the core action efficiently and is appropriately sized for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool, the description covers the basic purpose adequately. However, it omits important context about the interactive nature of dimension placement mode, what the user or agent should expect after entering the mode, and whether any geometry selection is required first. The output schema exists, but behavioral context is still thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty, so there is nothing for the description to add about parameter semantics. The baseline for zero-parameter tools is 4, and no deduction is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it enters radial/radius dimension placement mode. This clearly distinguishes it from sibling dimension tools like linear, aligned, angular, and ordinate dimensions. It stops short of a 5 because it does not explicitly name those alternatives, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus other dimension tools such as rhino_add_dimension_linear or rhino_add_dimension_angular. The description only states what the mode is, leaving the agent to infer when it should be invoked. No exclusions, prerequisites, or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_directional_lightC
Add a directional light to the scene.
Args:
direction_x, direction_y, direction_z: Light direction vector.
| Name | Required | Description | Default |
|---|---|---|---|
| direction_x | No | ||
| direction_y | No | ||
| direction_z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only restates the mutation ('Add a directional light to the scene'). It says nothing about coordinate system, default orientation, side effects, or whether existing lights are affected. No contradiction with annotations exists, but almost no behavioral context beyond the action is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and contains no filler: a one-sentence purpose followed by a parameter line. It is easy to scan, though the parameter section is thinner 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?
Although an output schema exists, this is a mutation tool with no annotations and no direction-convention guidance. It also lacks differentiation from the many other lighting-related sibling tools, so an agent lacks enough context to invoke it correctly in all situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The line 'direction_x, direction_y, direction_z: Light direction vector' is the only parameter documentation and at least groups the three values into a meaningful vector concept. However, it omits the coordinate system, normalization expectations, and how the default (0,0,-1) relates to scene orientation, so it only partially compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Add a directional light to the scene'), clearly stating what the tool does. The noun 'directional light' inherently separates it from point and spot light siblings, though it never explicitly names an alternative, 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 guidance is provided on when to use this tool versus rhino_add_point_light, rhino_add_spotlight, or rhino_light_add. There are no exclusions, prerequisites, or context cues; an agent must infer the intended use from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_dotC
Add a small text dot annotation at a 3D location.
Args:
text: Dot label text.
x, y, z: Location coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It discloses the creation side effect ('Add'), but does not mention coordinate system, units, layer behavior, visibility, or whether an object is actually created in the document. This is a thin description for a mutation tool with no annotation safety signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded: the core purpose appears in the first sentence, followed by a compact parameter list. Every sentence earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter tool with an output schema, the basics are present. However, with no annotations and no differentiation from sibling text/dot/point tools, the agent lacks important context about coordinate conventions and when this specific operation is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only paraphrases the parameter names: 'Dot label text' and 'Location coordinates.' This adds little beyond the schema titles and provides no detail about units, coordinate space, integer semantics, or behavior when text is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Add a small text dot annotation at a 3D location.' It identifies the verb (add), the resource (text dot annotation), and the location context. However, it does not distinguish this tool from closely named siblings like rhino_text_dot or rhino_add_text, so it misses the differentiation needed for 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 guidance is given about when to use this tool versus alternatives such as rhino_text_dot, rhino_add_text, or rhino_add_point. The usage context is only implied by the name and description, with no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_hatchB
Add a hatch fill to a selected closed curve.
Args:
hatch_pattern: Hatch pattern name (e.g. 'Solid', 'Grid', 'Dots').
scale: Pattern scale factor.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| hatch_pattern | No | Solid |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It only states the basic mutation without explaining what happens if no curve is selected, whether the curve must be planar, how pattern names are validated, or what side effects occur in the Rhino document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the core action and prerequisite, and uses a short Args list for the two parameters. There is no filler or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic action and prerequisites, and the presence of an output schema reduces the need to document return values. However, important operational context is missing, such as failure behavior for invalid selections, pattern availability, and relationship to the similar rhino_hatch sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of parameter meaning. It gives a brief definition for each parameter and useful examples for hatch_pattern, but it leaves out valid pattern enumeration, scale constraints, and what values are appropriate beyond the 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 clear action ('Add'), a specific resource ('hatch fill'), and a target ('selected closed curve'). It does not explicitly differentiate itself from the sibling rhino_hatch tool, but the intended operation is otherwise unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by requiring a selected closed curve, but gives no explicit when-to-use guidance, exclusions, or alternatives. With sibling rhino_hatch available, an agent gets no help deciding between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_leaderB
Enter leader annotation placement mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining behavior. It does reveal that the tool enters an interactive 'mode,' which is useful, but it does not explain what happens after entering the mode, whether user interaction is required, how the mode is exited, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. The core action and object are front-loaded, and every word contributes 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?
For a tool with no annotations and no parameters, the description is minimal but leaves an important gap: it is unclear whether this is a blocking interactive mode, a toggle, or a command that simply starts a placement workflow. The presence of sibling tools like rhino_leader makes the lack of disambiguation more consequential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter ambiguity for the agent. The description does not need to add parameter-level semantics because the schema already fully covers an empty input contract.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific action ('Enter ... placement mode') and a specific resource ('leader annotation'), so an agent can tell this is about placing leader annotations. However, it does not distinguish this tool from the sibling rhino_leader, which likely refers to the same concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_leader, rhino_annotation_callout, or the various dimension tools. It also does not mention prerequisites or expected workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_objects_to_blockA
Add currently selected objects to an existing block definition.
Args:
name: Block definition name to add objects into.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention side effects such as whether selected objects are removed from the model, whether block instances are updated, or whether the operation is reversible. This is a meaningful gap for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the primary action. It contains no filler and every sentence contributes to understanding what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return values need no explanation. However, because there are no annotations and the tool mutates a block definition, the description should provide more context about selection requirements, side effects, and failure behavior to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the only parameter: 'name: Block definition name to add objects into.' This adds meaningful context beyond the raw schema, though it omits any constraints like case sensitivity or name format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add currently selected objects to an existing block definition.' This clearly distinguishes the tool from sibling block operations like block creation, insertion, or redefinition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the intended use: when you have selected objects and an existing block definition. However, it does not explicitly state when to prefer this over alternatives such as rhino_block_redefine or rhino_block_define, nor does it mention prerequisites like having a current selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_pointA
Add a single point object at the given coordinates.
Args:
x, y, z: Point coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only states the action and coordinates; it does not mention side effects (e.g., adding to the document), return values, coordinate system, units, or error conditions. This is limited transparency for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no unnecessary words. It is concise and directly conveys the essential information without redundancy or ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool, the description provides the core information, but it omits context such as the returned object (since an output schema exists), the coordinate system (world vs. local), and units. This leaves some gaps for an agent needing full contextual understanding, but the simplicity of the operation mitigates the impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already defines x, y, z as integer coordinates with defaults. The description adds 'Point coordinates' which reinforces but does not significantly expand on the schema. Since all parameters are covered by the schema, the addition is useful but minimal, meriting a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Add a single point object at the given coordinates.' It uses a specific verb and identifies the resource (a point object), distinguishing it from related tools like rhino_add_control_point and rhino_add_point_cloud even though alternatives are not 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?
The description explains what the tool does but does not provide explicit guidance on when to use it versus similar point-creation tools. No alternative tools are mentioned, and no context is given for choosing this over others, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_point_cloudC
Add a point cloud object from a list of 3D coordinates.
Args:
points: List of (x, y, z) tuples.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says a point cloud is added; it does not disclose coordinate system, units, document requirements, replacement behavior, or any side effects beyond creating the object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, direct, and front-loaded with the action. The Args block is useful and there is no filler, though the brevity leaves behavioral and usage context to other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and only a one-line action, this is close to minimally documented. It does not explain when the tool applies, how coordinates are interpreted, or what result to expect. For a creation tool, this leaves important call context to 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?
The description documents that points is a list of (x, y, z) tuples, giving structure beyond the bare schema. However, the schema declares points as type string, so the actual wire encoding is ambiguous and the description does not resolve that mismatch.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Add'), a resource ('point cloud object'), and the input source ('list of 3D coordinates'). It is distinguishable from siblings like rhino_add_point by the point cloud resource, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool vs rhino_add_point/rhino_point or other creation tools. There are no prerequisites, exclusions, or alternative routing, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_point_lightA
Add an omnidirectional point light at the specified location.
Args:
x, y, z: Light position.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the additive action and the location, but it does not mention whether a document must be open, coordinate system/units, side effects, or whether the created light is returned, which is a significant 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?
The description is a single front-loaded sentence followed by a compact parameter list. There is no redundancy or filler; every word contributes to understanding the tool's purpose and parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 additive tool with an output schema, the description is minimally adequate but misses contextual details such as needing an active Rhino document and the units/coordinate system for the position. It also does not mention how it relates to the other light-creation sibling tools beyond the implicit type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It does add meaning by explaining 'x, y, z: Light position,' which connects the parameters to spatial placement. However, it does not clarify units, coordinate frame, or any constraints beyond the schema's integer type 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 uses a specific verb-resource pair: 'Add an omnidirectional point light at the specified location.' The qualifier 'omnidirectional point light' clearly distinguishes it from sibling light tools like rhino_add_directional_light and rhino_add_spotlight, so an agent can tell exactly what this tool creates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the phrase 'omnidirectional point light' but does not explicitly state when to prefer this over sibling light tools. It provides no exclusions or alternative guidance, though the type of light is self-identifying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_spotlightA
Add a spotlight to the scene.
Args:
x, y, z: Spotlight position.
target_x, target_y, target_z: Target/aim point.
radius: Spotlight cone radius.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| radius | No | ||
| target_x | No | ||
| target_y | No | ||
| target_z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of disclosing behavior. It only says 'Add a spotlight' and lists parameters; it does not mention coordinate system, document requirements, units or semantics of radius, whether a document must be open, or potential side effects. For a mutation tool with no annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, front-loaded with the core action, and uses a clean argument list. Every sentence contributes useful information, with no fluff or repetition of the schema's default values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 what the tool does and what each parameter means, and an output schema exists, so return values need not be explained. However, it lacks usage guidance and clear specification of radius semantics and coordinate conventions, leaving an agent to make assumptions about how to properly configure the spotlight.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by assigning meaning to every parameter: x/y/z as position, target_x/y/z as the aim point, and radius as the cone radius. This is valuable semantic information the schema alone lacks, though 'cone radius' remains somewhat ambiguous regarding units or angle.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Add a spotlight to the scene.' This clearly distinguishes it from sibling light tools like rhino_add_point_light and rhino_add_directional_light. The verb-resource pair is unambiguous and directly tied to the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use a spotlight versus point or directional lights, nor any exclusions or prerequisites. An agent must infer the choice from the tool name alone. The description provides no context for selecting this tool over its nearby siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_textB
Add a 3D text annotation object at a specific location.
Args:
text: The text string to display.
x, y, z: Insertion point coordinates.
height: Text height in model units.
font: Font face name.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| font | No | Arial | |
| text | Yes | ||
| height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals that the tool creates a text annotation, but does not explain coordinate system assumptions, font handling, z-axis orientation, or effects on the current document. Side effects and return behavior are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with a clear purpose sentence followed by a concise Args list. Every line adds meaning and there is no filler. It is slightly repetitive with the schema titles but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with an output schema, the description covers the essential input semantics and even notes model units for height. However, it lacks sibling differentiation and behavioral context such as placement conventions and coordinate system assumptions, leaving some inference to the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by explaining each parameter: text, insertion point coordinates, height in model units, and font face name. It adds useful semantics beyond the schema, though it could clarify coordinate conventions or font fallback behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: adding a 3D text annotation object at a specific location. It is clear and matches the tool name, but it does not differentiate this tool from the similarly named sibling rhino_add_text_object or rhino_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_add_text_object or rhino_text. No exclusions, prerequisites, or conditions are provided. The intended usage is only implied by the action description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_add_text_objectC
Add a text object via Rhino command.
Args:
text: Text string.
x, y, z: Insertion point.
height: Text height.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| text | Yes | ||
| height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining side effects, coordinate systems, units, object placement behavior, or whether the command modifies the document. None of these are mentioned beyond a minimal 'add' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, with no redundant filler. Each parameter is listed compactly. It loses a point for the vague phrase 'via Rhino command', which adds little value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse to fully equip an agent to use the tool correctly. It omits information about units, text style, layer behavior, return value, and relationship to similar text-creation tools. The presence of an output schema does not compensate for these 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?
The description gives one-line meanings for all parameters (text string, insertion point, height), but lacks important semantic details such as units, coordinate system, defaults, allowed ranges, or how height interacts with text size. This is only slightly more informative than a bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a text object') and the resource ('text object'), and identifies the key parameters. It is slightly generic with 'via Rhino command' but still unambiguous about the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus related tools such as rhino_text, rhino_add_text, or rhino_text_dot. The agent receives no information about prerequisites, preferred contexts, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_alignC
Align selected objects in a given direction.
Valid directions: Left, Right, Top, Bottom, Vertical, Horizontal,
Center, Middle.
Args:
controller: RhinoController instance.
direction: Alignment direction keyword.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | Left |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It mentions inputs and a return dict but does not state that the tool modifies object positions, what happens with no selection, whether the operation is reversible, or any other behavioral side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the purpose is front-loaded, the valid directions are clearly listed, and the Args/Returns sections are compact. No filler or redundant prose is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema, the description covers the direction values and general operation. It is minimally adequate, but missing details about the selection prerequisite, the exact alignment behavior for each direction, and error handling leave it incomplete for confident autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for the schema's 0% coverage by listing the valid direction keywords and indicating the direction parameter's purpose. However, it also mentions a 'controller' argument that is not present in the input schema, creating potential confusion about the actual callable interface.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Align selected objects') and enumerates the valid alignment directions. It clearly communicates what the tool does, though it does not explicitly differentiate it from sibling tools like rhino_align_mesh_vertices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as rhino_move, rhino_distribute, rhino_orient, or rhino_align_mesh_vertices. The only implied usage is that it operates on selected objects, but no explicit context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_align_mesh_verticesB
Align mesh vertices that are within the given tolerance of each other.
Args:
controller: RhinoController instance.
tolerance: Distance tolerance for vertex alignment.
| Name | Required | Description | Default |
|---|---|---|---|
| tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must disclose behavioral traits, but it only says vertices are aligned without explaining what 'align' actually does to the mesh, whether the operation is destructive, or what side effects occur. A mutation tool with no mention of selection requirements, reversibility, or output behavior leaves too much unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main behavior, and uses a readable Args block. The inclusion of the controller argument, which does not appear in the input schema, adds minor noise, but overall the structure is efficient and not 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?
The description omits essential context about how the target mesh is specified, whether the operation applies to a selection, and what happens to the mesh after alignment. With no annotations and only a tolerance parameter in the schema, an agent cannot confidently invoke this tool without additional implicit knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description defines tolerance as 'distance tolerance for vertex alignment,' which adds real meaning beyond the bare schema property. Although the schema has 0% description coverage, the description compensates fully for the single tolerance parameter; the 'controller' parameter mentioned in the description is not present in the schema, which causes slight confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('align') on a specific resource ('mesh vertices') with a defined criterion ('within tolerance'). This distinguishes it from the generic rhino_align sibling, though it does not explicitly contrast it with closely related mesh-repair tools like rhino_weld_mesh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool instead of alternatives, nor does it state any prerequisites such as which mesh is selected or how the target mesh is identified. The large sibling list includes similar mesh modification tools, but the description offers no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_angleB
Measure the angle between two lines (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the operation is 'interactive' (a genuinely useful signal that the agent will need user input) and that it returns a dict, but it does not explain what interaction entails (e.g., selecting two lines in the viewport), whether the operation is read-only, what units the result uses, or whether a document with valid geometry must be open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose sentence, followed by a cleanly structured Args/Returns docstring. It earns its keep with minimal waste, though the 'Dict with command result' return boilerplate is low-information and the controller argument documentation is redundant given the empty 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 simple 0-parameter tool with an output schema present, the description covers the essentials: what it measures and that it is interactive. But it leaves gaps in interaction specifics (what the user must pick), result semantics (unit of the angle), and use-case context relative to the large sibling set. Adequate but not complete for an agent with no other clues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters in the input schema, so the baseline is 4 per the rubric; there is nothing for the description to elaborate on. However, the description's Args section documents 'controller: RhinoController instance,' which is not in the schema and is likely an internally injected dependency rather than a real agent-facing parameter — a minor inconsistency that does not harm the call contract.
Input schemas describe structure but not intent. Descriptions should explain 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 ('measure') and resource ('angle between two lines'), which is clear enough to convey the core function. The '(interactive)' qualifier adds useful scope context, and the resource is specific enough to distinguish it from measurement siblings like rhino_draft_angle or rhino_curve_continuity, though it 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?
There is no guidance on when to use this tool versus the many related siblings such as rhino_draft_angle, rhino_dimension_angular, or rhino_curve_continuity. The word 'interactive' implies the user will be engaged, but no context is given about when this is the right choice or when another angle-related tool would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_annotation_calloutC
Add a callout (leader + balloon or boxed label).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already flags this as a mutating operation, and the description's 'Add' is consistent. The description adds modest structural context (balloon vs boxed label) but does not disclose where the object is created, that it targets the active document by default, or any side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short, front-loaded, and contains no filler; the parenthetical adds genuinely useful structural detail. It is appropriately sized for a simple creation tool, though it could convey more without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the tool is a creation operation, the description is still too thin. It omits the essential knowledge for correct invocation: how target_point and leader_origin relate geometrically, which is the core usage detail for a callout tool. An agent would likely need to infer this from the sibling names and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage claimed, the description carries the burden of explaining parameters, but it only hints at 'style' via 'balloon or boxed label'. It does not clarify the critical distinction between target_point and leader_origin, nor text, layer, or doc_id semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('a callout') and clarifies the artifact's structure ('leader + balloon or boxed label'), which helps distinguish it from plain leader tools like rhino_leader. It is clear, though it does not explicitly name or differentiate from sibling annotation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as rhino_leader, rhino_add_leader, rhino_text, or other rhino_annotation_* tools. There is no mention of when a callout is preferred over a plain leader or text label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_annotation_dimension_styleC
Register a reusable dimension style (bridge only — Rhino DimStyle table).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false, so the mutating nature is established. The description adds context beyond annotations: 'bridge only' clarifies it is not the native Rhino command, and 'Rhino DimStyle table' identifies the storage target. It does not disclose duplicate-name behavior or overwrite semantics, but with annotations covering the safety profile this is an acceptable 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?
A single front-loaded sentence with zero filler. Every clause earns its place, and the key qualifier ('bridge only') appears early. Slightly more substance would improve it, but as a concise statement it is well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating creation tool with a near-homonym sibling (rhino_dimension_style) and 0% schema description coverage, this is too thin. It does not clarify conflict behavior, prerequisites, or how this tool relates to the sibling. The output schema covers return values, but the missing usage and behavioral context leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It mentions none of them — not even that 'name' is required, or what color, arrow_size, and text_height control. The agent is left to infer meaning from parameter names and default values in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Register') and a specific resource ('reusable dimension style'), and flags the bridge-only scope targeting the Rhino DimStyle table. This partially differentiates it from the closely named sibling rhino_dimension_style, though it never names that alternative or explains the exact relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 or when-not-to-use guidance is given. The parenthetical '(bridge only)' hints at a scope distinction from the native Rhino tool, but the description never names the alternative (rhino_dimension_style) nor states the condition that selects this tool. An agent must infer when the bridge-specific registration path is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_annotation_north_arrowA
Draw a north arrow centred on location.
``angle_deg`` rotates the arrow clockwise from world +Y so callers can
adapt to a site whose true north differs from grid north.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a write operation (readOnlyHint: false), and the description adds useful behavioral detail: the arrow is centered on location, and angle_deg rotates it clockwise from world +Y, which is non-obvious and important for site-north adjustments. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences. The main action is front-loaded, and the only extra detail—the rotation convention—is directly relevant to correct invocation. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple annotation-creation tool with an output schema and default values in the input schema, the description covers the core action and the key non-obvious behavior. It does not enumerate optional fields, but those are documented in the schema, so nothing critical is missing for an agent to call this 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 reported as 0%, so the description must compensate. It does explain the two semantically rich parameters: location is the center point, and angle_deg rotates clockwise from world +Y. However, it leaves size, layer, style, name, and doc_id to the schema/defaults, so it only partially carries the parameter-documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Draw a north arrow centred on location.' This unambiguously identifies the tool's function and distinguishes it from sibling annotation tools like scale bars, callouts, and dimensions, which create different objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: if an agent needs a north arrow annotation, this is the tool. However, the description does not explicitly state when to prefer this over other annotation tools, nor does it mention siblings such as rhino_annotation_scale_bar. There are no exclusions or alternative conditions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_annotation_revision_cloudA
Draw a revision cloud (bumpy polyline) around a region of interest with a revision label.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide readOnlyHint=false, indicating a mutation. The description adds useful behavioral context by explaining what a revision cloud is ('bumpy polyline') and that it includes a revision label. The schema parameters (bump_count, bump_radius, revision_no) further disclose shaping behavior, so the description supplements the annotation without contradicting 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?
The description is a single focused sentence that states the tool's purpose and key visual characteristics. It's appropriately concise; though it could front-load the revision label aspect, it earns its place with the parenthetical clarification about the polyline appearance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple creation tool with one nested object parameter, and the output schema exists. The description adequately conveys the purpose, but it doesn't mention whether the revision cloud is added to a drawing sheet or model space, how the label is rendered, or any layer/visibility defaults. This is acceptable for a drawing annotation tool but leaves some usage questions open.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries the burden, but it only explains the overall concept. It doesn't explain what boundary_points means, what bump_count/bump_radius control visually, or what revision_no is for. The param names and schema defaults are self-explanatory to some degree, but the description adds no parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Draw') and resource ('revision cloud (bumpy polyline) around a region of interest with a revision label'). This distinguishes it from general annotation tools like text, dimensions, and north arrows, though it doesn't explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is for marking changed regions on drawings with a revision label, which is a standard drafting use case. However, it doesn't explicitly state when to choose this over other annotation tools (e.g., rhino_text_dot, rhino_hatch, rhino_leader) or mention prerequisites like needing a drawing sheet or active document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_annotation_scale_barA
Draw a divided scale bar with a label.
Bar is drawn in document units; the label reports the represented
real-world distance based on ``scale_denominator``.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false and title 'Add Scale Bar', so the creation behavior is expected. The description adds beyond annotations by clarifying that the bar geometry uses document units while the label displays real-world distance derived from scale_denominator. It does not disclose details such as label formatting or how the object is inserted into the document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the action first and the key unit-conversion detail second. No filler or repetition of schema 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 creation tool with an output schema and annotations, the description plus schema is nearly complete: it clarifies the crucial scale-bar unit semantics and leaves parameters to self-explanatory names and constraints. Minor gaps such as exact label text or layer behavior are not critical 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?
With 0% schema description coverage, the description is the main source of semantic meaning, and it explains the important relationship between document units, real-world distance, and scale_denominator. However, it leaves location, divisions, label_height, and total_length to be inferred from their names and schema defaults, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Draw') and a concrete resource ('a divided scale bar with a label'), which clearly identifies the tool's function. This distinguishes it from sibling annotation tools like north arrows, revision clouds, and callouts because a divided scale bar is a unique object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over alternatives such as rhino_annotation_callout or dimension tools. It explains unit behavior but does not state prerequisites, exclusions, or typical scenarios like adding a scale bar to a plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_arcB
Add an arc by centre, radius, and sweep angle (in degrees).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, and the description's 'Add' action is consistent with that. However, the description adds no behavioral context beyond the mutation hint, such as active document behavior, layer creation, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action and core inputs front-loaded. Every word earns its place; no repetition of the title or schema noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with an output schema and a mutation annotation, the description is minimally viable: an agent can construct the required args. It is incomplete for selection among many sibling creation tools, especially rhino_cmd_arc, but the schema fills most invocation 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?
The description names the three core parameters (centre, radius, sweep angle) and clarifies degrees, which partially compensates for the 0% top-level schema description coverage. It adds no constraint details and omits the optional name, layer, and doc_id parameters, though the nested schema documents them.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Add'), a resource ('an arc'), and the defining construction inputs (centre, radius, sweep angle in degrees). It is clear, but it does not differentiate from sibling tools such as rhino_cmd_arc, so it misses the top distinction criterion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose this tool over alternatives like rhino_cmd_arc, rhino_circle, or the many other curve-creation tools. The construction method is implied by the parameter list, but there is no explicit context, prerequisite, or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_areaARead-onlyIdempotent
Compute the surface area of a mesh (Brep area requires bridge).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds a meaningful behavioral constraint beyond annotations: the tool computes area for meshes only, and Brep area requires a bridge—this tells the agent that passing a Brep object_id will not work as expected. No contradiction with annotations; the description complements them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with a parenthetical note—every word earns its place and the main action is front-loaded. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query tool with an output schema present, the description covers the essential domain constraint (mesh-only) and the annotations cover safety and idempotency. The main gaps are not naming a concrete alternative for Brep area and not mentioning units of the returned area, but these are minor given the annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, though doc_id actually has an inline description; object_id is only labeled 'Object Id.' The description's 'of a mesh' adds the crucial semantic that object_id should reference a mesh object, which is genuinely useful. However, it doesn't clarify doc_id semantics or the expected output, 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 description uses a specific verb and resource: 'Compute the surface area of a mesh,' which is clear and unambiguous. The parenthetical '(Brep area requires bridge)' adds scope and hints at a limitation, distinguishing it from Brep-related area tools like rhino_cmd_area and rhino_area_centroid. However, it does not explicitly name a sibling tool, so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical implies the tool is intended for meshes and that Brep inputs are out of scope ('Brep area requires bridge'), which gives the agent a condition for when not to use it. But it stops at implication—it doesn't explicitly name an alternative tool or state 'use X for Brep area.' No explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_area_centroidA
Calculate the area centroid (centre of mass) of selected surfaces.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing centroid coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the tool returns a dict with centroid coordinates and implies a read-only calculation, but it does not explain behavior when no surfaces are selected, whether multiple surfaces produce a combined centroid or individual results, or any error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and the purpose is front-loaded, but the 'Args: controller' line is redundant and inaccurate given the empty input schema. Not 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 zero-parameter query tool with an output schema, this is close to sufficient: the purpose and return type are stated. However, it lacks important operational context about the selection prerequisite, behavior with no selection, and whether multiple surfaces yield one combined centroid or per-surface centroids.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so the baseline is 4; however, the description lists 'controller: RhinoController instance' under Args even though no such parameter appears in the schema. This phantom argument adds noise and could mislead an agent into passing an unsupported parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Calculate the area centroid (centre of mass) of selected surfaces.' This distinguishes it from related tools like rhino_area (area only) and rhino_volume_centroid (volume centroid).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'of selected surfaces' implies that surfaces must already be selected, but the description never explicitly states this prerequisite or when to prefer this tool over alternatives such as rhino_area or rhino_volume_centroid. Usage context is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_array_linearC
Array objects along a vector with constant spacing.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is minimal and does not disclose behavioral details beyond what the annotations provide. The annotations include readOnlyHint=false, indicating this is a mutating operation, but the description does not explain effects such as whether the original objects are retained or replaced, whether the array is created in the active document, or any limitations such as maximum count or spacing constraints. The schema does provide some constraints (e.g., count max 1024), but those are structured data, not behavioral transparency in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently states the core operation. It is appropriately short and front-loaded, but it may be too terse given the lack of parameter and usage details. It earns a 4 because it is concise and not bloated, but it leaves out important 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?
Given the tool's complexity (one input object with 5 fields), the description is incomplete. It lacks information about the direction vector format, the meaning of spacing, count limits, and how it relates to sibling array tools. The annotations indicate mutation but not the effect on the original objects. The output schema exists but is not described; however, the description need not explain return values. Still, the missing usage and parameter semantics make the tool hard to invoke correctly without inspecting the schema deeply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any parameters. The schema itself defines parameters with titles but only a couple have descriptions (e.g., doc_id, direction's z component). The description adds no semantic meaning about what 'direction', 'spacing', 'count', or 'object_ids' mean in the context of a linear array. Because the description lacks parameter explanations and the schema has poor coverage, the tool definition provides insufficient guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Array objects along a vector with constant spacing' clearly states the verb ('Array') and the resource ('objects'), and identifies the operation as a linear array along a vector. It does not explicitly distinguish from sibling tools like rhino_array_polar or rhino_array_rectangular, but the phrase 'linear' and 'vector' in the tool name and description make the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for creating linear arrays, but it does not provide explicit guidance on when to use this tool versus alternatives such as rhino_array_polar or rhino_array_rectangular. The description mentions 'constant spacing' which is a useful context, but no exclusions or alternative tool names are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_array_on_curveB
Array selected objects along a curve.
The curve must be selected after the objects (interactive).
Args:
controller: RhinoController instance.
count: Number of copies along the curve.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose the interactive selection-order requirement, which is genuinely valuable for an agent. However, it does not state whether the original objects are preserved, whether copies are grouped, how spacing is determined, or what happens if no curve is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the purpose directly. The Args/Returns formatting is clear and scannable, with only minor redundancy from the docstring-style header lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the most critical operational detail — interactive selection order — is present. The main gaps are lack of differentiation from rhino_replicate_along_curve and no statement about whether originals are retained. The definition is passable but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple 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 defines count as 'Number of copies along the curve,' which adds meaning beyond the bare schema field, though it is mildly ambiguous whether count includes the original object. It also documents the controller argument, which does not appear in the schema at all.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Array selected objects along a curve.' This clearly communicates the operation and inherently distinguishes it from linear, polar, and rectangular array siblings. However, it does not explicitly name or contrast itself against the similar rhino_replicate_along_curve 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?
The description provides an operational prerequisite — 'The curve must be selected after the objects (interactive)' — which is useful context for calling the tool. But there is no explicit guidance on when to use this tool versus alternatives like rhino_array_linear, rhino_array_polar, or rhino_replicate_along_curve. Usage context is implied by the operation name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_array_polarC
Array objects in a polar pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate mutation via readOnlyHint=false. The description does not add behavioral context such as whether the original objects are copied or moved, whether new objects are created in the document, or how count and total angle affect the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is concise, though it could be expanded with additional guidance without becoming 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?
For a tool with six parameters and no property descriptions, this description is far too thin. It does not explain polar-array semantics like rotation around a center point, angle coverage, or axis specification, leaving the agent under-informed 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%, and the description provides no parameter meaning. An agent cannot infer the roles of object_ids, center, count, total_angle_degrees, axis, or doc_id from the text, so the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Array objects') and a specific pattern ('polar'), which is enough to distinguish it from linear and rectangular array siblings. However, it does not differentiate from the similarly named rhino_cmd_array_polar sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like rhino_array_linear, rhino_array_rectangular, or rhino_replicate_along_curve. There is also no mention of prerequisites such as needing an active document or existing object IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_array_rectangularC
Array objects in a 3D rectangular grid.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already signals this is a mutation, and the description aligns with that, so there is no contradiction. However, the description adds no behavioral detail beyond the annotation: it doesn't say whether originals are retained or copied, whether objects are created or replaced, or what the tool returns. No destructive or side-effect context is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words; '3D rectangular grid' earns its place by adding the dimensionality not present in the tool name. It is appropriately lean, though terse enough that it edges toward under-specification rather than ideal 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 7 parameters, an existing output schema, and sibling alternatives, the 8-word description is inadequate on its own. It omits whether the original objects are preserved, what the tool returns, prerequisites like existing objects in the document, and how this differs from array_linear/array_polar. The schema covers ranges and defaults, but behavioral and selection context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — only doc_id has a schema description — and the tool description does not compensate. The phrase '3D rectangular grid' loosely implies count_x/y/z and spacing_x/y/z semantics, but no parameter is explicitly explained. The parameter names are partially self-explanatory, but the description adds almost no 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?
The description states a specific verb ('Array'), resource ('objects'), and geometry ('3D rectangular grid'), which is clear and recognizable. It implicitly differentiates from sibling tools like rhino_array_linear and rhino_array_polar through the word 'rectangular', though it doesn't explicitly contrast 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?
No guidance is provided on when to use this tool versus alternatives. The sibling list includes rhino_array_linear, rhino_array_polar, rhino_array_on_curve, and rhino_distribute, but the description never mentions them or any selection criteria, leaving the agent to infer when a rectangular array is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_assign_material_to_objectB
Assign a named material to the currently selected objects.
Args:
material_name: Name of the render material to assign.
| Name | Required | Description | Default |
|---|---|---|---|
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It indicates a mutating operation and clarifies scope ('currently selected objects'), but it does not disclose behavior when nothing is selected, whether the material must already exist, whether existing assignments are overwritten, or any error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose before the parameter detail. Every sentence earns its place, and there is no filler or unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter mutation, and the description covers purpose, selection scope, and parameter semantics. However, with no annotations and no usage guidance relative to overlapping siblings, important operational details such as selection requirements, material existence, and overwrite behavior are missing, making it only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does by explaining 'material_name: Name of the render material to assign,' which adds the important 'render material' context beyond the raw parameter name. It could mention existence or format requirements, but for a single string parameter this is mostly adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Assign'), a resource ('a named material'), and a target ('currently selected objects'). It is clear and unambiguous, but it does not distinguish itself from overlapping sibling tools such as rhino_material_assign or rhino_set_object_material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It implies the precondition that objects are selected and a material name is required, but it does not reference sibling tools or state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_attractor_displace_pointsA
Displace each input point along the vector to an attractor with a falloff.
Positive ``strength`` pulls toward the attractor; negative pushes
away. The attractor is either a fixed point (``attractor_point``)
or a curve (``attractor_curve_id``); for curves each point's
attractor is the closest sample on the curve.
Returns the *new* point IDs (the originals are deleted; this is a
form-finding move, not a duplicating one).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the destructive side effect: 'the originals are deleted; this is a form-finding move, not a duplicating one.' Annotations only carry readOnlyHint=false, so this deletion warning and the promise of new IDs add essential behavioral context beyond the structured 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 tightly structured: a clear first-sentence overview, then parameter behavior, then return/destructive consequence. Every sentence earns its place and there is no filler or repetition of schema noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutating deformation tool, the description covers operation, attractor modes, strength direction, return value, and the critical deletion side effect. Combined with the schema's documentation of doc_id, falloff, max_distance, and point filtering, the agent has enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful parameter relationships: positive strength pulls and negative pushes, the attractor can be a point or curve, and curves use the closest sample on the curve. It also clarifies that the returned IDs are new objects. The schema already documents falloff, max_distance, and doc_id, so the description compensates well for the key semantic gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Displace each input point along the vector to an attractor with a falloff.' It clearly distinguishes this as an attractor-based point-deformation operation, unlike the many sibling move/soft-edit/bend/twist tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for attractor-driven form-finding and warns that it is 'not a duplicating one,' but it does not explicitly name alternative tools or state when to prefer this over sibling deformation operations. Context is conveyed through the operation's semantics rather than direct routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_axis_ribsA
Generate two orthogonal sets of section ribs (waffle-style fabrication, bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with readOnlyHint=false by indicating a generative/write operation, and it adds the bridge-only compatibility constraint. However, it does not disclose whether the source object is modified, whether new objects are created on a specific layer, or other side effects beyond generation.
Agents need to know what a tool does to the 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 entire description is one efficient sentence that front-loads the core action and then packs the two most valuable qualifiers ('waffle-style fabrication', 'bridge only') into a short parenthetical. There is no wasted or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the input schema provides descriptions for the key parameters, the short description is mostly sufficient. It clearly communicates the high-level operation and restrictive context, though it could be slightly stronger about what exactly is produced or how the source object is treated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents object_id, axis_a, axis_b, and doc_id, and count_a/count_b are self-describing through names and min/max constraints. The description's mention of 'two orthogonal sets' adds high-level intent for axes and counts, but it does not explain parameter defaults or the layer parameter, leaving that responsibility to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Generate'), a specific resource ('two orthogonal sets of section ribs'), and adds a clear fabrication context ('waffle-style'). It distinguishes this tool from generic sectioning or single-rib tools by emphasizing the orthogonal two-set output and bridge-only scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'waffle-style fabrication, bridge only' gives a clear usage context and an explicit restriction about where the tool applies. It does not name alternative tools or explicitly state when not to use them, but the intended use case is reasonably well communicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_batch_callA
Dispatch multiple bridge methods in a single round-trip.
IMPORTANT: ``steps[].method`` is a **bridge dispatcher route**, not
an MCP tool name. The MCP tool ``rhino_layer_create`` maps to the
dispatcher route ``rhino.layer.create``; ``rhino_document_summary``
maps to ``rhino.query.document_summary`` (NOT ``rhino.document.summary``).
Standalone-only tools (``rhino_set_user_text`` etc. that have no
``bridge_call`` path) cannot be batched. A wrong route name returns
an ``error`` row with ``HandlerError``; the batch aborts when
``on_error='stop'``.
Measured impact (v0.6.x, localhost): direct sequential layer.create
~580ms/op vs batched ~340ms/op — N x ~240ms saved per batch (the
MCP↔bridge round-trip cost paid once instead of N times). Effective
for any workflow that issues >5 bridge calls back-to-back.
Returns ``{summary: {total, ok, failed, on_error}, results: [...]}``
where each ``results`` entry has ``index``, ``method``, ``status``
(``"ok"`` | ``"error"``), and either ``result`` or ``error``.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only readOnlyHint: false), so the description carries the behavioral disclosure burden and succeeds. It discloses failure modes (wrong route returns an 'error' row with HandlerError), abort semantics tied to on_error='stop', the exact return shape ({summary, results} with index/method/status/result|error), and the performance profile — all context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Longer than typical but justified: the route-naming convention, error semantics, performance data, and return format are each non-obvious and earn their place. Content is front-loaded (purpose first, then the critical gotcha, then performance rationale, then return shape). The benchmark detail could be tighter by a sentence, but its presence directly supports the usage decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 batching tool with nested args, a route-naming trap, per-step error semantics, and an output schema, the description is remarkably complete. It covers why to use it, when to use it, what cannot be batched, how to name methods correctly, what happens on failure, and what the response looks like. The on_error parameter and batch size limits are already covered by the schema, so no required detail 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% at the top level, so the description must compensate, and it does so strongly for the critical 'method' parameter with mapping examples and a counterexample ('rhino.query.document_summary' NOT 'rhino.document.summary'). It also explains on_error's behavioral effect. However, the 'params' object semantics are only addressed via the schema's nested $defs ('JSON object passed verbatim'), not in the description itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opening sentence states a specific verb+resource+mechanism: 'Dispatch multiple bridge methods in a single round-trip.' It goes beyond the title by explaining what 'bridge methods' are and how they relate to MCP tool names (e.g., 'rhino_layer_create' maps to 'rhino.layer.create'), which separates it from the hundreds of individual rhino_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit, quantified when-to-use guidance: 'Effective for any workflow that issues >5 bridge calls back-to-back' with measured performance evidence (~580ms sequential vs ~340ms batched). It also states when-not: 'Standalone-only tools (rhino_set_user_text etc. that have no bridge_call path) cannot be batched,' giving the agent actionable exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_batch_modifyA
Modify many objects in a single call.
Each spec can include any combination of: translation, rotation,
scale, colour, layer, visibility, and name. All changes are wrapped
in one undo record — ``rhino_undo(steps=1)`` reverts the entire batch.
When ``apply_to_all`` is ``True``, the modifications from the first
spec are applied to every object in the document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description carries the behavioral burden. It discloses that all changes are wrapped in one undo record and that apply_to_all applies the first spec to every object. This goes well beyond the structured annotation data, though it does not mention potential overwrite semantics or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. Every sentence adds useful information: what it does, what fields are allowed, undo behavior, and apply_to_all semantics. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch modification tool, the description covers the main operational aspects: supported modifications, undo grouping, and apply_to_all. Combined with the rich input schema and output schema, most necessary context is present. It lacks explicit alternative routing, but this is not a critical gap for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds combination semantics by listing the modifiable fields and explains the apply_to_all flag's effect. However, schema description coverage is low, and the description does not fully compensate by detailing all nested parameters such as rotation center/axis, scale center/factor, or the required id field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Modify many objects in a single call.' It clearly enumerates the supported modification types and explains the apply_to_all mode, which distinguishes it from single-object tools like rhino_move, rhino_rotate, or rhino_scale.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: for batch modification of many objects in one call, with an explicit explanation of the apply_to_all behavior. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bendC
Bend objects along an axis through a specified point.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no read-only or destructive hints, so the description must carry the behavioral burden. It does not disclose whether the operation modifies objects in place, whether make_copy defaults to false and creates a copy, what happens to the original geometry, or what the tool returns. The word 'bend' implies mutation but leaves key behavioral details 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 a single, front-loaded sentence with no filler. It is concise and immediately states the operation, though it is perhaps too terse to fully support a complex geometric transformation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool requires object_ids, two axis endpoints, a bend point, and an optional make_copy flag, the one-sentence description is not enough context for an agent to call it correctly. An output schema exists, but it does not replace missing guidance about selection, in-place versus copy behavior, or interaction with sibling transformation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0%, and the tool description does not compensate by explaining object_ids, the start/end axis points, or make_copy. It mentions 'axis' and 'specified point,' which loosely maps to the start/end/point parameters, but it adds little semantic value over the raw schema and omits the copy behavior entirely.
Input schemas describe structure but not intent. Descriptions should explain 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 'Bend objects along an axis through a specified point' uses a specific verb and resource, and conveys the core geometric operation clearly. It does not explicitly distinguish itself from similar siblings like rhino_cmd_bend or rhino_twist, but the bend semantics are sufficiently 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?
No guidance is given about when to use this tool versus alternatives such as rhino_cmd_bend, rhino_twist, rhino_taper, or rhino_flow_along_curve. There are no prerequisites, selection requirements, or exclusions stated, so the agent must infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bim_metadata_setA
Tag objects with IFC entity + property-set metadata.
Standalone writes ``Pset_RhinoMcp::<key>`` user_text on each object;
bridge mode does the same and additionally pushes into Rhino's IFC
property-set table so a subsequent IFC export carries them across.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, it discloses what is written (Pset_RhinoMcp::<key> user_text), where (each object; additionally Rhino's IFC property-set table in bridge mode), and the downstream effect (IFC export). It doesn't state whether existing metadata is overwritten or whether the operation is reversible, but the core mutation behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short paragraphs with the main action front-loaded and a technical mechanism in backticks; no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers mode-dependent behavior and export relevance, but with no schema descriptions counted and no guidance on required args, overwrite behavior, or relationship to rhino_bim_pset_* tools, an agent could select it yet still struggle to populate args correctly. The output schema reduces the need to explain return values, so the remaining gap is invocation semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Context indicates 0% schema description coverage, and the description does not name required parameters like object_ids or entity_type nor explain doc_id, pset_name, or properties mechanics. It offers only conceptual grounding ('IFC entity + property-set metadata') and the default Pset_RhinoMcp key prefix, which is not enough to invoke the nested args confidently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opening sentence names a specific action ('Tag objects') and a specific resource ('IFC entity + property-set metadata'), and the rest details the write mechanism (user_text keyed as Pset_RhinoMcp::<key>) plus bridge-mode behavior, which separates it from generic BIM pset tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the main use case—attaching BIM metadata before an IFC export—and explains standalone vs bridge behavior, but it never explicitly states when to choose this over rhino_bim_pset_set/get/delete or rhino_export_ifc. There are no exclusions or alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bim_pset_deleteBDestructive
Remove every property under a named PropertySet from an object.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false, so the description doesn't need to restate destructiveness. However, the description adds no behavioral context beyond what annotations provide: it doesn't clarify that the operation is irreversible, whether it affects nested properties, or what happens if the pset does not exist. The description does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the action ('Remove every property'). It is efficient and avoids fluff, though it could add a brief note about doc_id or irreversibility without becoming 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?
The tool has destructive annotations and a small schema, but the description is too thin for a delete operation. It doesn't specify which document context applies, any prerequisites (e.g., object must exist, pset must exist), or what the return/confirmation looks like. An agent could call it incorrectly without knowing whether to target the active document or another one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'a named PropertySet' and 'an object', which maps to pset_name and object_id but doesn't explain them further. doc_id is not mentioned at all in the description. The schema's own parameter descriptions are minimal, so the description compensates partially but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Remove every property under a named PropertySet from an object.' states a specific verb (remove), resource (property set), and scope (from an object). It clearly distinguishes itself from sibling tools like rhino_bim_pset_get and rhino_bim_pset_set, but it doesn't explicitly mention the destructive/irreversible nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you want to delete an entire property set from a BIM object. However, it doesn't explicitly state when NOT to use it or mention alternatives like rhino_bim_pset_set could modify instead of delete. No prerequisites or context for when deletion is appropriate are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bim_pset_getARead-onlyIdempotent
Read PropertySet entries off an object.
Bridge mode reads from the live RhinoCommon UserString table; standalone
mode reads from rhino3dm UserStrings on the saved 3dm document. The
result groups properties by PropertySet name (``psets`` field).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds valuable behavioral detail: the mode-dependent data source difference and the result grouping by PropertySet name in a 'psets' 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 description is concise and front-loaded with the core purpose, followed by mode behavior and result grouping. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with only one required parameter, output schema present, and annotations covering idempotence and read-only behavior, the description is complete. It explains mode differences and result structure sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents object_id, doc_id, and pset_name with descriptions and defaults, so the description does not need to repeat parameter details. It adds only the grouping context, not additional parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read PropertySet entries off an object.' This clearly identifies the tool's function and differentiates it from sibling tools like rhino_bim_pset_set and rhino_bim_pset_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by explaining bridge mode versus standalone mode and which data source each reads. It does not explicitly compare against alternatives such as rhino_bim_pset_set, but the read-only nature and mode guidance are sufficient for an agent to understand when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bim_pset_setC
Persist a PropertySet block on an object.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a write via readOnlyHint=false, and 'Persist' largely restates that without adding new behavioral context. The description does not mention overwrite semantics, implications for existing property sets, user_text storage, permissions, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. It is efficient, though slightly terse considering the BIM-specific subject matter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 combination of tool name, title, and rich input schema makes the call reasonably clear, and an output schema is present. However, the description alone does not explain what a PropertySet block means in the IFC context or how this differs from metadata_set and user_text setters, so the agent must rely on sibling names and schema 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?
The description itself adds no parameter-level information, but the nested schema thoroughly documents doc_id, object_id, pset_name, properties, and replace_existing. Although the wrapper-level coverage signal is 0%, the actual field descriptions compensate, making this a baseline 3 rather than a failure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Persist') with a clear resource ('PropertySet block') and target ('on an object'), and the action clearly differs from sibling pset_get/pset_delete tools. It does not explicitly name sibling alternatives, but the set/get/delete family is still decipherable from the description and tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_bim_pset_get, rhino_bim_pset_delete, rhino_bim_metadata_set, or rhino_set_user_text. It implies a write operation but never states conditions, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_blend_srfA
Create a blend surface between two surface edges.
Pre-select the two naked edges before calling.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure burden. It does disclose the selection-state dependency (pre-select two naked edges) and the return shape ('Dict with status and command keys'). However, it is silent on whether original surfaces are modified or preserved, what happens when the selection is invalid, and whether this is a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: the one-line purpose comes first, followed immediately by the critical pre-selection prerequisite. The Args/Returns sections are minimal and each sentence earns its place, though the template-style formatting adds minor overhead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, an empty schema, and a stateful selection-dependent operation, the description covers the core essentials: purpose, prerequisite, and return format. But for a geometric modeling operation it omits what happens to the source surfaces, the meaning of 'naked' edges, and error behavior when the wrong edges are selected.
Complex tools with many parameters or behaviors need more documentation. 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 zero parameters, which sets the baseline at 4. The description adds value by documenting the controller argument ('controller: RhinoController instance') that is absent from the empty schema, clarifying the required dependency even though it is not encoded as a parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation and resource: 'Create a blend surface between two surface edges.' The verb and resource are clear, and the description tells the user it operates on two surface edges. However, it does not differentiate from near-identical siblings like rhino_blend_surface and rhino_blend_surface_edges, which an agent could confuse for this 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 one essential prerequisite: 'Pre-select the two naked edges before calling.' This is actionable and important since the tool depends on current selection state. But it offers no guidance on when to choose this tool over rhino_blend_surface, rhino_blend_surface_edges, or rhino_variable_blend_srf, and no exclusions or fallback advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_blend_surfaceB
Create a blend surface between two edges.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the key behavioral fact that a new blend surface is created, which is consistent with readOnlyHint=false. However, it does not disclose potential side effects, geometric prerequisites for the two edges, or whether existing geometry is modified. It adds only minimal context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to stating the core operation. It is concise without being rambling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse for a tool with multiple closely related siblings and several parameters. It lacks usage guidance, parameter explanations, and behavioral caveats. The presence of an output schema and annotations helps, but the description still leaves important contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description alludes to 'two edges,' which maps loosely to edge_a_id and edge_b_id, but it adds no meaning for bulge, layer, name, or doc_id. With minimal schema descriptions, the description does not compensate for the missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create a blend surface between two edges.' It clearly states what the tool does. However, it does not distinguish it from closely related siblings such as rhino_blend_surface_edges, rhino_blend_srf, or rhino_fillet_surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. The name and description resemble several sibling tools, but no exclusions or selection criteria are provided, leaving the agent to guess which blend tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_blend_surface_edgesB
Create a blend surface connecting two surface edges with continuity control.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not mention any side effects, permissions, or destructive actions. It only states what it creates, so the agent has no information about whether it modifies existing objects or requires special access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly conveys the purpose without unnecessary words. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is brief and lacks important context for a complex geometric operation. It doesn't explain the expected inputs, output type, or how continuity is controlled, making it insufficient for an agent to fully understand the tool's requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on the parameters beyond the schema. It mentions 'continuity control' but doesn't explain the continuity parameter's meaning or the edge IDs. The schema provides some description for edge IDs but not for continuity, and the tool description adds no extra detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a blend surface between two edges with continuity control, using a specific verb 'Create' and specifying the resource and key feature. It distinguishes from other surface tools by mentioning 'two surface edges' and 'continuity control'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the use case but does not explicitly mention when to use this tool over alternatives like other blend or surface tools. There is no guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_block_defineA
Create a block definition from a list of objects.
Standalone uses ``rhino3dm.InstanceDefinitionGeometry`` to register
the geometry under ``name``. Bridge mode mirrors that and additionally
replaces the source objects with a single instance at the base point
when ``replace_objects=True``.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the sparse annotations by explicitly stating that bridge mode replaces the source objects with a single instance at the base point, which is a critical mutation side effect. It also discloses the two operation modes, though it stops short of noting irreversibility, undo behavior, or name-conflict handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence summary is front-loaded and the second sentence adds behavioral detail without repeating the schema. The standalone/bridge explanation is useful despite the implementation-specific 'rhino3dm.InstanceDefinitionGeometry' reference, which is somewhat extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 gives enough to attempt a call, but it does not state prerequisites (e.g., whether object_ids must exist in the document), what happens on duplicate names, or when standalone vs bridge mode is chosen. The presence of an output schema lessens the need to document return values, but the operational context remains somewhat incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps several schema parameters to its prose ('list of objects' -> object_ids, 'under name' -> name, 'base point' -> base_point, 'replace_objects=True'). However, it does not add meaning for doc_id or the description parameter, and with the reported 0% schema description coverage at the top level, it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create a block definition from a list of objects', using a specific verb and resource that distinguishes it from sibling tools like rhino_block_insert or rhino_block_explode. The standalone/bridge mode detail further clarifies what the operation accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the use case (defining a block from selected object IDs) and contrasts standalone vs bridge modes, but it never explicitly says when to choose this tool over alternatives or when not to use it. No sibling alternatives are mentioned, so the agent must infer routing from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_block_explodeC
Explode a block instance into individual objects (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare readOnlyHint=false, so the description bears the burden of explaining side effects. It does not disclose that the default behavior destroys or replaces the original block instance, nor does it explain the meaning of 'bridge only'. The keep_instance parameter is described in the schema but not reflected in the tool description, leaving the agent without a clear behavioral contract.
Agents need to know what a tool does to the 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 tight sentence with no filler. It front-loads the action and resource, and the 'bridge only' qualifier is concise but informative. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutating tool with no destructive hint, minimal parameter guidance in the description, and near-identical siblings like rhino_explode and rhino_explode_block. The description does not explain default replacement behavior, what 'bridge only' means practically, or how to choose this over alternatives. The output schema removes the need to describe return values, but the selection and behavior guidance is still incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, and the tool description adds no parameter-level meaning. The input schema itself does document instance_id, doc_id, and keep_instance, but the description does not compensate for the low coverage. Given the rule that low schema coverage requires more descriptive support, this is a meaningful 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 uses a specific verb and resource: it explodes a block instance into individual objects, which makes the core purpose clear. The 'bridge only' qualifier adds scope information. However, it does not explicitly differentiate this from the sibling tools rhino_explode or rhino_explode_block, so the distinction is largely left to the naming and schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given for when to use this tool versus alternatives. The phrase 'bridge only' hints at an environment constraint, but there is no mention of when rhino_explode or rhino_explode_block would be more appropriate. The agent must infer usage context from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_block_insertB
Insert a block instance at insertion_point with optional scale + rotation.
Standalone constructs a ``rhino3dm.InstanceReferenceGeometry`` and
applies the transform to it. Bridge mode forwards to RhinoCommon's
``Doc.Objects.AddInstanceObject`` which honours the active layer
and links the instance to the definition.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate it is not read-only; the description adds that bridge mode honors the active layer and links the instance to the definition, which is useful context. It does not describe potential side effects such as requiring an existing definition, unlinking, or affecting undo, so transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core operation ('Insert a block instance...') and then add mode-specific detail. No filler, though the coded identifiers and mode distinction could be simplified for quick skimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 leaves ambiguity about important call preconditions: it does not state that the block definition must already exist, nor explains how a user decides between standalone and bridge mode. It also does not say what the tool returns on success or failure, relying on the output schema to cover results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains 'insertion_point', 'scale', 'rotation', and implicitly 'layer' through bridge behavior, but it does not clarify 'name', 'doc_id', 'instance_name', or the default document targeting behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Insert a block instance' and identifies the key inputs (insertion point, optional scale, rotation). It distinguishes itself from sibling block tools like rhino_block_define by focusing on 'instance' rather than definition creation, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains two internal modes (standalone vs bridge) but does not state when a user should select this tool over block_define, explode_block, or other sibling tools. It lacks when/when-not guidance, prerequisites, or examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_block_instance_countC
Return the number of instances of a specific block definition.
Args:
name: Block definition name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only count but does not state what happens for an unknown block name (error vs. 0), whether the count includes nested instances, or whether name matching is case-sensitive. For any counting tool these edge behaviors materially affect interpretation 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?
The description is appropriately short with the primary purpose front-loaded in a single clear sentence. The docstring-style 'Args:' line introduces minor formatting noise, but nothing wasteful or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-format documentation is not the description's responsibility. The tool is structurally simple with one required parameter, but the description omits edge-case behavior (missing block, nested instances) and does not distinguish it from closely related counting/list sibling tools. 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 description coverage is 0%, so the description must compensate. It does by clarifying the single parameter ('name: Block definition name'), which adds meaning beyond the bare schema entry that only declares a required string. The explanation is serviceable but sparse.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Return') and resource ('number of instances of a specific block definition'), making the tool's core function clear on its own. However, it does not differentiate from sibling tools with similar purposes such as rhino_block_list, rhino_count_objects, rhino_object_quantity, or rhino_bridge_list_instances, so an agent cannot easily tell which counting tool fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no conditions, and no exclusions. The description merely restates what the tool does without any contextual routing, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_block_listBRead-only
List every block definition with a per-definition object + instance count.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint annotation and adds useful scope ('every block definition') and output semantics (per-definition counts). However, it does not disclose additional behavioral details such as document targeting or performance implications, though the annotation already covers the safety profile.
Agents need to know what a tool does to the 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, focused sentence with no filler. Every phrase adds meaning: the scope ('every'), the resource ('block definition'), and the output ('per-definition object + instance count').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with one documented parameter and an output schema, the description is nearly complete. It only lacks explicit routing guidance among the block-related sibling tools, which is a usage gap rather than a critical invocation gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, doc_id, is documented in the schema with a default of 'active' and an explanation, so the tool description does not need to repeat it. The description adds no parameter-level detail, but the schema carries the semantic burden; this is an acceptable baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('every block definition') and even specifies the output granularity: per-definition object and instance count. It is clear, but it does not explicitly differentiate itself from sibling tools like rhino_list_blocks or rhino_block_instance_count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of the many block-related siblings such as rhino_list_blocks, rhino_block_manager, or rhino_block_instance_count. An agent gets no help choosing among alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_block_managerB
Open the Block Manager dialog.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure, but it only states the dialog opens. It does not mention modal blocking, possible document changes after user edits, whether it is a UI-only action, or any return value; output schema aside, these traits are undisclosed.
Agents need to know what a tool does to the 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 five-word sentence with no filler. The action and object are front-loaded, making it very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 0-parameter tool the description is short, but that brevity hides significant gaps: no indication of when to use it over block list/define/insert, no behavioral detail about the dialog, and no mention of effects on the document. With no annotations, the agent cannot judge side effects or workflow fit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so there is nothing for the description to add. Baseline 4 applies because parameter semantics are trivially 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 uses a specific verb 'Open' with a clear resource 'Block Manager dialog', so the agent knows it opens a UI dialog rather than performing a block operation. It does not explicitly differentiate from block-related siblings, but the dialog focus makes it identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus block list, define, insert, or explode siblings. The description only states the action, leaving the agent to infer that a UI dialog is the intended path for interactive block management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_block_redefineA
Replace a block definition's geometry, propagating to every instance (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in the annotations, the description adds meaningful behavioral disclosure: it is a mutating operation and propagates changes to every instance, which warns about scope. The 'bridge only' qualifier also signals availability limitations. It does not cover undo or recoverability, but the destructive replace semantics are clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with no filler. The core action and the most important side effect are front-loaded, and the bridge-only restriction is appended compactly. Nothing in the description wastes tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutating operation with four parameters and 0% schema description coverage, this is incomplete. The description covers the high-level effect but not prerequisites (existing block name, valid object IDs), what base_point does, or why bridge-only is a limitation. Since an output schema exists, return values need not be described, but input behavior is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 needed to explain the inputs. It only indirectly hints that object_ids are the geometry used to replace the block and that name identifies the definition; base_point and doc_id are not mentioned at all. An agent would have to infer object_ids semantics from the tool name and schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Replace') and resource ('a block definition's geometry'), and also states the key consequence: propagation to every instance. This clearly differentiates it from block creation tools like rhino_block_define and from instance-level operations. The 'bridge only' parenthetical also narrows the 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?
The purpose statement implies when to use the tool: when an existing block definition must be redefined so all instances update. However, it does not explicitly mention alternatives or exclusion conditions beyond the cryptic 'bridge only', and there are several block-related siblings with overlapping names. The guidance is usable but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_boolean_differenceADestructive
Subtract b_ids from a_ids. Bridge required.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior (destructiveHint=true) and non-read-only (readOnlyHint=false), so the description does not need to restate safety. It adds the 'Bridge required' constraint, though it does not describe side effects such as whether the original objects are consumed or replaced by the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler, and the core operation is front-loaded. 'Bridge required' is terse but earns its place as a prerequisite signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 boolean operation, the description is minimal but mostly sufficient: it names the operands, the operation, and a key prerequisite. It leaves 'Bridge required' unexplained and does not mention output behavior, though an output schema is present and destructive annotations cover safety expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies the order-relationship between a_ids and b_ids, reinforcing the schema's 'first operand' and 'second operand' descriptions. However, it does not add guidance for the optional parameters like name, layer, or doc_id, and the context signal reports zero schema description coverage at the top level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear operation ('Subtract b_ids from a_ids') that maps directly to Boolean difference and distinguishes it from union/intersection siblings. It is specific about the verb and the two operands, so an agent can tell what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Bridge required' provides a useful precondition, but the description does not explain when to prefer this tool over alternatives like rhino_boolean_union, rhino_boolean_intersection, or rhino_mesh_boolean_difference. Usage is implied by the subtract semantics rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_boolean_intersectionBDestructive
Intersect a_ids with b_ids. Bridge required.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare `destructiveHint: true` and `readOnlyHint: false`, so the destructive nature is covered. The description adds one non-obvious behavioral requirement, 'Bridge required', but it does not disclose side effects, object creation/modification behavior, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler, and the core operation is front-loaded. The 'Bridge required' note is concise and informative, though the overall terseness leaves useful context unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 basic operation and a key prerequisite, and an output schema exists to explain return values. However, in the context of many closely related boolean and mesh boolean tools, it lacks guidance on when to use this variant versus the command or mesh alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description merely echoes `a_ids` and `b_ids` without adding any meaning beyond the names or schema hints. It does not explain how to obtain GUIDs, what the IDs refer to, or the roles of optional fields like `name`, `layer`, and `doc_id`, which is especially problematic given the low schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation ('Intersect') and the operands (`a_ids`, `b_ids`), which makes the tool's purpose apparent. It does not explicitly distinguish it from sibling boolean operations like union or difference, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Bridge required' provides a useful prerequisite, and the operation itself implies when it should be used. However, there is no explicit guidance on choosing this tool over related alternatives such as `rhino_boolean_union`, `rhino_boolean_difference`, or `rhino_mesh_boolean_intersection`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_boolean_splitC
Boolean split: split objects with cutting surfaces / polysurfaces.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the operation is destructive, whether it modifies objects in place, whether pre-selection is needed, or how the controller drives the split. It only restates the action without behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core operation stated first and no filler. The Args line is brief, though it arguably belongs in the schema. Overall it earns high marks for conciseness, though it sacrifices substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 boolean operation with an empty input schema and no annotations, the description is too thin. It omits how objects are chosen, what counts as a cutting surface, whether the original objects are preserved, and what the output contains. An agent would have to guess or inspect sibling tools for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, yet the description lists an 'Args: controller' parameter that is absent from the schema. This mismatch is confusing rather than clarifying. With 0 parameters the description could add context about how objects are selected or specified, but it does not; it only introduces an undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear operation: 'Boolean split: split objects with cutting surfaces / polysurfaces.' It names a specific verb (split), a resource (objects), and the cutting geometry type (surfaces/polysurfaces), which helps distinguish it from curve-oriented split tools like rhino_split. It could be more explicit about the difference from boolean_difference, but it is not vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rhino_boolean_difference, rhino_boolean_intersection, or rhino_split. The one-line description implies its purpose but never explains contexts, prerequisites (e.g., selected objects, cutting geometry), or when a different boolean operation would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_boolean_unionBDestructive
Boolean-union the given Brep groups. Bridge required.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds the meaningful prerequisite 'Bridge required' and specifies the operand type as Brep, but it does not disclose whether the source Breps are consumed, replaced, or left intact, which would be useful given the destructive annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded: the operation is named immediately, and the critical 'Bridge required' constraint is appended in a second terse sentence. It earns its place, though 'Bridge required' could be slightly more explicit about what the bridge is.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 destructive annotation, present output schema, and schema-described operands, the description is minimally adequate. However, it omits practical guidance about the effect on the input Breps and does not help the agent distinguish this from the mesh boolean union variants beyond the word 'Brep.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description itself adds no parameter-level detail, but the input schema already documents a_ids, b_ids, and doc_id with meaningful descriptions. The term 'Brep groups' loosely maps to a_ids and b_ids, though it does not clarify that these are arrays of GUIDs; the schema compensates for most of this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — boolean union — on a specific resource, Brep groups, which is clear and distinct from sibling tools like boolean intersection or mesh boolean union. It does not explicitly contrast itself with those siblings, but the operation and 'Brep' qualifier provide enough differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied: call this when performing a boolean union on Brep geometry. The phrase 'Bridge required' adds a necessary environment precondition, but there is no explicit when-not guidance or comparison to alternatives such as rhino_boolean_difference or rhino_mesh_boolean_union.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bounding_boxBRead-onlyIdempotent
Return the union bounding box of one or more objects.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds the useful behavioral detail that boxes are merged into a union, which is beyond the annotations. It does not disclose return format details, but an output schema exists to cover that. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the verb and states the core behavior with no filler. Every word earns its place, and it is appropriately sized for a simple query 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?
This is a simple read-only tool with an output schema and safety annotations, so much of the context burden is already met by structured data. However, the description omits any guidance on how object_ids are obtained, whether the bounding box is in document coordinates, and how this differs from selection-based bounding box tools. Adequate for a minimal query 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?
With schema description coverage at 0%, the description needed to explain parameter meaning but only vaguely hints at object_ids via 'one or more objects'. The doc_id parameter does have a schema description, but object_ids has none, and the tool description does not compensate by explaining what object IDs are or how they relate to other tools. The description adds minimal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('union bounding box'), and clarifies the input scope ('one or more objects'). It conveys the core function precisely, and the word 'union' distinguishes this from per-object bounding queries. However, it does not explicitly differentiate from sibling tools like rhino_selection_bbox or rhino_cmd_bounding_box, leaving some differentiation to the name and schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. There is no mention that this operates on explicitly supplied object_ids rather than the current selection, nor any comparison to rhino_selection_bbox or rhino_cmd_bounding_box. The usage context must be inferred entirely from the parameter schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_boxC
Add a rectangular box (axis-aligned in standalone mode).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a non-read-only mutation, and the title 'Add Box (solid)' conveys solid creation. The description adds only the axis-aligned trait, but it fails to explain what 'standalone mode' means, how the tool behaves in other modes, or how doc_id/layer targeting works. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key action front-loaded: 'Add a rectangular box' appears immediately. No filler or redundancy. It is efficiently sized, though arguably too terse to carry the necessary 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 tool with an args object containing seven parameters, the description is too thin. It leaves key ambiguity unresolved: what 'standalone mode' means, whether the result is a solid or surface, and how this differs from rhino_mesh_box/rhino_cmd_box. The output schema covers return values, but the operational context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only implies three dimensions via 'rectangular box' without mapping to size_x/size_y/size_z. The schema itself carries some useful descriptions (e.g., 'Lower-left-front corner', doc_id behavior), but the tool description adds almost nothing to parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('rectangular box'), and the parenthetical 'axis-aligned in standalone mode' adds a distinguishing constraint that helps separate it from mesh_box and subd_box. However, 'standalone mode' is undefined and slightly cryptic, so it doesn't fully nail the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. With dozens of primitive-creation siblings (rhino_mesh_box, rhino_subd_box, rhino_cmd_box, rhino_sphere), the description names no alternatives and gives no selection criteria. The 'standalone mode' phrase implies a distinction but never explains it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bridge_list_instancesARead-onlyIdempotent
Enumerate live Rhino bridge endpoints discovered via announcement files.
Returns one row per running Rhino on this host. Each row carries
``pid``, ``host``, ``port``, ``doc_path``, ``doc_title``, version, and
an ``alive`` flag derived from a cheap TCP probe.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds meaningful behavioral context: results are derived from announcement files on this host, rows include an 'alive' flag from a cheap TCP probe, and stale cleanup can delete announcement files. This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact paragraph: two sentences. It front-loads the purpose, states the output shape, and avoids fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, output fields, and the core behavioral mechanism. It doesn't explicitly explain that the input is a wrapper object with one nested 'args' property, but the schema is clear. Given an output schema exists, return values need no elaboration. The only gap is that the agent might want to know the ordering of rows or how to select/filter with rhino_bridge_select_instance, but that is a sibling concern, not a required piece.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries the burden. It doesn't document probe_timeout or stale_cleanup, but the input schema provides clear descriptions and defaults for both. Given that the schema fills the gap, the description isn't required to repeat it; the tool's behavior is sufficiently explained elsewhere. Score 4 rather than 5 because the description could briefly mention that env/discovery details are host-scoped.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Enumerate'), a specific resource ('live Rhino bridge endpoints discovered via announcement files'), and details the output contract. It clearly distinguishes itself from siblings by its focus on the bridge instance registry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for inspecting running Rhino processes and their bridge endpoints. Given the read-only annotations, an agent can infer it is a diagnostic/selection precursor. It doesn't explicitly name an alternative like rhino_bridge_select_instance, but the context and role are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_bridge_select_instanceA
Switch the next bridge call to target a specific Rhino session.
Exactly one selector among ``pid``, ``port``, ``doc_path_contains``,
and ``index`` should be set. The active bridge client is closed; the
next tool call goes through lazy promotion against the new endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a meaningful side effect beyond the annotations: 'The active bridge client is closed; the next tool call goes through lazy promotion against the new endpoint.' This tells the agent the operation mutates the bridge state, consistent with readOnlyHint=false. It adds behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the purpose appears in the first sentence, the selection constraint in the second, and the behavioral consequence in the third. Every sentence contributes essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small state-switching tool, the description covers purpose, selector constraint, and session-targeting behavior. The schema documents individual selectors, and an output schema exists, so return-value details are not required. It could have mentioned the related instance-listing tool for discovery, but that is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema includes descriptions for each selector, the description adds the critical mutual-exclusion constraint: 'Exactly one selector among pid, port, doc_path_contains, and index should be set.' This is important operational semantics not present in the schema. The description does not restate each parameter's meaning, which is appropriate because the schema already covers those details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Switch the next bridge call to target a specific Rhino session.' This clearly identifies what the tool does and its scope. It does not explicitly differentiate itself from the closely related sibling rhino_bridge_list_instances, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational guidance: exactly one selector among pid, port, doc_path_contains, and index should be set. It also explains the timing—the next bridge call—which situates the tool in a workflow. It does not explicitly name alternatives or exclusions, but for a session-selection tool the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cage_editC
Deform objects with a control cage (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, and the description adds that this is a deformation via control cage, but it does not disclose whether the operation is destructive or reversible, how the cage interacts with target objects, or any side effects. The write behavior is implied but not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler, and the core operation is front-loaded. The 'bridge only' parenthetical adds a useful scope qualifier without bloating the 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 modeling operation requiring both target objects and a cage object, the description leaves out how the cage is applied, what constraints exist, and what the tool expects from the cage geometry. The presence of an output schema helps, but the input-side context is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'objects' and 'control cage' at a high level. It does not clarify the roles of object_ids, cage_object_id, or doc_id beyond what their names suggest.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Deform'), a resource ('objects'), and a method ('control cage'), which clearly identifies the tool's function. The 'bridge only' qualifier narrows scope, though it does not explicitly contrast with sibling deformation tools like rhino_bend or rhino_twist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus other deformation tools, nor any mention of prerequisites such as needing a valid cage object. 'Bridge only' is a scope caveat but not actionable selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_camera_setB
Position the active viewport's camera (location + target + lens length).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal that this is not read-only (readOnlyHint=false), and the description adds that it affects the active viewport's camera rather than document geometry. However, it doesn't disclose side effects, whether named views are modified, or how optional inputs like view_name alter behavior. This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It states the action, target, and key parameters efficiently, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 camera-setting tool with four parameters and no clear relationship to sibling view tools, the description is too minimal. It lacks information about optional named views, lens length constraints, units, or what happens to the active viewport when view_name is supplied. An output schema exists, so return values need not be described, but operational context is still incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the burden of explaining parameters. It lists location, target, and lens length, but omits view_name entirely and gives no semantics for coordinate formats, units, or defaults. The schema itself has some nested descriptions, but the top-level description doesn't 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?
The description is specific: it names the verb 'Position', the resource 'active viewport's camera', and the relevant properties (location, target, lens length). It clearly communicates what the tool does, though it doesn't explicitly differentiate it from camera/view-related siblings like rhino_view_set or rhino_set_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_view_set, rhino_named_view_save, or rhino_zoom_extent. The description implies it acts on the active viewport but doesn't state when a named view should be supplied or when a different view tool is more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cap_holesB
Cap all open holes of a Brep.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so mutation is expected. The description adds that it caps all open holes of a Brep, but it does not state whether the original object is modified in place, whether a new object is returned, or what happens when no holes exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the core action efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and an output schema, the core operation is stated. However, the description leaves ambiguity about how it relates to rhino_cap_planar_holes and does not clarify optional parameter usage, making it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only weakly implies that object_id refers to a Brep. It does not explain the role of name, layer, or doc_id, leaving the agent to infer their meaning from titles and conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Cap') and names the resource ('all open holes of a Brep'). It is clear, though it does not explicitly distinguish itself from the similar sibling rhino_cap_planar_holes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives like rhino_cap_planar_holes or rhino_close_hole. No prerequisites, exclusions, or selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cap_planar_holesA
Cap planar holes in open polysurfaces to create closed solids.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the intended geometric transformation but does not say whether the original objects are modified in place, what happens if no planar holes are found, or how selection is determined.
Agents need to know what a tool does to the 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 main functional sentence is concise, accurate, and front-loaded. The 'Args: controller: RhinoController instance.' line is slightly redundant given the empty input schema, but it is short and not misleading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is adequate for a simple no-parameter tool: the core purpose and target geometry are clear. However, with no annotations, it leaves unspecified how the tool selects or affects objects, and it does not differentiate itself from the similar rhino_cap_holes and rhino_close_hole siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so the baseline is 4. The description mentions the controller argument, but with no schema properties there is little parameter behavior to clarify.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific operation (cap planar holes), the target object type (open polysurfaces), and the desired result (closed solids). It is distinct from broader sibling operations like rhino_cap_holes or rhino_close_hole because it explicitly limits the action to planar holes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: apply this to open polysurfaces with planar holes when the goal is creating closed solids. It does not explicitly name alternatives or exclusions, but the intended scenario is evident from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_chamfer_edgesB
Chamfer the selected edges of a polysurface or solid.
Args:
controller: RhinoController instance.
distance: Chamfer distance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the tool chamfers edges and returns a dict with a command result; it does not disclose whether the original object is modified, whether a new object is created, how selection is consumed, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core operation. The Args/Returns structure is easy to scan, though the controller parameter mention adds slight noise since it does not appear in the input schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple schema and an output schema, so return-value details need not be repeated. However, the description does not explain how the edges are selected, whether the controller parameter is required, or what the chamfer does relative to the existing geometry. This leaves important invocation context missing, especially given the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a distance parameter with no description, and the description's 'distance: Chamfer distance' adds little beyond a tautological restatement. It does not explain units, valid ranges, or the geometric meaning of the distance. It also mentions a controller argument that is absent from the schema, which can confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Chamfer the selected edges of a polysurface or solid.' This clearly states the operation and target object type. It also implicitly distinguishes the tool from siblings like rhino_chamfer_surface and rhino_fillet_edges by focusing on edges of a polysurface/solid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected edges' implies that edges must already be selected before calling the tool, which is a useful usage hint. However, it does not explicitly name alternatives such as rhino_fillet_edges or rhino_chamfer_surface, nor does it state when to prefer this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_chamfer_surfaceB
Create a chamfer surface between two selected surfaces.
Args:
controller: RhinoController instance.
distance: Chamfer distance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the operation creates a chamfer surface between two selected surfaces, but it does not state whether the original surfaces are trimmed, modified, or preserved, nor does it describe selection state or side effects. The 'Dict with command result' line adds no real behavioral detail beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, which is good, but it includes a 'controller' parameter not present in the schema and a returns line that duplicates information the output schema already provides. Not 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?
This is a creating/mutating tool with no annotations, and the description leaves out critical operational details: how distance units are interpreted, how the two surfaces are supplied, and whether the original surfaces are altered. The one-parameter schema and output schema are simple, but a somewhat richer description is still needed 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?
With 0% schema description coverage, the description must compensate, but 'distance: Chamfer distance' only minimally restates the parameter name and adds no units, valid range, or default behavior. It also documents a 'controller' argument that does not appear in the input schema, which can mislead an agent about the actual invocation contract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (create), a specific resource (chamfer surface), and the input context (two selected surfaces). This is semantically distinct from siblings like rhino_fillet_surface and rhino_chamfer_edges, even though it never names 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?
The phrase 'between two selected surfaces' implies the precondition that two surfaces must be selected, but there is no explicit when-to-use, when-not-to-use, or alternative routing. It does not tell the agent to prefer this over fillet or edge-chamfer tools, so the guidance is mostly inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_check_bad_objectsA
Check selected objects for validity and report solid status.
Uses rhinoscriptsyntax to inspect each selected object and report
whether it is valid/solid or has issues.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing validity report.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. 'Check', 'inspect', and 'report' imply a read-only operation, and the description explains that it reports valid/solid versus issues. However, it does not explicitly state that objects are not modified or describe behavior when nothing is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in a clear first sentence. The second sentence largely repeats the first and adds low-value implementation detail ('Uses rhinoscriptsyntax'), and the Args/Returns boilerplate is mostly redundant for a zero-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?
For a simple no-parameter check tool with an output schema, the description provides enough context: it requires selected objects and reports validity/solid status. It does not explicitly distinguish itself from similar validation siblings like rhino_validate_brep, but that is not essential 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?
The input schema has zero properties, so user-facing parameters need little explanation. However, the description lists 'controller: RhinoController instance' as an argument even though the schema does not expose it, creating a minor mismatch between the documented and actual callable 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 first sentence names a specific verb and resource: 'Check selected objects for validity and report solid status.' This clearly distinguishes it from selection tools like rhino_sel_bad_objects and creation/modification tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool when selected objects need a validity or solid-status check. It does not explicitly name alternatives or exclusion cases such as 'use rhino_validate_brep for a single brep,' 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.
rhino_check_naked_edgesARead-only
Enumerate naked edges of a Brep with their lengths (bridge only).
Standalone rhino3dm cannot enumerate naked edges. In bridge mode this
forwards to ``Rhino.Geometry.Brep.GetNakedEdges`` and returns
``[{edge_index, length}, ...]`` plus the gap count.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds useful behavioral context: it forwards to Rhino.Geometry.Brep.GetNakedEdges, returns structured edge data, and only works in bridge mode. It does not cover error cases, but the annotation plus implementation reference provides solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core action, and the follow-up provides necessary mode and return-format context. Every sentence contributes useful information without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query tool, the description is complete: it states the input type (Brep), the mode restriction (bridge only), the underlying API call, and the return shape. Annotations and the output schema cover safety and detailed return values, so nothing essential 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 low, but the description compensates somewhat by stating the target is a Brep, implying object_id must reference one. It does not add detail about doc_id or the meaning of edge_index/gap_count, though the output schema likely covers the latter and the schema itself has basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Enumerate naked edges of a Brep with their lengths'. It clearly identifies what the tool does and distinguishes it from broad validation or display tools by specifying the data-oriented output and the bridge-only mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly scopes usage to bridge mode and explains that standalone rhino3dm cannot enumerate naked edges, which is a clear when/when-not signal. It does not name alternative sibling tools, but the mode restriction and specific purpose give sufficient context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_circleA
Add a circle by centre and radius (optionally on a custom plane).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Add a circle', which is consistent with the readOnlyHint=false annotation and confirms this is a mutating operation. It does not contradict the annotations, but it also discloses little beyond what the annotation already signals, aside from the optional custom-plane behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the primary purpose and includes the key optional variation. Every word earns its place and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple creation tool with a rich input schema and an output schema, the description gives enough context to understand the tool's purpose and primary variation. It could be more complete about document targeting or layer placement, but those are covered by the schema and optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions the core parameters (centre, radius, optional plane) but adds little meaning beyond the input schema, which already documents center, radius, plane defaults, and units. Since schema description coverage is listed as 0%, the description provides only partial compensation for parameter semantics rather than thorough guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and resource ('circle'), and clearly specifies the construction method (by centre and radius) plus an optional custom plane. It is clear enough to distinguish from most curve/primitive siblings, though it does not explicitly differentiate from the similarly named rhino_cmd_circle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is for creating a circle defined by a centre and radius, which gives a basic usage context. However, it provides no explicit when-to-use versus alternatives, no exclusions, and no guidance on choosing between this and similar circle/curve creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_clipping_planeB
Add a clipping plane to all viewports.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark readOnlyHint=false; the description productively adds that the operation creates a plane and applies it to all viewports. It doesn't discuss naming/layering or effects on existing clipping planes, but this is a minor gap for a creation 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?
Single sentence, front-loaded, and free of filler. Every word adds meaningful information about the operation and its scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with a rich nested schema and an output schema, the description captures the essential scope (all viewports) and the mutating nature. It doesn't address the sibling overlap, but nothing critical is missing for invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description offers no parameter-level detail; the agent must rely entirely on the nested schema for origin/axis semantics. The word 'clipping plane' loosely connects to the plane argument but adds no specific 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?
Description states a specific verb ('Add'), a concrete resource ('clipping plane'), and a clear scope ('all viewports'). It is unambiguous on its own, but it does not explicitly distinguish this from the sibling rhino_add_clipping_plane.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'all viewports' scope provides implicit context for when this tool is appropriate, but there is no explicit guidance about alternatives, exclusions, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_close_holeB
Close (cap) a planar hole in an open polysurface or mesh.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety or mutation hints, so the description carries the full burden. It implies a modifying operation ('Close (cap)') but does not disclose whether the original object is edited in place, what happens to non-planar holes, whether a cap surface is added to the object, or 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 main description is a single, front-loaded sentence with no fluff. The 'Args: controller' line is arguably unnecessary since the schema defines no properties, but it does not add significant bloat. Overall, it is concise and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and an empty input schema, the description must fully explain the tool's behavior and selection context. It only states the operation and target object type. It omits how the target is chosen, whether the modification is destructive, what the result looks like, and how it differs from nearly identical sibling tools such as rhino_cap_holes and rhino_cap_planar_holes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters in the schema, so the description cannot add much parameter-level detail. The only mention is 'controller: RhinoController instance', which is consistent with the tool being invoked through a controller context. With no parameters, a baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Close (cap)') and a specific resource ('a planar hole in an open polysurface or mesh'). It is understandable on its own. However, it does not distinguish this tool from the closely named siblings rhino_cap_holes and rhino_cap_planar_holes, so it lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of the similar cap_holes or cap_planar_holes alternatives. No conditions, exclusions, or selection requirements are provided, leaving the agent to infer usage from the name and terse description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_arcA
Draw an arc by center, radius, and angular span.
Rhino's Arc command (center mode) prompts:
center -> radius -> start angle -> end angle.
Args:
controller: RhinoController instance.
cx, cy, cz: Center of the arc circle.
radius: Arc radius.
start_angle: Starting angle in degrees (measured from +X axis).
end_angle: Ending angle in degrees.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | Yes | ||
| cy | Yes | ||
| cz | Yes | ||
| radius | Yes | ||
| end_angle | No | ||
| start_angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose that the tool invokes Rhino's Arc command in center mode and that it returns a dict with 'status' and 'command' keys, which adds useful behavioral context. However, it does not explicitly state whether the command creates geometry in the model, what prerequisites exist (e.g., open Rhino document), or how status values should be interpreted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a short prompt-flow note, parameter list, and return line. It is mostly efficient, though the separately listed 'controller' argument is unnecessary since the schema does not include it, and the prompt sequence could be integrated into the main explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 main operation, parameter meanings, and return shape, which is adequate for a simple drawing tool. However, it lacks usage guidance, side-effect/prerequisite details, and does not clarify how this tool relates to sibling arc commands. Since an output schema exists for return values, the return dict explanation is a minor extra rather than a critical contribution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well: it explains cx, cy, cz as center coordinates, radius as arc radius, and start/end angles as degrees measured from the +X axis. The only notable issue is that it lists a 'controller' argument that does not appear in the input schema, which could confuse an agent, and it omits units for radius or whether coordinate values should be numeric strings.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Draw an arc by center, radius, and angular span.' It also identifies the exact Rhino command mode ('Arc command (center mode)') and the interaction sequence, making it clearly distinguishable from circle, ellipse, and other arc-drawing variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like rhino_arc, rhino_circle, or rhino_ellipse. The description explains the command flow but does not give selection criteria, exclusions, or context for choosing this center-radius-angle approach over other arc construction methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_areaB
Calculate the area of selected closed curves, hatches, or surfaces.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing area information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does disclose that the tool reads the current selection and returns a Dict, but it omits critical operational details: result units, behavior when nothing is selected or the selection contains invalid geometry, and confirmation that this is a non-destructive read operation. The 'selected' input mechanism is also only implicit in the purpose clause, not stated as a prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose statement in the first sentence. The Args and Returns sections are standard docstring format with no fluff. The Args line listing 'controller' is mildly redundant given the empty schema, but it does not materially waste space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema present, the burden on the description is lighter. It is still missing actionable context: an agent is not told to ensure appropriate objects are selected before calling, what happens with an empty or invalid selection, or how this tool differs from the sibling rhino_area. The core purpose is covered, but these operational gaps keep it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so the baseline of 4 applies. The description's Args section mentions a 'controller' parameter that does not appear in the schema, which is slightly anomalous, but since no arguments are required, the agent faces no parameter-construction burden. The description adds no param semantics, but none are needed 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 states a specific verb and resource: 'Calculate the area of selected closed curves, hatches, or surfaces.' This clearly distinguishes it from length, volume, and distance siblings like rhino_curve_length, rhino_volume, and rhino_distance. However, it does not differentiate from the near-identically-named sibling rhino_area, which creates potential selection ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'selected' qualifier implies the tool operates on the current Rhino document selection, and the geometry-type constraints are useful context. But there is no explicit when-to-use guidance, no mention of exclusions (e.g., open curves are not valid), and no reference to alternatives. Given the rhino_area sibling, the lack of explicit routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_array_linearC
Create a rectangular/linear array of selected objects.
Args:
controller: RhinoController instance.
count_x: Number of items in X direction.
count_y: Number of items in Y direction.
count_z: Number of items in Z direction.
spacing_x: Spacing between items in X.
spacing_y: Spacing between items in Y.
spacing_z: Spacing between items in Z.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| count_x | No | ||
| count_y | No | ||
| count_z | No | ||
| spacing_x | No | ||
| spacing_y | No | ||
| spacing_z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavior disclosure. It only says it creates an array and returns a command result; it does not mention document mutation, selection prerequisites, no-selection failure behavior, or coordinate/unit context. This is thin for an operation that modifies the Rhino document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with a one-sentence purpose, followed by a clear parameter list. The main waste is the extraneous controller argument line, and the return description is vague ('Dict with command result'), but overall the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation tool with six parameters and many closely related sibling tools, the description is incomplete. It does not state the selection precondition, how spacing relates to the current document units, or how this tool differs from rhino_array_linear and rhino_array_rectangular. The presence of an output schema reduces the need to document return values, but the operational context remains under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does add meaning to all six schema parameters by explaining counts and spacings. However, it also documents a 'controller: RhinoController instance' argument that is absent from the input schema, which could confuse an agent. It also omits units and constraints for spacing values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool creates a rectangular/linear array of selected objects, with a specific verb and resource. However, the phrase 'rectangular/linear array' conflates two related concepts, and the tool name rhino_cmd_array_linear sits alongside rhino_array_linear and rhino_array_rectangular without explaining how it differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the many sibling array tools such as rhino_array_linear, rhino_array_rectangular, rhino_array_polar, or rhino_cmd_array_polar. It also does not explicitly instruct the user to select objects first, despite saying 'selected objects' as a requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_array_polarB
Create a polar array of selected objects around a center point.
Args:
controller: RhinoController instance.
count: Total number of items (including original).
angle: Total angle to fill in degrees.
cx: X coordinate of the array center.
cy: Y coordinate of the array center.
cz: Z coordinate of the array center.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | No | ||
| cy | No | ||
| cz | No | ||
| angle | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavioral disclosure. It states the core mutation ('Create') but omits material behavior: whether the original objects are preserved or replaced (Rhino polar arrays typically keep originals and add copies, but this is not stated), the coordinate frame that cx/cy/cz refer to, the empty-selection failure mode, and whether the operation is undoable. The terse 'Returns: Dict with command result' adds no behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the Args/Returns docstring structure is legible, but the description is verbose by MCP standards: the Returns line duplicates what the output schema already provides, and the phantom controller entry is pure noise. It is organized but not tightly edited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 creation command with an output schema, the description adequately explains what the tool does and what every parameter means. However, material context is missing: why rhino_array_polar coexists with this tool, the selection prerequisite and no-selection behavior, and the coordinate system of the center point. With zero annotations covering safety or side effects, these omissions leave the definition only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema exposes only bare titles (Cx, Cy, Cz, Angle, Count), so the description must supply parameter meaning — and it does so well: count is clarified as the total number of items including the original, angle as the total sweep in degrees, and cx/cy/cz as the array center. A notable defect is the documented 'controller' argument that does not exist in the input schema, which could cause an agent to pass an unsupported parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence — 'Create a polar array of selected objects around a center point' — names a specific verb (Create), a precise resource (polar array of selected objects), and the geometric anchor (center point). It clearly states what the tool does, but it does not differentiate this tool from the near-identical sibling rhino_array_polar, nor does it position it among rhino_array_linear, rhino_array_rectangular, and rhino_array_on_curve, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many array siblings, especially the near-duplicate rhino_array_polar or the alternative array patterns (linear, rectangular, on-curve). The description also never states that objects must be pre-selected, what happens if nothing is selected, or when this tool would be inappropriate. An agent must infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_bendB
Apply a bend deformation to selected objects.
Args:
controller: RhinoController instance.
angle: Bend angle in degrees.
symmetric: If True, bend is symmetric about the midpoint.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | ||
| symmetric | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the operation ('bend deformation') but never reveals whether the original geometry is replaced or preserved, whether the deformation is destructive or reversible, or what happens when no objects are selected — significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose statement before the docstring-style Args/Returns sections. Each parameter gets one line and the return value is summarized, though the controller arg is arguably noise for an agent since it is not part of the callable 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 two-parameter deformation tool with an output schema and zero annotations, the description covers purpose, parameters, and return type adequately. It leaves gaps on selection failure behavior, whether objects are modified in place or duplicated, and the relationship to the aliased sibling rhino_bend — making it minimally viable but not complete for an agent choosing between tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — the schema offers only bare titles ('Angle', 'Symmetric') and defaults — so the description must compensate, and it does. It documents angle as 'Bend angle in degrees' and symmetric as 'bend is symmetric about the midpoint,' adding real meaning absent from the schema. The mention of controller, an argument not present in the schema, introduces a small inconsistency.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific verb and resource — 'Apply a bend deformation to selected objects' — which distinguishes it from deformation siblings like rhino_twist and rhino_taper. However, it fails to differentiate from the near-identical sibling rhino_bend, which shares the same operation name and would be indistinguishable to an agent selecting between 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?
No guidance is given on when to use this tool versus alternatives: no mention of rhino_bend, rhino_twist, or rhino_soft_edit_curve, and no exclusion criteria. The phrase 'selected objects' implies the prerequisite that objects must be preselected, but that requirement is never made explicit and no fallback behavior is described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_boolean_differenceC
Boolean difference: subtract selected cutters from base objects.
Args:
controller: RhinoController instance.
delete_input: Delete input cutter objects after the operation.
| Name | Required | Description | Default |
|---|---|---|---|
| delete_input | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only mentions the subtract action and the delete_input parameter's effect; it doesn't disclose other side effects like potential modification of base objects or undo behavior. With no annotations, the minimal description leaves significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, using one clear sentence for the purpose and brief parameter descriptions. No unnecessary words or redundancy are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Critical context is missing: there is no description of return values or success indicators, no details on how objects are selected, and no comparison with sibling boolean tools. This makes it hard for an agent to know if the operation succeeded or what to expect.
Complex tools with many parameters or behaviors need more documentation. 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 delete_input parameter is clearly described as deleting input objects after the operation, and the controller parameter is mentioned in the text. However, the controller is not present in the provided input schema, and the description doesn't explain how it influences the operation or its default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation is a boolean difference that subtracts cutters from base objects, which is a specific verb and resource. However, it doesn't explicitly distinguish this command from the sibling rhino_boolean_difference function, so the 'cmd' nature is implied but not clarified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage guidance is provided. It doesn't explain when to use this command versus the similar rhino_boolean_difference tool, nor does it mention prerequisites like object selection or how cutters/base objects are identified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_boolean_intersectionC
Boolean intersection of selected closed polysurfaces / solids.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full responsibility for behavioral disclosure. It states the geometry operation and input type, but does not disclose whether the original solids are deleted or replaced, whether a new object is created, or what happens if the selection is invalid or not closed. For a mutating boolean operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main sentence is compact and front-loaded, clearly stating the operation and target geometry. One point is lost because the stray 'Args' docstring line does not correspond to the actual input schema and therefore does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema reduces the need to describe return values, and the empty parameter schema reduces parameter concerns. But for a mutating tool with no annotations, the description remains too thin: it omits side effects, how the selection is interpreted, and failure behavior, so an agent cannot safely predict the outcome of calling 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?
The input schema has zero parameters, so there is little to document and the baseline should be high. However, the description includes an 'Args: controller: RhinoController instance' line that is not represented in the schema, which could mislead an agent into thinking it must supply a controller argument.
Input schemas describe structure but not intent. Descriptions should explain 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 names the operation ('Boolean intersection') and the input class ('selected closed polysurfaces / solids'), so an agent can tell what the tool does. It does not distinguish this from sibling tools such as rhino_boolean_intersection or the mesh boolean variants, 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 guidance is given on when to use this tool versus alternatives like rhino_boolean_union, rhino_boolean_difference, or rhino_mesh_boolean_intersection. The only implied context is that objects must already be selected, which is not enough to support correct tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_boolean_unionC
Boolean union of selected closed polysurfaces / solids.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool operates on the current selection of closed polysurfaces/solids, but it does not disclose whether original objects are consumed or replaced, what happens if no valid selection exists, or how the result is returned. The Args block documents a controller parameter that is absent from the schema, adding confusion rather than clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The functional sentence is short and front-loaded, which is good. However, the Args block is superfluous and inconsistent with the empty schema, and it earns no place in the description. The overall structure is acceptable but not a model of economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This tool depends on document state (current selection), yet the description never explains the selection precondition, the outcome of the operation, or its relationship to the identically named rhino_boolean_union sibling. An output schema exists, but operation semantics are under-specified; an agent cannot reliably predict what will happen when it invokes this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so the baseline is 4. There is nothing to document beyond the implicit document-selection context. The description's mention of a 'controller: RhinoController instance' argument is actually misleading since the schema defines no properties, but this does not detract from parameter semantics because no real parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Boolean union of selected closed polysurfaces / solids.' This clearly communicates that the tool fuses selected solid geometry. However, it does nothing to distinguish itself from the near-identical sibling rhino_boolean_union or the mesh-based boolean siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like rhino_boolean_union, rhino_mesh_boolean_union, or rhino_boolean_difference. The description implies it acts on selected geometry but never states that a selection must exist first or how to prepare it. An agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_bounding_boxA
Return the world-axis-aligned bounding box of selected objects.
Uses rhinoscriptsyntax so that the result can be parsed programmatically.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing bounding-box corner points.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that it uses rhinoscriptsyntax, that the result is parseable, and that it returns the corner points in a dict. It does not state whether the document is modified, what happens with no selection, or how coordinates are represented, so behavioral coverage is partial.
Agents need to know what a tool does to the 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 plus compact Args/Returns sections. Every sentence earns its place: scope, implementation approach, and return summary. Information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless query tool with an output schema, the description covers the core use case. It omits important operational context: whether a selection is required, what happens when nothing is selected, and that the operation is read-only. The 'controller' mention adds a small ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero properties, so there are no parameter semantics for the description to add; baseline per rubric is 4. The 'Args: controller: RhinoController instance' line is not represented in the schema and could confuse an agent into thinking a controller must be supplied, but since no user-facing parameters exist, the schema already fully documents the call.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Return'), exact resource ('world-axis-aligned bounding box'), and scope ('selected objects'). The 'Uses rhinoscriptsyntax...' line further clarifies intent by targeting programmatic use, distinguishing it from a generic interactive bounding-box command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 makes the usage context clear: call it when you need the world-axis-aligned bounding box of currently selected objects. It does not explicitly name alternatives like rhino_bounding_box or rhino_selection_bbox, so it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_boxA
Create a box (rectangular cuboid) in Rhino.
The box is defined by its bottom-left-front corner (x, y, z) and its
opposite corner derived from length/width, then extruded to *height*.
Args:
controller: RhinoController instance.
x, y, z: World-space origin of the box base corner.
length: Size along the X axis.
width: Size along the Y axis.
height: Extrusion height along the Z axis.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| width | No | ||
| height | No | ||
| length | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral disclosure burden. It clearly states that a box is created and clarifies geometric behavior, and it mentions the return keys. It does not describe side effects such as whether the object is added to the current document or whether existing geometry is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, logically organized with Args and Returns sections, and every sentence contributes. It avoids repetition and front-loads the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with six all-default integer parameters, the description provides enough parameter semantics and return shape. It is slightly incomplete in not distinguishing this cmd variant from rhino_box or mentioning any document-level 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?
Since schema description coverage is 0%, the description is the only source of parameter meaning. It fully explains x, y, z as the base corner and maps length to X, width to Y, and height to Z, which adds significant value beyond the bare schema 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 a specific verb and resource: 'Create a box (rectangular cuboid) in Rhino.' The geometric details make the purpose unmistakable. However, it does not differentiate this tool from nearby siblings like rhino_box, rhino_subd_box, or rhino_mesh_box.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool instead of the many other box-related tools in the sibling list. There is no mention of alternatives, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_circleB
Draw a circle by center and radius.
Args:
controller: RhinoController instance.
cx, cy, cz: World-space center of the circle.
radius: Circle radius.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | Yes | ||
| cy | Yes | ||
| cz | Yes | ||
| radius | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states it 'Draw a circle' and mentions the return dictionary, but does not disclose side effects like document modification, object creation, or undo behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with no redundant wording. Every sentence provides essential information about the tool's purpose, parameters, and return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the primary parameters and return value, making it adequate for a basic circle-drawing operation. However, it lacks contextual details such as whether the circle is added to the active layer, any prerequisites, or how it relates to other curve-creation 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?
Each parameter is described with its role: 'controller' as a RhinoController instance, 'cx, cy, cz' as world-space center coordinates, and 'radius' as the circle radius. This adds meaning beyond the bare titles, though units or defaults are not specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Draw a circle by center and radius.' This provides a specific verb and resource. However, it does not explicitly differentiate from similar circle-related tools like 'rhino_circle', so the purpose is clear but not fully distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternative circle creation methods. It does not mention conditions or advantages, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_coneA
Create a cone in Rhino.
Args:
controller: RhinoController instance.
x, y, z: Center of the base circle.
radius: Base radius.
height: Height of the cone (apex above base).
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| height | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the core behavior, the meaning of base center and 'apex above base,' and the status/command return shape. It does not disclose whether the cone is actually added to the document, whether a live Rhino session is required, or what status values mean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with a clear opening purpose, an Args list, and a Returns line. Every sentence contributes semantic information, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool, the geometry and return shape are adequately covered, especially since an output schema exists. However, the description lacks guidance on tool selection versus rhino_cone and does not clarify preconditions such as an active Rhino document or controller availability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates fully by explaining x/y/z as the base circle center, radius as base radius, and height as the distance to the apex above the base. All five schema-exposed parameters receive meaningful semantics beyond their types 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 opens with 'Create a cone in Rhino', which is a specific verb and resource, and the geometry parameters make the purpose clear. It does not explicitly distinguish this tool from sibling tools like rhino_cone or rhino_cmd_cylinder, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to prefer this tool over rhino_cone or other primitive-creation tools, and no mention of prerequisites such as an open Rhino document or an active controller connection. The intended usage is only implied by the verb 'Create.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_contourA
Create contour curves on selected surfaces or meshes.
The contour base point and direction are picked interactively.
Args:
controller: RhinoController instance.
spacing: Distance between contour planes.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| spacing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It usefully discloses that base point and direction are picked interactively and that the command operates on the selected surfaces or meshes, but it does not state whether the command blocks waiting for user input, requires a live Rhino session, or what document-side side effects occur beyond creating curves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the main action, the key interactive caveat, the argument semantics, and the return type are each covered in a few purposeful lines. There is no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema, the description covers the action, target objects, interactive placement behavior, and result type. It is missing only explicit sibling differentiation and units, but it is otherwise self-contained for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description defines spacing as 'Distance between contour planes,' which adds real meaning beyond the schema title and default. It also mentions the controller argument, though the input schema only exposes spacing and units or positivity constraints are not stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (Create) and resource (contour curves on selected surfaces or meshes), so an agent can tell what operation is being offered. It is clear, though it does not distinguish itself from the closely named sibling rhino_contour.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of rhino_contour, rhino_section, or other contour-related tools. The interactive picking note implies a use case, but no explicit when/when-not guidance or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_curvature_analysisB
Display curvature analysis on selected surfaces.
Valid styles: Gaussian, Mean, MinRadius, MaxRadius.
Args:
controller: RhinoController instance.
style: Type of curvature analysis to display.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Gaussian |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It states the operation displays curvature analysis on selected surfaces and returns a dict, which conveys that this is a display/analysis action rather than a geometry mutation. However, it does not clarify whether the analysis persists in the viewport, whether prior analysis is replaced, or what happens if no surface is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core action, and uses a clear structure that lists valid styles and arguments. Minor redundancy exists in restating that style is the analysis type, but overall every section adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter) and the output schema is stated to exist, so the bar is relatively low. However, the description omits any mention of the near-duplicate sibling rhino_curvature_analysis, failing to explain how these tools differ. It also lacks details about selection requirements or failure behavior, leaving an agent without enough context to reliably choose between closely related analysis tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines a 'style' parameter with no enum or description, and schema coverage is 0%. The description compensates by naming the valid style values and stating that style selects the type of curvature analysis. It also mentions a controller argument even though that parameter is not present in the schema, which is slightly confusing but does not obscure the main parameter's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation as displaying curvature analysis on selected surfaces and lists the valid analysis styles. It does not, however, differentiate itself from the similarly named sibling tool rhino_curvature_analysis or from related analysis commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says the tool operates on selected surfaces and enumerates valid styles, but gives no guidance on when to prefer this tool over alternatives such as rhino_curvature_analysis, rhino_curvature_graph, or rhino_zebra_analysis. No explicit when-to-use or when-not-to-use information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_cylinderB
Create a closed cylinder in Rhino.
Args:
controller: RhinoController instance.
x, y, z: Center of the base circle.
radius: Base radius.
height: Height of the cylinder.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| height | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It indicates the tool creates a closed cylinder and returns a dict with 'status' and 'command' keys, which gives basic insight. However, it does not explain the expected side effects on the Rhino document, coordinate system assumptions, or any constraints on radius/height.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with an imperative first line followed by concise Args and Returns sections. The only minor waste is the controller argument, which is not part of the exposed input 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 simple primitive-creation tool with five numeric parameters and an output schema, the description covers the essential input semantics and the return shape. It could be more complete by noting units, the coordinate frame, or clarifying what 'closed cylinder' means geometrically, but nothing essential is missing for a basic call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no property descriptions (coverage 0%), so the description is the key documentation for parameters. It clearly explains x, y, z as the base-circle center, radius as the base radius, and height as the cylinder height. The mention of a 'controller' argument is slightly confusing because that parameter is not present in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create a closed cylinder') and identifies the resource, so an agent knows what the tool does. However, it does not differentiate this tool from the closely named sibling rhino_cylinder, so some ambiguity remains for tool 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?
There is no guidance about when to use this tool versus alternatives such as rhino_cylinder or rhino_cmd_box, nor any mention of prerequisites or context. The command-style name suggests it may be intended for command execution, but the description does not explain this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_distanceB
Measure the distance between two points.
If pt1/pt2 are provided they should be formatted as "x,y,z" strings.
Otherwise the command runs interactively.
Args:
controller: RhinoController instance.
pt1: Optional first point as "x,y,z".
pt2: Optional second point as "x,y,z".
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| pt1 | No | ||
| pt2 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must self-disclose effects. It does disclose the interactive fallback and describes the return value as a dict, which is useful. It does not explicitly state whether the operation is non-destructive or whether object selection is involved.
Agents need to know what a tool does to the 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 content is compact and front-loaded. The later Args section is largely redundant with the earlier paragraph and adds a controller argument that does not appear in the input 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 simple two-parameter measurement command, the description covers coordinate formats and the interactive behavior, and an output schema exists for return values. However, the absence of annotation safety context, the undocumented controller mention, and no differentiation from rhino_distance leave 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?
The input schema provides no descriptions for pt1 or pt2, and coverage is 0%. The description adds the 'x,y,z' string format and marks both parameters as optional, which meaningfully compensates for the schema gap. It does not explain coordinate units or the undocumented controller argument.
Input schemas describe structure but not intent. Descriptions should explain 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: measure the distance between two points. However, it does not differentiate this tool from the sibling rhino_distance, which has the same apparent purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to provide points and warns that omitting them runs interactively, but it gives no guidance on when to prefer this tool over alternatives such as rhino_distance. No exclusions or selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_ellipseB
Draw an ellipse by center, X semi-axis, and Y semi-axis.
Args:
controller: RhinoController instance.
cx, cy, cz: Center of the ellipse.
rx: Semi-axis radius along X.
ry: Semi-axis radius along Y.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | Yes | ||
| cy | Yes | ||
| cz | Yes | ||
| rx | Yes | ||
| ry | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It does disclose the return shape ('Dict with 'status' and 'command' keys'), which hints at a command-builder/proxy behavior worth knowing. However, it leaves ambiguity about whether the command is actually executed or merely returned for later use, and says nothing about failure behavior or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a clean, front-loaded docstring: one sentence summarizes the action, followed by a compact Args block and a one-line Returns block. Every line earns its place and it is appropriately sized for a 5-parameter tool, though the format is a bit mechanical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no elaboration, and the description does explain all five parameters and the return dict. However, it omits units for the center and radii (Rhino document units are never mentioned), leaves the controller-parameter mismatch unresolved, and provides no grouping/differentiation from the near-identical rhino_ellipse sibling. Adequate for a simple creation tool 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 description coverage is 0%, so the description fully compensates by explaining the semantic meaning of every schema parameter: cx/cy/cz as the center and rx/ry as semi-axis radii along X and Y. This adds real value beyond the bare string-typed schema. Minor deduction because all schema values are typed 'string' but the description never clarifies that numeric strings are expected, and it references a 'controller' argument not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Draw'), a resource ('an ellipse'), and the exact construction method ('by center, X semi-axis, and Y semi-axis'). This is clear and specific enough to distinguish from most geometry tools, but it does not differentiate from the sibling tool rhino_ellipse, which likely has overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like rhino_ellipse, rhino_circle, and rhino_arc present, an agent gets no information about whether to reach for this command-style variant over the standard rhino_ellipse tool, and no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_fillet_surfaceC
Create a fillet surface between two selected surfaces.
Args:
controller: RhinoController instance.
radius: Fillet radius.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says a fillet surface is created and a command result dict is returned, but it does not disclose whether the original surfaces are modified, whether exactly two surfaces must be selected, what happens if selection is invalid, or how radius is interpreted. This is insufficient for a mutation-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the main purpose. However, the Args/Returns block duplicates information already in the schema and includes a controller argument that does not match the input schema. This makes the structure less clean than it appears.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one parameter, the description should still clarify selection requirements, side effects, and expected usage. It only provides the basic operation and radius. The output schema may cover return values, but the behavioral and prerequisite gaps make this incomplete for an agent to invoke 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%, so the description must compensate. It only restates 'radius: Fillet radius,' adding no units, valid range, or behavior expectations. It also introduces a 'controller: RhinoController instance' argument that is absent from the input schema, creating ambiguity about how the agent should provide or configure this value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a fillet surface between two selected surfaces.' This clearly conveys the tool's action. However, it does not distinguish this from the sibling rhino_fillet_surface or adjacent surface-blending tools like rhino_blend_surface and rhino_variable_fillet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'between two selected surfaces' implies the usage context: the agent must have exactly two surfaces selected before invoking the tool. But there is no explicit guidance on when to use this versus alternatives, nor any exclusions or prerequisites beyond the vague 'selected surfaces' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_flow_along_curveA
Flow (morph) selected objects along a curve.
Requires an existing base curve and a target curve to be selected
interactively.
Args:
controller: RhinoController instance.
preserve_structure: If True, the original NURBS structure is preserved.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| preserve_structure | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does state the morphing effect and the interactive selection requirement, and the preserve_structure argument hints at how NURBS geometry is treated. However, it does not disclose whether original geometry is replaced, whether the operation is reversible, or what happens when preserve_structure is 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?
The description is compact and front-loaded with the purpose, followed by prerequisite, args, and returns. There is no filler, though the Args section partly overlaps with the schema and adds the controller argument that is not part of the input 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 geometry-mutation tool with no annotations and only a vague 'Returns: Dict' contract, the description covers the core prerequisite and one parameter but omits important behavior such as what happens to the original objects, selection order implications, and how this differs from related flow commands. It is usable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of parameter meaning. It explains preserve_structure as 'If True, the original NURBS structure is preserved,' which adds real semantics beyond the schema's title and default. The mention of a controller argument is not mirrored in the schema, but the one exposed parameter is adequately explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'Flow (morph) selected objects along a curve.' This clearly communicates the tool's purpose and adds the key prerequisite of base/target curves. It does not explicitly differentiate from sibling tools like rhino_flow or rhino_replicate_along_curve, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the prerequisite usage context: existing base curve and target curve must be selected interactively. It lacks explicit alternatives or when-not-to-use guidance, but the context is concrete enough to guide a caller preparing to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_get_user_textB
Retrieve custom user text value for a given key from selected objects.
Args:
key: Attribute key name.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description must carry the behavioral burden. It does disclose that this is a read operation on selected objects, but it fails to explain whether the current Rhino selection is required, what happens with multiple or no selected objects, or how missing keys are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very brief and front-loads the core action. The Args line is minimal and mostly redundant with the schema, but the overall length is appropriate for the small tool surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so the description does not need to explain return values. However, it misses the key selection dependency and sibling-tool context that would help an agent decide whether this tool is the right getter, leaving the definition merely adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it merely repeats the parameter name and says 'key: Attribute key name.' This adds no real meaning beyond the string field already visible in the input schema, and it offers no constraints, examples, or context for valid key values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action ('Retrieve'), a specific resource ('custom user text value'), and a scope ('from selected objects'). It is recognizable as a getter, but it does not differentiate it from the near-identical sibling rhino_get_user_text, so it stops short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided for when to prefer this tool over rhino_get_user_text, rhino_get_document_text, or rhino_set_user_text. The description merely states the operation and leaves all selection-vs-alternative decisions implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_helixA
Create a cylindrical helix curve in Rhino.
This is a special case of rhino_spiral where start_radius == end_radius.
Args:
controller: RhinoController instance.
x, y, z: Base point (axis start).
pitch: Vertical distance per full turn.
turns: Number of full turns.
radius: Constant radius of the helix.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| z | Yes | ||
| pitch | No | ||
| turns | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does state that the tool creates a helix and returns a dict with 'status' and 'command' keys, which is useful. However, it does not explain what the 'command' key contains, whether geometry is directly added to the Rhino document, or what side effects or failure conditions might occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the primary purpose, followed by a compact clarifying note, an args list, and a returns line. It avoids filler and keeps each line purposeful, though the constructor-style docstring layout is slightly longer than necessary for an MCP tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core creation intent, parameter meanings, and return shape, but is missing guidance on axis orientation, coordinate units, and how this tool differs from rhino_helix. Given the large sibling list and the near-duplicate rhino_helix/rhino_spiral tools, more contextual guidance would be needed for confident selection and use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds real semantic meaning to the schema parameters: x/y/z as base point, pitch as vertical distance per full turn, turns as count, and radius as constant radius. However, it lists 'controller' as an argument even though the input schema omits it, and it does not clarify why x, y, and z are typed as strings or what units are expected. Thus it only partially compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a cylindrical helix curve in Rhino') and identifies the resource being created. It also adds the useful clarifying relationship to rhino_spiral, but it does not explicitly differentiate itself from the equally named sibling rhino_helix, so it falls short of full sibling-level distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear selection context by explaining that this is a special case of rhino_spiral where start_radius equals end_radius, which tells the agent when this constant-radius variant is appropriate. It does not fully spell out explicit when-not-to-use cases or compare against rhino_helix, so it is not a complete routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_importC
Import geometry from an external file into the current document.
Args:
controller: RhinoController instance.
file_path: Absolute path to the file to import.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions importing geometry into the current document, which implies mutation of the active document, but does not explain side effects, failure modes, supported file formats, or how the returned 'Dict with command result' reflects success or errors. The vague return statement adds little transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably compact and front-loaded with the core purpose. However, the Args/Returns formatting includes a `controller` parameter that does not appear in the schema, and the return description is vague enough to be of limited use. It is not excessively verbose, but not every sentence adds clear value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-oriented tool with no annotations and minimal schema coverage, the description is incomplete. It lacks supported file formats, behavior when importing into a non-empty document, error handling, and any distinction from similar import tools. An agent would need more context to invoke it correctly and interpret the result reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 0% of parameter semantics, so the description must compensate. It does explain `file_path` as an 'Absolute path to the file to import', which is helpful. However, it also lists `controller: RhinoController instance` as an argument even though the input schema only defines `file_path`, creating potential confusion about required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Import geometry from an external file') and the destination ('into the current document'). This is a specific verb+resource statement that distinguishes the basic import behavior from creation or document-level operations, though it does not explicitly differentiate from the sibling `rhino_import` 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?
The description gives no guidance on when to use this tool instead of alternatives such as `rhino_import`, `rhino_open_file`, or `rhino_open`. There are no exclusions, prerequisites, or context about file formats or document state, leaving the agent without enough information to choose between similar import-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_layer_createB
Create a new layer.
Args:
name: Layer name (supports :: for sub-layers, e.g. 'Parent::Child').
color_rgb: Optional comma-separated RGB string, e.g. '255,0,0'.
parent: Optional parent layer name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| parent | No | ||
| color_rgb | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It discloses that a layer is created and explains parameter formats, but it does not say what happens if the layer already exists, whether parent layers are auto-created, or what errors may occur. For a mutating tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: one clear purpose sentence followed by an Args list. Every sentence adds useful information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Purpose and parameters are present, and an output schema exists to cover return values. However, the description omits behavior around duplicate layer names, parent layer prerequisites, and the relationship to the near-duplicate sibling rhino_layer_create, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does. It adds meaningful semantics beyond the schema: the '::' sub-layer syntax for name, the comma-separated RGB format with an example for color_rgb, and the parent layer relationship.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Create a new layer.' This is unambiguous on its own, but it does not differentiate itself from the similarly named sibling rhino_layer_create, so it loses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like rhino_layer_create, rhino_layer_list, or rhino_layer_set_color. No context, exclusions, or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_layer_deleteB
Delete a layer and all its objects.
Args:
name: Name of the layer to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states that the operation deletes 'all its objects,' which is a key destructive side-effect. However, it does not mention irreversibility, whether confirmation is required, or what happens if the layer is current, locked, or referenced elsewhere. This is a minimal but honest disclosure, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus an Args section. It is front-loaded with the core action and includes the parameter description. There is no filler or redundant content, so it scores high on conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and a single parameter, the description covers the essential operation. However, for a destructive tool, it lacks contextual details like safety warnings, prerequisites (e.g., layer must exist), or behavior for locked layers. The description is functional but not fully complete for a user who needs to understand the full impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no description for the 'name' parameter (coverage 0%), so the description must compensate. It says 'Name of the layer to delete,' which adds basic meaning but no additional detail like case sensitivity, exact-match requirements, or whether it accepts a layer index. This is a bare minimum, hence a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Delete a layer and all its objects.' This distinguishes it from many other layer tools in the sibling list, though it doesn't explicitly differentiate from the similarly named rhino_layer_delete sibling. The purpose is unambiguous, but the lack of sibling differentiation holds it back from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the many other layer-related tools (e.g., rhino_layer_delete, rhino_layer_create, rhino_layer_purge_unused). It does not mention prerequisites, alternatives, or conditions where this tool is preferred. The agent is left to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_layer_listA
Return a list of all layer names in the document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and 'Return a list' does imply a read-only query with a clear scope ('all layer names'). It does not add context about ordering, inclusion of hidden/empty layers, or behavior with no layers, but for a zero-argument read operation this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence communicates the resource and scope with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument list operation, 'all layer names in the document' fully specifies what the tool returns, and the output schema covers the return structure. 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?
The input schema is empty ({}) and there are zero parameters, so the description cannot add parameter details; per the zero-parameter baseline this is a 4. There is no parameter information to be missed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Return') and a precise resource ('a list of all layer names in the document'), so an agent knows what data it receives. However, it does not differentiate this tool from the near-identical sibling rhino_layer_list, so it falls short of full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose this tool over alternatives such as rhino_layer_list, rhino_layer_count, or rhino_block_list. The only implied usage is that it returns layer names, but no exclusions or when-not conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_lineC
Draw a straight line between two world-space points.
Args:
controller: RhinoController instance.
x1, y1, z1: Start point.
x2, y2, z2: End point.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| x2 | Yes | ||
| y1 | Yes | ||
| y2 | Yes | ||
| z1 | Yes | ||
| z2 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden, yet it only reveals the return dict keys ('status' and 'command'), which the output schema already documents. It does not state failure behavior, whether an active model must exist, or how invalid coordinates are handled, leaving the main side effects and error traits undisclosed.
Agents need to know what a tool does to the 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 statement is front-loaded and the Args/Returns docstring is short and scannable, with each coordinate line earning its place. The misleading 'controller' line is the only extraneous entry, which prevents a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 six-required-parameter tool with no annotations and 0% schema description coverage, the description should resolve type ambiguity and interface mismatches, but it fails to explain the string-coordinate format and lists a parameter that is not in the schema. The unresolved relationship to the near-identical rhino_line sibling further leaves an agent unable to call or select it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds genuine meaning by labeling x1/y1/z1 as the start point and x2/y2/z2 as the end point, which the bare schema titles lack. However, it also documents a 'controller' argument that is absent from the input schema, and it never explains the expected string format for the numeric coordinates, so at 0% schema coverage the interpretive gap remains significant.
Input schemas describe structure but not intent. Descriptions should explain 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, 'Draw a straight line between two world-space points,' is a specific verb+resource statement that clearly identifies the operation. However, the tool list contains a near-identical sibling, rhino_line, and the description offers nothing that distinguishes this 'cmd' variant from it, so it is clear but not self-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool instead of alternatives like rhino_line, rhino_polyline, or rhino_arc, and no mention of prerequisites such as an open document. An agent must infer usage entirely from the tool name and the parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_loftA
Loft through a set of profile curves.
The curves are first selected using *curve_selection*, then the Loft
command is run with the requested style.
Args:
controller: RhinoController instance.
curve_selection: Rhino command to select the profile curves
(default '_SelLast').
style: Loft style keyword: Normal | Loose | Tight |
Straight | Developable | Uniform.
closed: If True, adds '_Closed=_Yes' to create a
closed (periodic) loft.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Normal | |
| closed | No | ||
| curve_selection | No | _SelLast |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It explains the selection-then-command flow, enumerates style options, and notes that closed adds '_Closed=_Yes' for a periodic loft. It does not explicitly state that a new surface is created or that the document is modified, and the controller parameter is described but absent from the schema, which adds mild ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized as a concise docstring with a summary, argument definitions, and return information. It is mostly efficient and front-loaded, though some details about defaults are repeated from 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?
Given only three parameters, no required parameters, and an output schema, the description covers the core workflow, parameter meanings, and return shape well. It is minimally complete for invoking the tool correctly, though it lacks explicit side-effect disclosure and sibling-tool differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by defining curve_selection, listing valid style values, and explaining the closed parameter. It also notes the default '_SelLast'. The mention of a controller parameter that does not appear in the input schema prevents a perfect score because it could confuse an agent about the actual call signature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Loft through a set of profile curves') and the resource, making it easy to understand what the tool does. However, it does not differentiate rhino_cmd_loft from sibling tools like rhino_loft or rhino_sweep1, so it misses the full distinction expected for 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?
It provides a clear procedural note that curves are selected first via curve_selection and then the Loft command is run. However, it offers no explicit guidance about when to prefer this tool over alternatives or when not to use it, so usage context is implied rather than fully stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_mesh_boolean_differenceC
Boolean difference of selected closed meshes.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions that the meshes must be closed and selected, but it does not say whether the operation is destructive, whether inputs are consumed, what happens if fewer than two meshes are selected, or what the output contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the main purpose. However, the 'Args: controller: RhinoController instance' line is boilerplate that is not reflected in the input schema and adds little for an agent deciding how to invoke the 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?
Despite the output schema being present, the description lacks essential operational context: how selected meshes should be prepared, whether selection order matters, and how this command compares to the related boolean mesh/brep tools. For a tool with no annotations, this is inadequate for reliable selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema description coverage is 100%, so there are no parameter semantics to document. The mention of 'controller' is a runtime dependency rather than a schema parameter, and the absence of parameters makes this dimension minimally demanding.
Input schemas describe structure but not intent. Descriptions should explain 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 operation ('Boolean difference') on a specific resource ('selected closed meshes'). This is clear enough to understand the core function, though it does not explicitly contrast with the many boolean-related sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus rhino_mesh_boolean_difference, rhino_cmd_boolean_difference, or rhino_boolean_difference. The phrase 'selected closed meshes' implies a precondition but provides no context about selection order, overlapping geometry, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_mesh_boolean_unionC
Boolean union of selected closed meshes.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the input requirement (closed meshes) and the operation, but does not disclose whether the operation mutates the selected meshes, creates a new object, deletes the originals, or how failures are handled. This is a significant gap for a likely destructive mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core description is very concise and front-loaded: 'Boolean union of selected closed meshes.' The added 'Args: controller' boilerplate is unnecessary and slightly noisy, but the overall length is appropriate and the main message is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-style boolean operation with no annotations and no behavioral guidance, the description is incomplete. It does not explain selection expectations, side effects, object ownership, or when this mesh command should be chosen over the many boolean siblings. The presence of an output schema helps return-value understanding, but the action context remains underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the schema covers everything and the baseline is high. However, the description includes an 'Args: controller: RhinoController instance' line that does not correspond to any input schema property, which can confuse an agent into expecting an argument it cannot actually supply.
Input schemas describe structure but not intent. Descriptions should explain 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 operation (Boolean union) and a specific resource (selected closed meshes), so an agent can understand what the tool does. It does not explicitly distinguish itself from sibling tools like rhino_mesh_boolean_union or rhino_cmd_boolean_union, but the 'closed meshes' qualifier provides most of the needed clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of the many boolean-related siblings, nor any mention of prerequisites such as selecting closed meshes before invoking it. The description implies selection-based usage through the word 'selected' but provides no explicit context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_mirrorB
Mirror selected objects about a named world plane.
Supported planes: 'WorldXY', 'WorldYZ', 'WorldXZ'.
Args:
controller: RhinoController instance.
plane: Mirror plane identifier.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| plane | No | WorldXY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral details. It does not state whether the operation modifies objects in place or creates copies, whether a selection is required, or if the operation is destructive/undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, containing no fluff or redundant phrases. It efficiently conveys the core purpose and parameter options in two 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?
The description omits important context such as the effect on selected objects (in-place vs. copy), any prerequisites beyond 'selected', and details about the return value (described only as 'Dict with command result'). This leaves gaps for a user to infer behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists valid values for the 'plane' parameter ('WorldXY', 'WorldYZ', 'WorldXZ'), providing some semantics. However, it does not explain how each plane affects the mirror operation or elaborate on the parameter's format beyond a generic 'Mirror plane identifier.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Mirror') and resource ('selected objects about a named world plane'). It distinguishes itself from sibling transform tools like rotate or scale by focusing on reflection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives such as rhino_move or rhino_rotate. It does not mention prerequisites like needing a selection or how this differs from other transformations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_moveB
Move selected objects by a displacement vector (dx, dy, dz).
Uses a Python script via rhinoscriptsyntax so that the displacement can be
applied programmatically to every currently-selected object.
Args:
controller: RhinoController instance.
dx: Displacement along X axis.
dy: Displacement along Y axis.
dz: Displacement along Z axis.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| dx | No | ||
| dy | No | ||
| dz | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool acts on every currently-selected object and uses a Python script via rhinoscriptsyntax, which is useful. However, it does not mention that this mutates the model, whether the operation is undoable, or what happens when no objects are selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise and well-structured, with a clear one-line summary followed by parameter explanations and return value. The implementation detail about Python scripting is useful but slightly more verbose than necessary for an agent selecting the 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?
The tool is simple with only three parameters and an output schema, but the description is missing practical context: it does not state that a selection is required, what happens with an empty selection, or how this command tool relates to the many other move-related siblings. It is sufficient for a basic call but leaves some operational ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It does define dx, dy, and dz as displacements along the X, Y, and Z axes, adding meaning beyond the bare parameter names. However, it does not specify units, coordinate system, or behavior when values are defaulted to zero, and it lists a 'controller' argument that is not present in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Move selected objects') and the key input displacement vector (dx, dy, dz). It conveys both the resource (selected objects) and the operation, but it does not explicitly distinguish itself from the closely named sibling rhino_move.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance about when to use this tool versus alternatives like rhino_move, rhino_move_objects_to_layer, or rhino_move_uvn. It explains the implementation mechanism but not the intended selection criteria or conflict with similar siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_offset_surfaceB
Offset a selected surface or polysurface.
Args:
controller: RhinoController instance.
distance: Offset distance.
solid: If True, create a solid (shelled) offset.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| solid | No | ||
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It does explain the core behavior and the meaning of 'solid' as creating a shelled offset, but it does not disclose side effects, whether the original surface is preserved, or what happens if no surface is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: purpose first, then args, then returns. The 'Returns: Dict with command result' line is generic and adds little, but overall the text is focused and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers the essential action and parameters, and an output schema is available. Still, it omits important practical context such as how the target surface is selected, whether prior selection is required, and how to choose between the multiple offset-related sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: 'distance' is described as offset distance and 'solid' is explained as creating a solid shelled offset. The mention of 'controller' is a minor mismatch since it is not in the input schema, but the two actual schema parameters are given meaningful semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Offset') and the resource ('a selected surface or polysurface'), so the core purpose is evident. However, it does nothing to distinguish this tool from near-identical siblings such as rhino_offset_surface or rhino_offset_srf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus the many similar surface-offset siblings, nor any mention of prerequisites such as ensuring an object is selected first. The usage is only implied by the first sentence, which is not enough given the overlapping tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_patchB
Fit a patch surface to the selected curves or point objects.
Args:
controller: RhinoController instance.
u_spans: Number of surface spans in the U direction.
v_spans: Number of surface spans in the V direction.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| u_spans | No | ||
| v_spans | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It reveals that the tool returns a dict with 'status' and 'command' keys and operates on selected geometry, but it does not explain that this creates a new surface, whether it mutates the document, what happens with an invalid selection, or how it differs from a direct patch operation. This is insufficient for a tool that performs a geometric modeling operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose statement followed by clearly formatted Args and Returns sections. No redundant or filler content is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter schema and an output schema, the description is mostly adequate: it explains the purpose, the key parameters, and the return shape. However, it lacks usage context, alternative differentiation, selection preconditions, and side-effect disclosure, leaving some ambiguity for an agent choosing among many similar surface-creation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions (0% coverage), so the description's Args section adds meaningful value by defining u_spans and v_spans as 'Number of surface spans in the U/V direction' and mentioning the controller argument. It does not provide ranges or guidance for choosing span counts, but it compensates well for the schema's silence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Fit a patch surface') and a clear input source ('selected curves or point objects'). It is more informative than a bare name, though it does not differentiate this 'cmd' variant from the similarly-named sibling tool rhino_patch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like rhino_patch, rhino_network_surface, or rhino_surface_from_points. The description implies that curves or point objects must be selected, but it does not explicitly instruct the agent on prerequisites or when this command is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_plane_surfaceB
Create a flat rectangular NURBS surface in Rhino.
Args:
controller: RhinoController instance.
x, y, z: First corner of the surface.
length: Size along the X axis.
width: Size along the Y axis.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| width | No | ||
| length | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It states the action (create a surface) and the return shape (dict with status and command), but does not explain side effects, prerequisites, or whether the command actually executes immediately. Some behavior is disclosed, but significant transparency gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized with a purpose statement, Args list, and Returns section. It is not wasteful, but the controller argument not present in the schema and the Returns detail that may be redundant with an existing output schema slightly reduce clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool, the description covers purpose, parameters, and return keys, but with 0% schema coverage and no annotations it should do more. It lacks guidance on how this differs from rhino_plane_surface, what 'command' means, and whether an active Rhino document is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are absent, and the description compensates by defining x/y/z as the first corner, length as size along X, and width as size along Y. This adds real meaning beyond the raw schema. However, it also mentions a 'controller' argument that is not present in the input schema, which introduces confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a flat rectangular NURBS surface in Rhino, which is a specific verb and resource. It does not differentiate from the closely named sibling rhino_plane_surface, 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 guidance is provided about when to use this tool versus rhino_plane_surface or other surface creation tools. There are no alternatives, exclusions, or contextual conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_polygonA
Draw a regular polygon by center and circumradius.
Args:
controller: RhinoController instance.
cx, cy, cz: Center of the polygon.
sides: Number of sides (>= 3).
radius: Circumradius (vertex distance from center).
inscribed: If True, polygon is inscribed in a circle of *radius*;
if False, polygon is circumscribed around that circle.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | Yes | ||
| cy | Yes | ||
| cz | Yes | ||
| sides | No | ||
| radius | No | ||
| inscribed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the behavioral burden. It states that the tool draws a polygon and clarifies the inscribed/circumscribed distinction, which is useful. However, it does not disclose side effects such as whether a polygon object is persisted in the current Rhino document, whether an open document is required, or how errors are surfaced beyond returning a status.
Agents need to know what a tool does to the 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 essential purpose and uses a compact Args/Returns structure. Each parameter line adds meaningful detail, so there is no filler, but the docstring formatting is slightly more verbose than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 drawing tool with six parameters, the description covers all inputs and the return envelope. It would be more complete if it stated the expected Rhino session context and explicitly addressed the sibling rhino_polygon, but as given it provides enough information to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must and does compensate: it explains every key parameter, including the meaning of radius as 'circumradius (vertex distance from center)' and the behavior of inscribed. It loses a point because the description mentions a 'controller' parameter that is absent from the input schema, and it does not specify units or coordinate format for cx, cy, cz.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Draw a regular polygon by center and circumradius.' This clearly distinguishes it from generic drawing tools, though it does not explicitly differentiate itself from the sibling rhino_polygon, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parameter definitions imply that this tool is for creating regular polygons defined by a center and circumradius, which gives clear usage context. However, it does not state when to prefer this tool over alternatives like rhino_polygon or rhino_polyline, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_polylineC
Draw an open polyline through a list of 3-D points.
Args:
controller: RhinoController instance.
points: Ordered list of (x, y, z) tuples (>= 2 required).
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does state the output keys and that the polyline is open, but it omits important behavioral context such as whether the tool modifies the Rhino document, how errors are handled, or how points should be encoded. This is minimal transparency for a drawing/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 compact and front-loaded: the first sentence gives the tool's purpose, followed by clear Args/Returns sections. It is appropriately sized, though the controller line is misleading and unnecessary given the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic operation and return shape, but it is incomplete for reliable selection and invocation. It fails to differentiate from the rhino_polyline sibling, and the points type mismatch plus lack of encoding format creates real ambiguity. For a tool in a large sibling list, this is not enough context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds useful semantic detail by defining points as an ordered list of (x, y, z) tuples with at least 2 required. However, this conflicts with the input schema, which declares points as a string, and the description also mentions a 'controller' argument that is absent from the schema. No serialization/encoding instructions are provided, so an agent may invoke the tool incorrectly.
Input schemas describe structure but not intent. Descriptions should explain 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 action and resource: 'Draw an open polyline through a list of 3-D points,' which clearly conveys the tool's main function. However, it does not distinguish this tool from the sibling rhino_polyline or other polyline-adjacent tools, so it earns a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like rhino_polyline or rhino_smooth_polyline. There are no explicit selection criteria, exclusions, or context signals to help an agent choose correctly, leaving usage entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_rebuild_curveB
Rebuild the selected curve with a specified number of control points and degree.
The curve must be pre-selected before calling this function.
Args:
controller: RhinoController instance.
point_count: Target number of control points.
degree: Target polynomial degree.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| degree | No | ||
| point_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only source of behavioral detail. It discloses that the tool acts on a preselected curve and returns a dict with 'status' and 'command' keys, which is useful. It does not discuss whether the original curve is replaced in place, validation limits on degree or point_count, or error conditions, so behavioral transparency is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-sentence summary, a key precondition, then Args and Returns sections. The controller line and the repetition of parameter names are minor noise, but overall the structure is clear and 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?
For a simple two-parameter mutation tool, the description covers the core operation, prerequisite, parameter meaning, and return key shape, and an output schema exists. It omits decision-relevant information: which sibling it should be chosen over, what values of degree and point_count are valid, and whether the rebuild replaces the original curve. This is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains bare properties with defaults and no descriptions (0% coverage), so the description's definitions of point_count as 'Target number of control points' and degree as 'Target polynomial degree' add real meaning. However, the Args section also lists a controller parameter absent from the input schema, creating a contract mismatch, and no ranges or relationship between point_count and degree are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise action and target: 'Rebuild the selected curve with a specified number of control points and degree.' This clearly identifies the operation and distinguishes it from surface-related rebuild siblings. It does not, however, differentiate from the nearly identical sibling rhino_rebuild_curve, so it cannot receive full credit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 sentence 'The curve must be pre-selected before calling this function' gives a concrete precondition and therefore tells the agent when invocation is allowable. But the description never explains when to prefer this tool over siblings like rhino_rebuild_curve or rhino_rebuild, and it gives no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_rectangleC
Draw a planar rectangle defined by two corner points.
Args:
controller: RhinoController instance.
x, y, z: First corner of the rectangle.
width: Size along the X axis.
height: Size along the Y axis.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| z | Yes | ||
| width | Yes | ||
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral effects, but it only says 'Draw' and mentions a return dict with status/command. It does not clarify that this creates a new object in the active document, which layer or plane it affects, or what side effects occur. The 'two corner points' phrasing also misrepresents the actual behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and organized with Args/Returns sections, but the redundant and inaccurate 'two corner points' clause and the unused controller argument add confusion without adding value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It provides enough parameter-level information to attempt a basic call, but it lacks units, coordinate system/plane context, and clarification of the corner-vs-dimension mismatch. Given no annotations, this leaves important context unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameter meanings in the description are essential and mostly helpful: x/y/z as first corner, width along the X axis, height along the Y axis. However, all parameters are strings and the description does not explain the expected format or units, and it lists a 'controller' argument that is absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the core action and object ('Draw a planar rectangle'), but it is misleading: it says 'defined by two corner points' while the parameters only define one corner plus width and height. It also does not differentiate this from the closely named sibling rhino_rectangle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus rhino_rectangle, rhino_box, or other geometry-creation tools. No prerequisites, context, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_redoC
Redo one or more operations.
Args:
controller: RhinoController instance.
steps: Number of redo steps (default 1).
Returns:
Dict with the result of the last redo command.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It says 'Redo one or more operations' and what the return value is, but does not explain that this modifies document state, whether changes are reversible, how it interacts with the undo/redo stack, or what happens when there is nothing to redo.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose, and the args/returns structure is easy to scan. However, the mention of 'controller: RhinoController instance' is irrelevant to the actual schema and should be removed, and the parameter explanation 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 simple single-parameter tool, the description provides the minimally necessary information: what it does, the parameter meaning, and the return type. However, it lacks any mention of undo-stack requirements, error conditions, or relationship to sibling undo/redo commands, leaving the agent without enough context in ambiguous situations.
Complex tools with many parameters or behaviors need more documentation. Simple 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 needed to explain the parameter meaning, but it only restates the schema's name and default: 'steps: Number of redo steps (default 1).' It adds no constraints, valid ranges, or edge-case behavior. It also lists a 'controller' argument that is not present in the input schema, which is misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Redo one or more operations,' which clearly identifies the action and target resource. It is understandable on its own, but it does not distinguish itself from sibling tools like rhino_redo or rhino_cmd_undo, so it misses the differentiation needed for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_undo, rhino_cmd_undo, or rhino_redo. The description does not mention undo history prerequisites, when a redo would fail, or situations where another tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_reduce_meshB
Reduce the polygon count of selected meshes.
Args:
controller: RhinoController instance.
polygon_percentage: Target polygon count as a percentage of original.
allow_distortion: Allow some geometric distortion to achieve target count.
| Name | Required | Description | Default |
|---|---|---|---|
| allow_distortion | No | ||
| polygon_percentage | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the operation reduces polygons and that allow_distortion permits geometric distortion, but it does not state whether the action is destructive, reversible, or how it affects the original mesh objects. This is a significant gap for a mesh-modifying operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and uses a clean docstring format, with the core action stated first and parameters listed compactly. However, the 'controller' argument line adds little value for the agent since that parameter is not part of the input schema, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mesh-reduction operation with no annotations, the description omits important context such as whether selected meshes are modified in place, whether the operation can be undone, and what constraints apply to polygon_percentage (e.g., valid range). The presence of an output schema reduces the need to explain return values, but the tool's mutation behavior and selection prerequisite are not adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only titles and defaults with 0% schema description coverage, so the description must define both parameters. It does so meaningfully: polygon_percentage is explained as a target percentage of the original count, and allow_distortion is clarified as permitting geometric distortion to meet the target. It also mentions a 'controller' parameter, though that parameter is absent from the schema, which introduces mild confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Reduce') and the resource ('polygon count of selected meshes'), making the tool's primary function evident. However, it does not distinguish itself from the sibling tool 'rhino_reduce_mesh', which appears to serve an overlapping purpose, so differentiation is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool operates on selected meshes and targets a polygon percentage, but it gives no explicit guidance on when to choose this tool over alternatives like rhino_reduce_mesh, rhino_quad_remesh, or rhino_rebuild_mesh. No when-to-use or when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_render_to_fileB
Render the scene and save the result to a file.
Args:
file_name: Output filename (saved to D:/RhinoFiles/).
width: Render width in pixels.
height: Render height in pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| file_name | No | render.png |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It reveals the output location (D:/RhinoFiles/) but does not explain what 'the scene' is, whether it uses the current viewport, whether an existing file is overwritten, or whether the operation modifies the document. These are important behavioral gaps for a file-producing 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 short and front-loaded with the key purpose. The Args list is minimal and adds semantic context. No waste, though a one-line example of the expected file path could make it even 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 simple three-parameter tool, the description is nearly sufficient, and the output schema covers return values. But it leaves ambiguities: which viewport/scene is rendered, whether render settings are read from the document, and how the file path interacts with the working directory. Given the existence of near-identical siblings, more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple 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 adds meaning to each parameter: file_name is the output filename saved to D:/RhinoFiles/, width and height are in pixels. This goes beyond the bare schema titles and gives the agent usable semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Render the scene and save the result to a file.' This identifies the tool as a render-to-file operation. However, it does not differentiate itself from the sibling rhino_render_to_file or other rendering tools, so it loses one point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of the many related siblings such as rhino_render_to_file, rhino_render_preview, or rhino_render_setup. The description only explains the action, not the selection criteria or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_revolveA
Revolve the selected profile curve around the World Z axis.
The profile curve and axis start/end points must be pre-selected or
implied by the current selection. The axis is assumed to run along
the world Z axis through the origin (0,0,0) -> (0,0,1).
Args:
controller: RhinoController instance.
angle: Total revolution angle in degrees (360 = full solid).
start_angle: Starting angle in degrees (0 = +X direction).
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | ||
| start_angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden and does explain the axis convention and the return shape ('status' and 'command' keys). It does not disclose whether the source profile is retained or consumed, what failure conditions look like, or how conflicting selected axis points are handled relative to the assumed World Z axis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is organized with Args/Returns and stays under roughly 100 words, with the key axis constraint front-loaded. The mention of `controller` and the slight redundancy between pre-selected axis points and the assumed World-Z axis keep it from being perfectly lean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core invocation path is covered: selection prerequisite, angle/start_angle meanings, and return shape, and an output schema exists. However, the relationship between selected axis start/end points and the 'assumed' World Z axis is ambiguous, and there is no guidance on error or edge cases, so an agent could mis-infer behavior when selections conflict.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the parameters; it does so with units and reference directions: `angle` in degrees with 360 meaning full solid, and `start_angle` in degrees with 0 meaning +X. It lists a `controller` argument that is absent from the input schema, which introduces minor ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Revolve the selected profile curve') and pins the operation to the World Z axis, so an agent can understand what the tool does. It does not explicitly differentiate itself from the near-named sibling `rhino_revolve` or `rhino_rail_revolve`, 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?
It gives clear preconditions: the profile curve and axis start/end points must be pre-selected or implied by the current selection, and it states the fixed axis assumption. It does not mention when to prefer `rhino_revolve` for arbitrary-axis revolves, but the context provided is otherwise sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_rotateA
Rotate selected objects around a center point in the active construction plane.
For a true 3-D axis rotation use :func:`rhino_rotate_3d` instead.
Args:
controller: RhinoController instance.
cx: X coordinate of the rotation center.
cy: Y coordinate of the rotation center.
cz: Z coordinate of the rotation center (ignored for planar rotate).
angle: Rotation angle in degrees.
axis: Axis hint ('x', 'y', 'z') – kept for API symmetry; planar Rotate
always rotates about the CPlane normal.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | No | ||
| cy | No | ||
| cz | No | ||
| axis | No | z | |
| angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the behavioral burden and discloses that the rotation is planar about the CPlane normal, that cz is ignored, and that axis is only an API-symmetry hint. It could additionally state prerequisites such as needing a current selection and whether the operation mutates objects, but it already conveys the critical behavioral constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the operation, immediately gives the 3-D alternative, then uses a clean Args/Returns structure. Every section 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 simple command with an output schema, the description covers purpose, parameters, and the key alternative. It would be more complete if it stated that the objects must be selected before calling and clarified the relationship to rhino_rotate, but the current definition is sufficient for most invocation scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args block adds real meaning to the schema's bare titles: cx/cy/cz are center coordinates, angle is in degrees, and axis is effectively ignored. This fully compensates for the 0% schema description coverage, though the description lists a `controller` argument that is not present in the input schema, which is a minor mismatch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific action (rotate), a specific resource (selected objects), and the coordinate frame (active construction plane). It also explicitly contrasts itself with rhino_rotate_3d, so an agent can distinguish the planar operation from true 3-D rotation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit exclusion: 'For a true 3-D axis rotation use rhino_rotate_3d instead.' However, it does not disambiguate from the closely named sibling rhino_rotate, which is likely the main alternative for the same planar operation, so the guidance is good but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_saveB
Save the current document to its existing file path.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates the target is an existing file path, implying overwrite behavior, but it does not explicitly state that the file will be overwritten, whether a prompt may appear, or what happens if the document has never been saved. For a state-changing operation, this is a meaningful transparency 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 short and front-loads the core purpose in the first sentence. The Args and Returns sections are minimal but conventional; the controller line adds little value and the return description is vague, but overall the structure is clean and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple operation and an output schema exists, so full return-value documentation is not strictly needed. Still, the absence of annotations and the lack of explicit overwrite/error context means the description is only minimally complete for an agent that must decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing for the description to document at the schema level. However, the description mentions 'controller: RhinoController instance,' which is not reflected in the schema and is not an actionable user-facing parameter; this slightly muddies the parameter story rather than adding useful semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and target: 'Save the current document to its existing file path.' This makes the tool's purpose immediately understandable. However, it does not explicitly distinguish itself from closely related siblings like rhino_save, rhino_save_as, and rhino_save_copy, so it misses full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing file path' implies this is for saving without a file dialog or new path, which gives some usage context. There is no explicit guidance on when to choose this tool over rhino_save, rhino_save_as, or rhino_save_copy, so usage guidance is only implied rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_scaleB
Uniformly scale selected objects about a center point.
Args:
controller: RhinoController instance.
cx: X coordinate of the scale origin.
cy: Y coordinate of the scale origin.
cz: Z coordinate of the scale origin.
factor: Scale factor (>1 enlarges, <1 shrinks).
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | No | ||
| cy | No | ||
| cz | No | ||
| factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing side effects. It states that it scales selected objects, implying a scene modification, but does not clarify whether it modifies objects in place or creates copies, what happens with no selection, or whether the operation is reversible/undoable. This is a meaningful gap for a transformation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the one-line summary, followed by a succinct parameter list. No redundant prose appears. The 'Returns: Dict with command result' line is somewhat vague, but since an output schema exists, it does not meaningfully hurt the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameters are fully documented and an output schema is present, so the call itself is clear. However, the description omits usage context and behavioral caveats: no note on selecting objects beforehand, no warning that this modifies the model, and no guidance on choosing this over rhino_scale. Given the lack of annotations, these gaps make the description adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so thoroughly: cx, cy, cz are explained as coordinates of the scale origin, and factor is explicitly defined with '>1 enlarges, <1 shrinks'. This goes well beyond the schema's bare titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Uniformly scale selected objects about a center point.' The word 'uniformly' distinguishes it from non-uniform scale siblings like rhino_scale_1d, rhino_scale_2d, and rhino_scale_nu, but it does not differentiate from the similarly named sibling rhino_scale.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. There is no mention of the relationship to rhino_scale, non-uniform scaling options, or any prerequisites such as pre-selecting objects. The only implicit usage signal is that the tool scales selected objects uniformly, which is more purpose than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_sectionA
Create a cross-section curve through selected surfaces at a plane.
The plane origin and normal are set interactively in Rhino.
Args:
controller: RhinoController instance.
plane: Named plane hint ('WorldXY', 'WorldYZ', 'WorldXZ').
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| plane | No | WorldXY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It does mention that the plane origin and normal are set interactively in Rhino, and that the return is a 'Dict with command result.' However, it does not state whether the command creates a new object in the document, whether prior selection is required before calling, or any side effects. It is partially transparent but leaves key behavioral aspects 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?
The description is concise and well-structured: a one-sentence purpose, a note about interactivity, and a clear parameter listing. No redundant or filler content. It earns full marks for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a simple tool, the description covers the core purpose, parameters, and return type, but lacks details like whether surfaces must be preselected, what the 'command result' contains, or typical use cases. It is adequate for a minimal understanding but leaves several operational questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no per-parameter descriptions (coverage 0%), so the tool description is the only source of meaning. It explains both parameters: 'controller: Rhino instance' and 'plane: Named plane hint ('WorldXY', 'WorldYZ', 'WorldXZ').' This fully compensates for the missing schema descriptions and gives the agent the necessary value constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a cross-section curve through selected surfaces at a plane.' It uses a specific verb and resource, and the mention of 'selected surfaces' distinguishes it from tools that operate on all objects. However, it does not explicitly differentiate from nearby siblings like rhino_contour or rhino_section_at_axis, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It neither names alternative tools nor explains scenarios where this tool is preferred. The only contextual hint is that the plane is set interactively, which is a behavioral detail, not a usage recommendation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_set_user_textC
Attach custom key/value user text metadata to selected objects.
Args:
key: Attribute key name.
value: Attribute value string.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full disclosure burden. It reveals the tool mutates selected objects by attaching metadata, but says nothing about overwriting existing keys, behavior with multiple selected objects, or what happens when nothing is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action in the first sentence. The Args block is mostly redundant with the schema, but the overall length is appropriate and nothing extraneous is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-string-parameter tool with an output schema, the definition is minimally adequate. Key gaps remain: overwrite semantics for duplicate keys and confirmation that objects must be pre-selected (only implied by 'to selected objects').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. Its Args section ('key: Attribute key name', 'value: Attribute value string') is nearly a restatement of the parameter names and adds little beyond the schema, omitting format or constraint details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Attach custom key/value user text metadata to selected objects.' It clearly communicates this is a metadata write operation and distinguishes it from the getter siblings (rhino_get_user_text, rhino_cmd_get_user_text), but it does not differentiate from the near-identical sibling rhino_set_user_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool, when not to, or which alternative to prefer. The mention of 'selected objects' implies a prerequisite, but it is never made explicit and the overlap with rhino_set_user_text is left unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_shellB
Shell selected solid, removing one or more faces and offsetting the rest.
Args:
controller: RhinoController instance.
thickness: Shell wall thickness.
| Name | Required | Description | Default |
|---|---|---|---|
| thickness | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It does explain the main effect: faces are removed and the remaining solid is offset by a thickness. However, it does not state whether the original solid is destroyed, whether a new object is created, or whether faces must be pre-selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The first sentence states the action and effect, and the Argument section is brief and to the point. No redundant wording or filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a solid-modifying command, the description leaves important operational details ambiguous: how faces to remove are chosen, what the user/agent must select beforehand, and whether the operation is destructive. The output schema may cover return values, but the missing selection/behavioral context makes correct invocation uncertain.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'thickness' as 'Shell wall thickness', which adds real meaning beyond the bare integer schema. It also lists a controller argument, though that parameter is absent from the schema; units or value ranges are not specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear operation: 'Shell selected solid', with a behavioral qualifier ('removing one or more faces and offsetting the rest'). This is specific enough to identify the tool's core intent, though it does not distinguish itself from the closely named sibling 'rhino_shell'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_shell, boolean operations, or other solid-editing commands. It implies a selected solid is required but does not explicitly state prerequisites, exclusions, or selection steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_sphereC
Create a sphere in Rhino.
Args:
controller: RhinoController instance.
x, y, z: World-space center point.
radius: Sphere radius.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral side effects. It does not mention that the command likely modifies the Rhino document, whether it requires an active document, or any undo/redo implications. No annotations are provided to supplement this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single short sentence. It contains no unnecessary words and is well-structured for a simple command. It is easy to read and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the command, the description is minimally sufficient but lacks contextual details such as the coordinate system, default radius interpretation, or relationship to other shape-creation tools. It is complete enough for a basic understanding but not fully rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the parameters (x, y, z, radius). Although the schema lists them with defaults, there is no elaboration on their meaning, units, or coordinate system. The description adds no value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a sphere in Rhino.' It uses a specific verb ('create') and object ('sphere'), making the intended action unambiguous. It also distinguishes from sibling tools that create other primitives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention scenarios where sphere creation is preferred, nor does it reference related tools like rhino_box or rhino_cylinder. No context is provided for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_spiralA
Create a spiral (conical helix) curve in Rhino.
Rhino Spiral prompts: axis start -> axis end -> start radius -> end radius.
We place the axis start at (x, y, z) and axis end at (x, y, z + pitch*turns).
Args:
controller: RhinoController instance.
x, y, z: Base point (axis start).
pitch: Vertical distance per turn.
turns: Number of full turns.
start_radius: Radius at the base of the spiral.
end_radius: Radius at the top of the spiral.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| z | Yes | ||
| pitch | No | ||
| turns | No | ||
| end_radius | No | ||
| start_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It does disclose the axis placement formula and the prompt sequence, which adds some transparency, but it does not mention side effects like creating a document object, coordinate system expectations, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into purpose, prompt context, formula, argument list, and return value, making it easy to scan. The 'Rhino Spiral prompts' line is mildly redundant but still useful context; overall, the structure is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the essential formula and parameter semantics needed to call the tool, and the output schema covers the return structure. It lacks usage guidance relative to sibling tools and does not address units, but for a curve-creation tool with this schema, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain the parameters. It does: every parameter is listed with a concise meaning, including the relationship between pitch and turns in the axis-end calculation. This goes well beyond the bare schema and gives an agent enough understanding to set values correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a spiral (conical helix) curve in Rhino' with a specific verb and resource. It is mostly clear, but sibling tools like rhino_spiral and rhino_helix exist, and the description does not differentiate this tool from 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?
The description explains how the spiral is constructed but provides no guidance on when to use this tool versus alternatives such as rhino_spiral, rhino_helix, or rhino_cmd_helix. It does not mention exclusions, prerequisites, or scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_sweep1B
Sweep a profile curve along a single rail curve.
Typical workflow:
1. Select the rail curve with *rail_select*.
2. Select the profile curve(s) with *profile_select*.
3. Run Sweep1 and accept defaults.
Args:
controller: RhinoController instance.
rail_select: Rhino command to select the rail curve.
profile_select: Rhino command to select the profile curve(s).
closed: If True, produces a closed sweep.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| closed | No | ||
| rail_select | No | ||
| profile_select | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that Sweep1 is run and a dict with 'status' and 'command' keys is returned, but it does not disclose whether the operation modifies the Rhino document, how selection commands are executed, what happens if no curves are selected, or what the 'command' key contains. For a geometry-creating tool, this leaves major behavioral ambiguities.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-line summary, a numbered workflow, an Args list, and a Returns note. It is front-loaded and each section earns its place, though the 'controller' arg entry is redundant with the schema and slightly bloats the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a workflow and return shape, but it leaves out important context: how to construct the selection command strings, whether any objects must already exist, error behavior, and how this 'cmd' variant differs from the sibling rhino_sweep1. The output schema exists, so the return dict description is sufficient, but the operational context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description's Args section is the only source of parameter meaning. It usefully defines rail_select and profile_select as Rhino commands for selecting curves, and closed as controlling whether the sweep is closed. However, it also lists a 'controller' argument that is absent from the input schema, and it does not provide command string syntax or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states 'Sweep a profile curve along a single rail curve,' identifying the specific verb and resource. It does not explicitly distinguish this from the sibling rhino_sweep1 or rhino_cmd_sweep2, but the 'single rail' detail is sufficient for basic purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A typical workflow is provided (select rail, select profiles, run Sweep1), which implies the intended usage scenario. However, there is no explicit guidance on when this tool should be preferred over alternatives like rhino_sweep1 or rhino_cmd_sweep2, nor any 'when not to use' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_sweep2A
Sweep a profile along two rail curves.
Pre-select the two rail curves and at least one profile curve before
calling this function.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose a return shape with 'status' and 'command' keys and the selection-based workflow, but it does not state side effects, whether the command is executed immediately, or what happens with invalid selections. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well organized: core operation first, prerequisite second, then Args/Returns. Every sentence provides necessary information and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough to understand the selection-based workflow and return envelope. However, given the near-twin sibling rhino_sweep2, it does not explain how this command-based variant differs or when to prefer it, and selection-order details for the rails and profile are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so the description has no parameters to explain. It meaningfully covers the effective inputs by naming the RhinoController instance and stating that the real inputs are the pre-selected curves, which is all an agent needs 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 opens with a specific verb and resource: 'Sweep a profile along two rail curves.' It clearly identifies the operation and the geometric inputs. It does not explicitly differentiate itself from rhino_sweep2 or rhino_subd_sweep2, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite: pre-select two rail curves and at least one profile curve before calling. This is helpful, but there is no when-to-use versus alternatives guidance, especially against rhino_sweep2, so usage context is only partly addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_taperB
Apply a taper deformation to selected objects.
The taper axis and extent are picked interactively after the command starts.
Args:
controller: RhinoController instance.
angle: Taper angle in degrees.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does meaningfully disclose that the taper axis and extent are chosen interactively after launch, a significant behavioral trait not visible in the schema. However, it omits other consequential behaviors: whether the deformation is destructive/irreversible, whether the tool fails or blocks in headless execution, and whether pre-selection is mandatory.
Agents need to know what a tool does to the 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 reasonably compact and front-loads the core purpose in the first sentence, followed by the key interactive detail. But it contains redundancy: the angle parameter is described both in the prose and repeated in the Args block, and the docstring-style Args/Returns formatting includes cruft (the controller arg) that has no schema counterpart.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description covers the essentials: purpose, target objects, interactivity, and a generic return note. It is incomplete in that it never addresses the near-duplicate sibling rhino_taper, states no object-type constraints, and does not warn that interactive picking may hinder automated/headless invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds the unit context 'angle: Taper angle in degrees,' which the schema lacks. However, it also documents a 'controller: RhinoController instance' argument that is absent from the input schema, creating confusion about the actual call signature, and it provides no range, bounds, or example for the angle value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Apply a taper deformation to selected objects.' This clearly conveys what the tool does and that it operates on selected geometry. However, it does not differentiate from the sibling rhino_taper, which appears to serve an identical purpose, so the agent cannot distinguish between them from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by noting that selected objects are the target and that 'the taper axis and extent are picked interactively after the command starts,' which signals this is an interactive command. But it provides no explicit when-to-use guidance, no exclusions, and no alternatives, leaving the agent to infer that this tool is appropriate when interactive input is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_torusB
Create a torus in Rhino.
Args:
controller: RhinoController instance.
x, y, z: World-space center of the torus.
major_radius: Distance from the torus center to the tube center.
minor_radius: Radius of the tube cross-section.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| major_radius | No | ||
| minor_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It reveals the return shape ('Dict with status and command keys'), hinting at a command-generation pattern, but it does not state whether the command executes immediately, what status values occur, whether the operation is undoable, or what side effects on the Rhino document occur beyond the obvious creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and scannable with clear Args and Returns sections, front-loading the core purpose in the first sentence. It contains no filler, repetition, or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple five-parameter creation tool with defaults on everything, the description covers the essentials, and the status/command return disclosure is useful. But it leaves open how the returned command is consumed, when to prefer this over rhino_torus or rhino_subd_torus, and radius validity constraints, which matters more given there are zero annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by explaining every parameter: coordinates are 'World-space center', and the two radii are defined in geometric terms the schema lacks. Minor gaps: the 'controller' argument is mentioned but absent from the schema, and no positivity constraints are given for the radii.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Create a torus in Rhino') and adds meaningful geometric definitions for the radii (major radius as center-to-tube-center distance, minor radius as tube cross-section radius). However, it does not differentiate from sibling tools rhino_torus and rhino_subd_torus, leaving the agent to infer which variant this is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 contains no guidance on when to use this tool versus alternatives. There are no exclusions, prerequisites, or selection criteria to distinguish it from rhino_torus or rhino_subd_torus, so an agent scanning the sibling list gets no decision signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_turntableB
Animate the viewport in turntable rotation.
Args:
frames: Number of animation frames.
pause: Pause duration between frames in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| pause | No | ||
| frames | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool animates the viewport, implying it affects display rather than geometry, and documents frames and pause parameters. However, with no annotations available, it does not disclose whether the animation loops, blocks execution, or affects render settings. This leaves some behavioral ambiguity for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a single clear purpose sentence followed by direct parameter documentation. Every sentence contributes useful information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers the core function and parameters, and an output schema exists so return values are not a concern. However, the lack of annotations and missing usage guidance about related turntable/render tools leaves the context incomplete for an agent deciding between similar operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explicitly defining both parameters: frames as the number of animation frames and pause in seconds. It adds meaning and units that the bare schema does not provide, though it omits constraints like positivity or typical ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Animate the viewport') and the specific behavior ('turntable rotation'), making the tool's core purpose evident. However, it does not explicitly distinguish this from closely related siblings like rhino_turntable or rhino_turntable_render.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as rhino_turntable_render, rhino_view_set, or rhino_turntable. There are no prerequisites, exclusions, or contextual hints about choosing this command.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_twistC
Apply a twist deformation to selected objects.
The twist axis is picked interactively.
Args:
controller: RhinoController instance.
angle: Total twist angle in degrees.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the axis is picked interactively, but does not mention the effect on objects, undo behavior, or that it modifies the selection. Since there are no annotations, the description carries the full burden and is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no extraneous words. It is efficient and to the point, but lacks the detail needed for a complete tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and an interactive step, it omits parameter explanation and expected outcome. The description is incomplete for an agent to use 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?
The 'angle' parameter is not described at all. There is no mention that angle is the twist angle in degrees or any unit. With 0% schema coverage, the description adds no meaning to the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it applies a twist deformation to selected objects and mentions interactive axis picking. However, it does not differentiate from the similar-sounding rhino_twist among siblings, so slightly less clear on purpose differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this command versus other deformation or twist tools. It doesn't mention prerequisites, intended scenarios, or cases where alternative tools might be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_undoC
Undo one or more operations.
Args:
controller: RhinoController instance.
steps: Number of undo steps (default 1).
Returns:
Dict with the result of the last undo command.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of disclosing behavioral traits. It states the undo action and return value but does not mention side effects such as clearing redo history, behavior when the undo stack is empty, or whether excessive steps are safely clamped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core purpose, and organized with Args/Returns sections. The controller line is not schema-backed and adds minor noise, but otherwise the content is compact and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and an output schema, the description covers the core invocation and return information. It is not fully complete because it omits edge-case behavior such as empty history or excessive undo steps, and it does not clarify how this tool relates to the sibling undo/redo commands.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate; it adds 'Number of undo steps' and the default, but this mostly restates the schema's title and default value. It also mentions a 'controller' parameter that is absent from the input schema, which could mislead an agent about how to invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and target with 'Undo one or more operations', making the tool's purpose obvious. It does not differentiate itself from the similarly named sibling tools rhino_undo, rhino_redo, and rhino_cmd_redo, stopping short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus rhino_undo, rhino_cmd_redo, or other related commands. There are no conditions, exclusions, or alternative recommendations, so an agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_unweld_meshB
Unweld mesh vertices where the edge angle exceeds the tolerance.
Args:
controller: RhinoController instance.
angle: Minimum angle (degrees) to unweld at.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full disclosure burden. It does not state that the operation mutates the selected mesh, whether a mesh must be selected first, whether it can be undone, or what the tool returns. The verb 'unweld' and the angle condition are the only behavioral hints.
Agents need to know what a tool does to the 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 active sentence is front-loaded and efficient. The Args block adds a small amount of redundancy since controller and angle could be inferred from schema and context, but the overall description remains short and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating Rhino tool with no annotations, the definition is incomplete: it never says which mesh objects are affected, how objects are selected, or what happens after the operation. The output schema may cover return values, but the invocation context is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions (0% coverage), and the description compensates fully for the single parameter: it defines angle as the minimum angle in degrees and links it to the unweld threshold. The controller context is also mentioned, which helps invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('unweld mesh vertices') and a precise condition ('edge angle exceeds the tolerance'), so the core purpose is clear. It loses a point because the sibling list contains both rhino_unweld_mesh and rhino_cmd_unweld_mesh, and the description does not explain what distinguishes this command variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus rhino_weld_mesh or rhino_unweld_mesh, and no prerequisites are stated. The 'where the edge angle exceeds' clause implies a use case, but the near-duplicate sibling makes the missing differentiation a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_volumeB
Calculate the volume of selected closed polysurfaces or meshes.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing volume information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals that the tool operates on selected objects and returns a dict, but it does not disclose whether the operation is non-destructive, what happens with no selection, which units the volume is reported in, or whether it modifies the document. These are meaningful gaps for a calculation tool invoked by an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the action and target are stated first, followed by Args and Returns sections. Every sentence contributes essential information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple zero-parameter analysis tool and an output schema exists, so the description does not need to enumerate return fields. However, it omits useful contextual details such as required selection state, behavior when nothing is selected, units, and how it differs from the near-duplicate sibling rhino_volume. These gaps prevent full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so the baseline is 4. The description references a 'controller' argument not present in the schema, which is a minor inconsistency, but with no actual parameters there is little for the description to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('calculate the volume') and a specific resource type ('selected closed polysurfaces or meshes'), so an agent can understand the core purpose. However, it does not differentiate itself from the sibling tool rhino_volume, which appears to serve the same purpose, so it falls short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when the user wants volume of selected closed polysurfaces or meshes. It also implies that the objects must already be selected. However, it does not explicitly compare to alternatives like rhino_volume or rhino_volume_centroid, nor does it state when not to use this tool, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cmd_weld_meshB
Weld mesh vertices within the given angle tolerance.
Args:
controller: RhinoController instance.
angle_tolerance: Maximum angle (degrees) between faces to weld vertices.
| Name | Required | Description | Default |
|---|---|---|---|
| angle_tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states that vertices are welded within a tolerance; it does not say whether this modifies the selected mesh, whether it is destructive or undoable, or what side effects occur. The angle-tolerance definition adds some clarity but not enough for a mutation command.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and action-first, with no filler sentences. The inclusion of the 'controller: RhinoController instance' line in Args is boilerplate and not reflected in the schema, but overall the structure is reasonably efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mesh mutation command with no annotations, and the description omits essential operational context such as what object is acted on, whether selection is required, and whether the operation is destructive. An output schema exists, but that does not compensate for missing scope and side-effect information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions for parameters, so the description must compensate. It does explain angle_tolerance as 'Maximum angle (degrees) between faces to weld vertices', which adds real meaning beyond the schema. However, the Args section mentions a 'controller' parameter that is not in the input schema, which is confusing and slightly reduces clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Weld mesh vertices') and the key condition ('within the given angle tolerance'), so an agent can identify what the tool does. However, it does not differentiate this tool from the sibling rhino_weld_mesh or from rhino_unweld_mesh/rhino_cmd_unweld_mesh, so sibling distinction is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: if you want to weld mesh vertices within an angle tolerance, this is the tool. But there is no explicit when-to-use guidance, no mention of selecting a mesh first, and no comparison to alternatives such as rhino_weld_mesh or rhino_reduce_mesh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_coneB
Add a cone primitive (bridge required for non-Z axes).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint false, so the description carries some burden. 'Add a cone primitive' implies a document-mutating creation operation, and the non-Z-axis bridge requirement is a behavioral constraint beyond the annotation. Still, it leaves important behavior unexplained, such as the default orientation, return value, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with no filler words. The caveat about non-Z axes is packed into a short parenthetical, but its brevity borders on cryptic, reducing clarity for an agent unfamiliar with the bridge concept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description leaves major gaps: it does not state the default cone axis, how to orient a cone along non-Z axes, what 'bridge' refers to, or how the layers/name/doc_id arguments behave. For a tool with a nested input schema and many sibling primitive tools, this is not enough context for an agent to reliably select and invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the core parameters, and the description does not compensate by explaining base_center, radius, or height. While those names are somewhat self-explanatory, the description provides no additional meaning about orientation, units, or how the parameters interact; the 'non-Z axes' hint is the only oblique reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Add a cone primitive'. This distinguishes it as a primitive-creation tool, though it does not explicitly differentiate it from sibling cone-related tools like rhino_cmd_cone, rhino_truncated_cone, or rhino_subd_cone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'bridge required for non-Z axes' gives a conditional usage constraint, which is useful guidance for when this tool might not be directly applicable. However, it does not explain what 'bridge' means, nor does it specify when to use this over other cone-creation siblings or provide explicit exclusions/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_contourC
Generate equally spaced section curves (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare readOnlyHint=false, so no contradiction exists. The description adds that the tool generates equally spaced curves and has a bridge dependency, but it doesn't explain whether new objects are created in the document, how the bridge requirement affects invocation, or any side effects beyond generation.
Agents need to know what a tool does to the 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 short sentence with no filler, and the core action is front-loaded. The 'bridge required' parenthetical is cryptic but compact; overall this is concise, though under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five required parameters, zero usable schema descriptions for the core arguments, and a nontrivial bridge prerequisite, this description is far from complete. An agent cannot confidently construct a correct call without additional external knowledge about section-curve generation and the bridge requirement.
Complex tools with many parameters or behaviors need more documentation. Simple 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 of the core parameters is effectively 0%, and the description does not mention object_ids, base_point, direction, or interval. 'Equally spaced' loosely implies interval semantics, but the crucial meaning of direction and base_point for section generation is left entirely to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Generate') and the output ('equally spaced section curves'), so an agent knows what the tool produces. However, it doesn't distinguish this from sibling tools like rhino_cmd_contour or rhino_section, and the parenthetical 'bridge required' is cryptic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over rhino_contour alternatives such as rhino_section, rhino_cmd_contour, or rhino_section_at_axis. The phrase 'bridge required' hints at a prerequisite but does not explain what bridge is or why it is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_count_objectsB
Return a count of all objects in the document, broken down by geometry type.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the output type and grouping but does not disclose whether hidden/locked objects are included, whether blocks are counted as single objects, or what happens with an empty document. The read-only nature is implied but not guaranteed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action, includes the key scope qualifier ('all objects in the document'), and specifies the output breakdown. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with an output schema, the description covers the essential behavior: what is counted and how results are grouped. Minor caveats about visibility filters or empty documents are absent, but the tool's simplicity limits the need for more. The output schema handles return structure 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?
The tool has zero parameters and the schema covers 100% of nothing. With no inputs to document, the description needs to add little; the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return a count'), a resource ('all objects in the document'), and the output breakdown ('by geometry type'). This clearly distinguishes it from list-oriented siblings like rhino_list_objects, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_list_objects, rhino_object_quantity, or rhino_layer_count. There is no context about selection scope, document state, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_create_blockB
Create a block definition from currently selected objects.
Args:
name: Name for the new block definition.
base_x, base_y, base_z: Base insertion point coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| base_x | No | ||
| base_y | No | ||
| base_z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears the full burden of behavioral disclosure. It does not explain whether the selected objects remain in the document, are replaced by block instances, or what happens on an empty selection or duplicate block name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is stated in one front-loaded sentence, followed by a compact Args list. There is no filler or unnecessary repetition, making the description easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the basic name and base-point parameters, and defaults are present in the schema, but it omits important operational context for a block-creation tool: whether selected objects are consumed, how the base point affects placement, and how naming conflicts are handled. The available schema/output schema does not compensate for these 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%, and the description adds meaning for all four parameters: name is for the new block definition and base_x/y/z are the base insertion point coordinates. This is helpful, though the base coordinate descriptions are only slightly richer than the schema titles and defaults, and no units or precision details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: creating a block definition from currently selected objects. The phrase 'currently selected objects' helps distinguish it from block insertion/explosion tools, though it does not explicitly differentiate it from the closely related rhino_block_define sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 makes the prerequisite clear: the tool operates on currently selected objects. However, it provides no guidance on when to prefer this tool over rhino_block_define, rhino_block_insert, or rhino_add_objects_to_block, and gives no exclusions or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_create_subdB
Create a SubD object from an existing mesh.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description carries the full burden of behavioral disclosure. It states the creation action but does not describe whether the source mesh is modified or left intact, whether any conversion tolerance or settings affect the result, or what happens to existing SubD data. This is minimal behavioral coverage for a mutation-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence that front-loads the primary action and input type. No filler words or redundant details are present; it earns its place even if it is minimal overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the lack of substantive annotations, the description is not complete enough for an agent to confidently choose and invoke it. It omits when to use it versus similar conversion tools, behavioral side effects, and parameter semantics. The presence of an output schema partially covers return expectations, but the other gaps remain significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage reported at 0%, the description needed to compensate by explaining parameters, but it only echoes the source-mesh relationship already implied by the tool name. It adds no meaning for the `name`, `layer`, or `interpolate_corners` parameters, and only weakly maps to `mesh_id` as 'existing mesh.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Create a SubD object from an existing mesh.' This clearly differentiates from primitive SubD creators like rhino_subd_box or rhino_subd_sphere, which do not require an existing mesh. However, it does not explicitly distinguish itself from the similar-sounding sibling rhino_to_subd, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the user has an existing mesh to convert into a SubD, but it provides no explicit guidance about when not to use this tool, nor does it mention alternatives such as rhino_to_subd or SubD primitive creation tools. The usage context is inferable but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_create_uv_gridB
Create a point grid on a surface at even UV intervals.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title, so the description carries the full behavioral burden. It states that a point grid is created, but does not disclose whether new point objects are added to the document, how the layer parameter is used, whether the operation is reversible, or any side effects on the surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the action and key geometric concept efficiently, which is appropriately concise for the information it provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three required parameters, minimal parameter documentation, and no behavioral annotations, the one-sentence description leaves too much for the agent to infer. Even with an output schema, it lacks guidance on count semantics, layer usage, and when to use this tool over related surface tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is effectively 0% for the nested parameters: u_count and v_count have only titles, and layer has no description. The phrase 'even UV intervals' hints that the counts relate to U/V divisions, but it does not clarify whether counts are points, intervals, or subdivisions, and it says nothing about layer semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and names the exact resource ('point grid on a surface at even UV intervals'). This clearly distinguishes it from related tools like rhino_uv_grid_panels or rhino_evaluate_surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. An agent cannot determine from the description whether this is the right tool compared to rhino_uv_grid_panels, rhino_place_grid, or rhino_panelize_surface.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_curvature_analysisARead-only
Sample Gaussian/mean curvature of a surface (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety, and the description adds a useful dependency ('bridge required') plus the sampled quantities. It does not describe how sampling is performed or what the result represents, though the output schema helps fill that 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?
A single compact, front-loaded sentence with no filler. Both the operation and the important bridge requirement earn their 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 simple one-object read-only analysis with an output schema, the description plus annotations and schema cover invocation adequately. It would be more complete with an explicit pointer to sibling tools, but nothing critical is missing for calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. 'of a surface' clarifies that object_id should identify the surface to analyze, which adds meaning beyond the schema's bare 'Object Id'; however, it does not explicitly map parameters or mention doc_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Sample') and resource ('Gaussian/mean curvature of a surface'), so an agent knows what it does. It does not explicitly contrast itself with siblings like rhino_surface_curvature_at or rhino_curvature_graph, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when Gaussian/mean curvature sampling is needed) and gives a key prerequisite ('bridge required'), but it does not name alternatives or exclusions. An agent must infer the decision boundary versus similar curvature-analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_curvature_graphB
Display a curvature graph on selected curves.
Args:
controller: RhinoController instance.
density: Number of hair samples along the curve.
scale: Scale of the curvature hairs.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| density | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It indicates a display operation and mentions a return dict, suggesting a read-only visualization, but it does not explicitly state whether the document is modified, whether object selection is required, or what happens if no curves are selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose is front-loaded in the first line, followed by compact parameter explanations and a return note. There is minimal fluff, though the Args section includes 'controller' which is not in the input schema and could cause minor confusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 basic purpose, parameters, and return type, which is adequate for a simple visualization tool. However, it omits usage guidance, selection requirements beyond the phrase 'selected curves', and explicit safety/side-effect information. The output schema existing reduces the need to document return structure, but the missing usage and selection context leave notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must define parameters, and it does: density is 'Number of hair samples along the curve' and scale is 'Scale of the curvature hairs.' This adds real meaning beyond the schema's types and defaults. It lacks units or valid ranges, and 'controller' is mentioned but absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Display a curvature graph on selected curves.' This clearly identifies what the tool does. It does not explicitly differentiate from the sibling rhino_curvature_analysis, but the 'graph' focus is reasonably distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like rhino_curvature_analysis. The phrase 'on selected curves' implies a selection precondition, but it never states how to select curves or when this tool should be preferred over other analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_curve_continuityBRead-only
Curve sanity — span count, closed flag, planarity, periodic, validity log.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true, so the read-only nature is disclosed. The description adds the exact metrics computed and the existence of a validity log, which is useful behavioral context beyond the annotation. It does not disclose behavior for non-curve objects or error handling, but the lowered bar with annotations present makes this acceptable. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single telegraphic sentence that front-loads the core concept ('Curve sanity') and then delivers a scannable list of report contents. Every token earns its place; there is zero filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema documenting the report shape, a simple object-reference input, and a read-only annotation, an agent can invoke this tool correctly from the definition. The gaps are the absence of usage guidance and the only-implicit constraint that object_id must reference a curve rather than any object.
Complex tools with many parameters or behaviors need more documentation. 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 nested _ObjectIn schema documents both functional parameters: doc_id ('Document handle id; active targets the current document') and object_id ('Object to validate'). The description adds minimal parameter meaning beyond implying object_id should reference a curve via 'Curve sanity'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (curve) and enumerates the specific checks ('span count, closed flag, planarity, periodic, validity log'), which distinguishes it from siblings like rhino_curve_length and rhino_curve_point_at. However, no explicit verb is present — 'Curve sanity' implies a report/validation action but never states it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided. The description never names alternatives (e.g., rhino_object_info, rhino_validate_brep, rhino_check_bad_objects) or states conditions for choosing this diagnostic over them. Its role as a pre-modeling sanity check is only implied, never recommended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_curve_lengthARead-onlyIdempotent
Return the curve's parametric domain and approximate length.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the length is approximate, which is a behavioral nuance. The read-only and idempotent annotations cover side-effect safety, lowering the bar for the description. No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no redundant words. It efficiently conveys the tool's purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 query tool, the description is sufficient. It implies the curve is an existing object, and the output schema provides return-type details, so the description need not elaborate on the result structure. It lacks explicit mention of edge cases, but these are minor for this kind of function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameter descriptions (0% coverage) and the description itself provides no information about the expected parameter (e.g., its type, name, or how to reference the curve). Agents have to infer the parameter entirely from the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Return') and the specific outputs: the curve's parametric domain and approximate length. This unambiguously distinguishes it from creation or modification tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus other curve-query or measurement tools. It does not mention any prerequisites, conditions, or alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_curve_point_atARead-onlyIdempotent
Evaluate position and tangent at a parameter on the curve.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and idempotentHint annotations already establish that this is a safe, deterministic query. The description adds the position/tangent behavior but does not discuss out-of-domain parameters, tangent normalization, or error behavior; these are partly covered by the schema and output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words: it states the operation and outputs before the parameter context. It is easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only curve evaluation, annotations cover safety, the output schema covers the return shape, and the schema covers the parameter and object identity. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The nested input schema already documents object_id as a curve GUID, t as a parameter within Domain, and doc_id as a document handle. The description adds no extra parameter-level meaning beyond 'at a parameter,' so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Evaluate'), the exact output ('position and tangent'), and the resource ('a curve'). This clearly distinguishes it from curve length, splitting, or surface-evaluation 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 implied: an agent should call this when it needs a point and tangent on a curve at a parameter. However, there is no explicit when-to-use/when-not-to-use guidance or named alternative tool, so it stops short of 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_curve_splitA
Split a curve at the given parameters; original is preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation only sets readOnlyHint=false, so the description's statement that the original curve is preserved adds meaningful behavioral context about non-destructiveness. This helps the agent understand that the operation creates new curve segments rather than replacing the original, which is valuable beyond the sparse annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the operation, the target, the condition, and the preservation behavior with zero wasted words. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and preservation of the original, and an output schema exists for return values. However, it does not clarify whether parameters are normalized or in curve domain units, nor does it explain what happens to the resulting curve segments or how this tool differs from generic split/trim operations, leaving meaningful ambiguity 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 tool description needs to compensate for parameter understanding, but it only says 'given parameters' without explaining curve parameter domains, units, or how doc_id/object_id relate. The input schema has some descriptions, but the description itself adds no parameter-level meaning, leaving an agent to rely entirely on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation (splitting a curve), the resource (a curve), and the conditions (at given parameters), and it adds the key behavioral note that the original is preserved. It does not explicitly name a sibling to distinguish from, but the verb and object are specific enough to separate it from mesh splitting and generic object splitting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool should be used when a curve needs to be split at specific parameter values, giving a clear context for the call. However, it does not explicitly state when to prefer this over alternatives like rhino_split or rhino_trim, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_cylinderC
Add a cylinder; in standalone mode the axis must be world Z.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a write operation (readOnlyHint=false), and the description's 'Add' is consistent with that. The description adds one genuinely useful behavioral fact — the axis is restricted to world Z in standalone mode — but does not disclose what happens if a non-Z axis is passed (error vs. silent coercion) or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with an active verb and zero filler; it is efficiently structured. It is almost too sparse, sacrificing parameter-level guidance for brevity, which caps the score below 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 three required parameters and several options, the description is thin: it covers only the axis restriction. It leaves 'standalone mode' undefined, offers no differentiation from rhino_cmd_cylinder/subd_cylinder siblings, and an output schema exists but does not excuse the missing guidance on required inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage reported at 0%, the description must compensate, but it only adds meaning for one parameter (axis: must be world Z in standalone mode). Required parameters base_center, radius, and height, plus options like capped, layer, name, and doc_id, receive no explanatory treatment beyond their JSON 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 uses a specific verb + resource ('Add a cylinder'), and the annotations title 'Add Cylinder' reinforces it. However, it does not differentiate the tool from close siblings like rhino_cmd_cylinder, rhino_subd_cylinder, rhino_cone, or rhino_box, so an agent cannot tell why this variant exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 choose this tool over alternatives; the sibling list is large but unaddressed. The only conditional note ('in standalone mode') is a constraint, not a routing rule, and 'standalone mode' itself is never defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_daylight_factorARead-onlyIdempotent
BRE simplified daylight factor for a side-lit room.
DF = (W * theta * tau * M) / (A_total * (1 - R^2)) (% as decimal).
For early-stage architectural studies; for radiance-grade accuracy
use ladybug-tools or DAYSIM.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already certify read-only and idempotent behavior. The description adds the exact formula, the output unit ('% as decimal'), and the side-lit-room constraint, which are useful beyond the annotations. It does not clutter with return-type details since an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines: purpose, formula, and usage guidance. No filler; the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a calculation tool with an output schema, read-only annotations, and a formula that ties parameters together, the description is nearly complete. It could be improved by naming sibling tools for comparison, but the required information for calling it correctly 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% per context, and the description compensates by presenting the formula with every variable (W, theta, tau, M, A_total, R) that maps to the six schema parameters. It clarifies the role of optional factors like transmittance, maintenance factor, and reflectance, and the schema supplies defaults and bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a BRE simplified daylight factor calculation for side-lit rooms, including the governing formula. The method and application scope are evident, and the 'early-stage' qualifier distinguishes it from high-fidelity simulation tools, though it does not explicitly differentiate from sibling MCP analysis tools like rhino_direct_irradiance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use the tool ('early-stage architectural studies') and points to ladybug-tools/DAYSIM for radiance-grade accuracy. This gives an agent a clear heuristic for selecting it, though the alternatives are external rather than the sibling tools in this MCP.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_delete_selectedA
Delete the currently selected objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure burden. It says the tool deletes selected objects, which is informative, but it does not mention that deletion is destructive, whether it is undoable, what happens if nothing is selected, or any side effects on the current selection state.
Agents need to know what a tool does to the 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, direct sentence contains the full essential meaning with no filler. It is front-loaded with the action and the object scope, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameters and a simple operation, the description is largely complete. The main gap is the lack of behavioral caveats around destructive changes and empty selection behavior, but the core invocation context 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?
The tool has zero parameters, and schema coverage is 100%, so a baseline of 4 applies. The description usefully clarifies that the implicit input is the current selection, which is the only meaningful semantic context needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and a precisely scoped resource ('currently selected objects'), which clearly differentiates it from sibling tools like rhino_object_delete. The phrase 'currently selected' is a meaningful qualifier that tells an agent exactly what this tool operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: this tool is appropriate when the user wants to delete the objects currently selected in the Rhino document. It does not explicitly name alternatives or when-not-to-use conditions, so it falls short of a 5, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_dimension_alignedB
Add an aligned dimension between two points.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint:false already signals a write operation, and the description's 'Add' is consistent. No additional transparency about side effects or required document state is provided, but there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no unnecessary words. It efficiently conveys the tool's function without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema exists (so return values need not be described), the description lacks contextual details such as typical use cases or differences from sibling dimension tools. It is adequate but not comprehensive for a tool in a large API family.
Complex tools with many parameters or behaviors need more documentation. 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 one required parameter with 0% description coverage. The description text does not explain what the parameter represents (likely an input structure with geometry data), leaving the model without any semantic guidance for the argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and the resource ('aligned dimension between two points'), which distinguishes it from sibling dimension tools like linear or angular. The purpose is immediately unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_dimension_linear or rhino_dimension_angular. The description only states what it does, leaving selection criteria to the model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_dimension_angularC
Add an angular dimension at a vertex.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the description must carry behavioral disclosure. It reveals that the tool creates an angular dimension, but it does not mention side effects, required geometry validity, document targeting, or how the operation interacts with the active document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is concise and easy to parse, though its brevity sacrifices substantive guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this tool creates a geometric annotation requiring a three-point definition, the description is too thin to be complete. It does not explain the roles of center, point_a, and point_b, nor how 'at a vertex' relates to them, making it insufficient for correct invocation without inspecting the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning or relationships of the required parameters center, point_a, and point_b. The phrase 'at a vertex' does not map clearly to the three-point input structure, leaving the agent to infer how to construct the angular dimension.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific action ('Add') and a clear resource ('angular dimension'), and the term 'angular' distinguishes it from sibling dimension tools like rhino_dimension_linear and rhino_dimension_aligned. However, 'at a vertex' is slightly imprecise because the schema requires center, point_a, and point_b, not simply one vertex.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as rhino_dimension_aligned, rhino_dimension_linear, or rhino_angle. There are no exclusions, prerequisites, or context clues beyond the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_dimension_linearC
Add a linear dimension between two points.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Add' is consistent with the annotations' readOnlyHint=false, so there is no contradiction, but it adds no behavioral context beyond what the annotation already signals. No mention of document modification, undo behavior, construction-plane dependence (the optional plane parameter), or what happens with the default 'active' document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At eight words, the description is extremely tight, starts with the verb, and contains no wasted prose. It is slightly too terse for a tool with six parameters and several dimension-type siblings, so it is efficient rather than fully appropriate in size.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema but six input properties and at least three closely related dimension siblings (aligned, angular, add_dimension_linear), an eight-word description is materially incomplete. It omits plane semantics, name/layer assignment, document targeting, and any guidance distinguishing this from the near-duplicate rhino_add_dimension_linear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description should compensate, and it does identify the two required inputs ('between two points' maps to point_a and point_b). However, it gives no meaning for the optional parameters plane (dimension orientation), name, layer, or doc_id, so most of the input surface remains semantically 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?
The description states a specific verb ('add'), a resource ('linear dimension'), and the core input ('between two points'), so an agent can tell what the tool does at a glance. However, it does not differentiate from near-identical siblings such as rhino_add_dimension_linear (nearly the same name) and rhino_dimension_aligned, so an agent cannot pick between them from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use a linear dimension versus the sibling rhino_dimension_aligned or rhino_dimension_angular, which is exactly the kind of distinction this description should clarify (e.g., horizontal/vertical vs. point-to-point measurement). No exclusions, prerequisites, or alternative-selection conditions are given, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_dimension_styleB
Open the Annotation Styles (dimension style) manager.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the core behavior: it opens the annotation styles manager, which implies a UI action rather than a geometric mutation. However, with no annotations, it does not disclose whether the manager is modal, whether it modifies document state, or whether an open document is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. It efficiently communicates the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with an output schema, the description does not need to explain arguments or return values. It is still only minimally complete because it offers no behavioral context and does not disambiguate from the near-identical sibling rhino_annotation_dimension_style.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there are no parameter semantics for the description to add. This is the appropriate baseline for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Open') and a named resource ('Annotation Styles (dimension style) manager'), so an agent can tell this invokes a UI panel. It does not explicitly contrast with the similarly named sibling rhino_annotation_dimension_style, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_annotation_dimension_style or other annotation-related commands. The intended usage is only implied by the generic verb 'Open'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_direct_irradianceARead-onlyIdempotent
Direct Normal Irradiance (W/m^2) clear-sky estimate via Bird + Kasten-Young air mass.
Includes Linke turbidity (1 = very clear, 7 = industrial haze) and site altitude. Pure calculation — no doc edits.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so no contradiction; the description adds value by identifying the model family (Bird + Kasten-Young), defining turbidity scale (1 = very clear, 7 = industrial haze), and explicitly noting it is a pure calculation with no document edits. This goes beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, first sentence states the output and model, second defines key inputs, third disambiguates from document-editing tools. No filler, and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are not the description's job. For a single-required-param calculation tool with read-only and idempotent annotations, the description is mostly complete, but it omits which params use defaults, that latitude/longitude/timezone defaults correspond to a specific location, and guidance about the clear-sky assumption limitations (e.g., no clouds).
Complex tools with many parameters or behaviors need more documentation. Simple 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, but it only mentions turbidity, altitude, and site inputs in broad terms. It does not explain latitude/longitude behavior, timezone_offset_h semantics, or the meaning of the single required datetime_iso beyond what the schema's example provides. The default geolocation (Seoul) is also left 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?
The description identifies a specific calculation (clear-sky DNI in W/m^2), names the exact models (Bird + Kasten-Young), lists inputs (turbidity, altitude), and explicitly declares 'Pure calculation — no doc edits', which sharply distinguishes it from Rhino geometry/document-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?
The description implies this is for clear-sky irradiance estimation when a pure calculation is needed, but it never names sibling alternatives like rhino_solar_exposure_estimate or rhino_sun_position, nor states when those would be preferable. The 'no doc edits' note hints at a read-only use case, but there is no explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_display_mode_setA
Switch the active viewport's display mode.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a mutation (readOnlyHint=false). The description adds the scope 'active viewport', which is useful behavioral context. But it does not disclose additional traits like whether the change persists, is undoable, or how invalid mode names are handled. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that states the exact action and scope with no filler. It is front-loaded and efficient, earning a top score for 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 simple setter with one required parameter and schema descriptions, the description is nearly complete. The presence of an output schema means return values need not be explained. The only notable gap is the lack of explicit routing among display-related siblings, but the core call context is adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description itself adds no parameter information, and schema description coverage is 0% from the description's perspective. However, the input schema provides descriptions for both 'mode' (with examples) and 'doc_id' (with default), so the schema carries the weight. The description doesn't compensate or add beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Switch the active viewport's display mode.' It specifies the scope (active viewport) and the action, making it clear what the tool does. However, it does not distinguish itself from the similarly named sibling rhino_set_display_mode, so it loses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context is implied: an agent would use this when it wants to change the display mode of the active viewport. However, there is no explicit guidance about when not to use it or which alternative to prefer among the many display-related siblings (e.g., rhino_set_display_mode, rhino_display_show_edges).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_display_show_edgesB
Toggle display of surface/mesh edges.
Args:
show: True to show edges, False to hide.
| Name | Required | Description | Default |
|---|---|---|---|
| show | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that this is a display-level operation affecting surface/mesh edges, implying it is non-destructive to geometry. However, it does not state the scope of the effect (selected objects vs. entire document), whether it persists, or the response shape, and 'toggle' is slightly inconsistent with the boolean parameter that appears to set rather than flip state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized: one leading sentence states the behavior, followed by a single parameter line. There is no filler, and the primary purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-boolean tool with an output schema, the description is mostly adequate. The main gap is that it does not explain the scope of the edge display change or how this relates to sibling edge/display tools. An agent invoking it directly would likely succeed, but it would have to guess about selection or viewport context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no description for the show property, but the description compensates by explicitly stating 'show: True to show edges, False to hide.' This gives the agent precise semantics for the only parameter. It does not go beyond the obvious boolean mapping, but for a single parameter that is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and resource: 'Toggle display of surface/mesh edges.' This clearly identifies what the tool does and distinguishes it from most sibling geometry/creation/analysis tools. However, it does not differentiate this tool from the similarly named sibling rhino_show_edges, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_show_edges, rhino_show_dir, or rhino_subd_display_toggle. The description gives no context about selection requirements, current viewport behavior, or when this display toggle is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_distanceBRead-onlyIdempotent
Euclidean distance between two points.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds the important 'Euclidean' metric qualifier but does not disclose behavior such as whether coordinates are treated as document units or what unit the returned distance uses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. Every word adds meaning, and it is appropriately sized for a simple utility tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-point distance tool, the description combined with the annotations and output schema is mostly sufficient. It could be more complete with explicit mention of document units or a note distinguishing it from curve-length tools, but the core calling context 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?
The schema description coverage is 0%, so the description needed to compensate for the undocumented top-level args parameter. It only says 'two points' and does not explain point_a, point_b, doc_id, or how the Point3dModel fields map to the calculation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation: compute Euclidean distance between two points. It is not a tautology and the noun phrase is specific enough to distinguish it from curve-length or area tools, though it does not name an alternative or use an explicit verb like 'compute' or 'return'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'between two points' implies when this tool is appropriate: when the user needs a distance between coordinate points. However, it gives no explicit guidance about when to prefer it over related tools like rhino_length, rhino_curve_length, or rhino_cmd_distance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_distributeA
Distribute selected objects evenly along a direction.
Uses rhinoscriptsyntax to compute bounding-box centres and re-space them.
Args:
controller: RhinoController instance.
direction: 'Horizontal' (X), 'Vertical' (Y), or 'Depth' (Z).
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | Horizontal |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does add useful mechanism ('compute bounding-box centres and re-space them') and states it acts on selected objects. It does not disclose side effects such as whether positions are permanently modified, what happens with an empty selection, or undo/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?
The description is short, front-loaded with the purpose, and uses a clean Args/Returns structure. Every sentence adds either purpose, mechanism, or parameter meaning 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 one-parameter tool with an output schema, the description covers the core call details: selection scope, direction values, and spacing method. It is incomplete on usage boundaries versus related sibling tools and on what the command does when no objects are selected, which matters for a mutating 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%, so the description must explain the direction parameter; it does, mapping 'Horizontal' to X, 'Vertical' to Y, and 'Depth' to Z. The only minor gap is mentioning a controller argument in Args that does not appear in the input schema, likely an injected context rather than a user-supplied parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Distribute selected objects evenly along a direction.' It is clear what the tool does, but it does not explicitly differentiate it from sibling tools such as rhino_array_linear or rhino_align, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear — selected objects, a direction, even spacing — so an agent can infer when to call it. However, there are no explicit when-to-use/when-not-to-use statements and no named alternatives, leaving the choice among distribute, align, or array tools to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_document_propertiesC
Open the Document Properties dialog.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says the dialog is opened and a result dict is returned. It does not reveal whether this is a UI-blocking operation, whether a document must be open, whether it changes any state, or what the command result contains.
Agents need to know what a tool does to the 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 description is short and front-loaded, which is good. However, the 'Args' section is unnecessary and inaccurate given the empty schema, and the 'Returns' section is generic boilerplate rather than specific useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description covers the basic action, but it lacks behavioral context such as document prerequisites, whether the dialog blocks execution, and how this relates to similar tools like rhino_document_summary or rhino_object_properties_dialog. It is minimally viable but has 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?
The input schema has zero parameters, so the baseline would normally be 4, but the description explicitly lists 'Args: controller: RhinoController instance', which is misleading because the schema accepts no arguments. This contradiction between the description and schema can lead an agent to attempt passing a parameter that the tool does not declare.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Open the Document Properties dialog') on a clear resource, so the purpose is understandable. However, it does not differentiate this tool from siblings like rhino_document_settings, rhino_document_summary, or rhino_object_properties_dialog, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no prerequisites, and no exclusion criteria. The description only states what it does, not when an agent should choose it or when another document-related tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_document_settingsARead-only
Bundled units / tolerances / base point in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with readOnlyHint=true, indicating no mutation, and adds useful context about which settings are covered. It does not add deeper behavioral detail such as document targeting or output shape, but the annotation and output schema reduce the need for that 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 a single compact phrase with no filler and the key content is front-loaded. It could be marginally improved by using a proper verb such as 'Returns', but it is efficiently worded for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only settings summary with one documented parameter and an output schema, the description is largely sufficient: it names the settings bundled and the annotation clarifies side effects. The main missing element is explicit guidance on when to choose this over individual getter tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention doc_id, but the schema documents it clearly with the default value 'active' and an explanation of its meaning. Since there is only one simple parameter, the description adds little beyond the schema, but no significant gap exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as document settings and states the contents: units, tolerances, and base point, bundled into one call. It lacks an explicit verb like 'returns' or 'gets', but the readOnlyHint and 'Document Settings Summary' title clarify that it is a read-oriented summary rather than a mutation 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?
The phrase 'in one call' implies this tool consolidates what separate unit, tolerance, and base-point tools might do individually. However, it does not explicitly name alternatives such as rhino_document_units_get, rhino_tolerance_get, or rhino_origin_set, nor does it state when this combined call should be preferred over those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_document_summaryBRead-only
Get a high-level summary of the document (object counts, layers, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description need not repeat that this is a read operation. The description adds modest value by indicating what the summary contains (object counts, layers), but it does not disclose behavior such as whether it aggregates across the entire document, handling of the 'active' document, or potential cost on large models. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with the verb first and a parenthetical giving concrete examples. Every word earns its place; there is no filler, ambiguity, or wasted structure for a tool of this simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with an output schema, the description covers the essential function well. It could add one clarifying detail about the default 'active' document behavior or when a summary is preferable to detailed listing tools, but nothing critical is missing given the annotation and output schema already supply 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 reported at 0%, and the description adds nothing about the 'args' parameter or the doc_id field. The nested doc_id does carry its own schema description and a default of 'active', which helps, but the top-level required 'args' object is opaque and the tool description provides no parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('high-level summary of the document') with concrete examples of content (object counts, layers). It is clear enough for an agent to understand the tool's basic function, but it does not explicitly distinguish itself from near-neighbor siblings such as rhino_status, rhino_list_objects, or rhino_layer_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. Given the large sibling list containing similarly described read/query tools (rhino_status, rhino_document_settings, rhino_count_objects, rhino_get_object_info), an agent has no basis to choose this one over those without opening each schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_document_units_getBRead-only
Read the current document unit system.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation, so the description does not need to repeat that. It adds little beyond the annotation, but it does clarify scope ('current document unit system'), and there is no contradiction with the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler or repetition. It fronts the key action and resource clearly, which is appropriate for a simple getter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with an output schema and a single optional-looking parameter, the description covers the core operation. The only notable gap is not spelling out that doc_id can target a specific document, but the schema itself documents 'active' and document handles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no meaning for the doc_id parameter, and schema description coverage is reported as 0%. Since there is only one parameter and the description does not compensate by explaining how to target a document or use 'active', the agent gets no help from the description for parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Read') and a clear resource ('the current document unit system'), distinguishing it from the sibling 'rhino_document_units_set' and 'rhino_set_units'. An agent can immediately tell this is the getter for units, not a mutator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention that it is for querying only, that 'rhino_document_units_set' is the counterpart for modifying units, or any context on when the doc_id parameter should be something other than 'active'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_document_units_setB
Set the document unit system, optionally scaling existing geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, which is consistent with the 'Set' semantics; there is no contradiction. The description adds the key behavioral nuance that existing geometry may optionally be scaled, which is useful context beyond the annotation. However, it does not disclose the default behavior when scale_existing is omitted (raw coordinates reinterpreted) or any side effects on the active document.
Agents need to know what a tool does to the 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 11-word sentence that front-loads the verb and resource and includes the one important behavioral caveat. Every word earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with an output schema and richly documented parameters, the description captures the core operation and the key behavioral nuance (optional scaling). The main missing element is routing guidance relative to rhino_set_units, which is an ambiguity gap rather than a functional one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the context signal reports 0% schema description coverage (likely a top-level-only computation), the nested $_UnitsSetIn schema provides thorough descriptions for all three parameters: accepted unit aliases, doc_id targeting, and the exact scale_existing semantics. The tool description itself adds nothing beyond echoing 'scaling existing geometry,' so the schema carries the load and a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Set'), a clear resource ('the document unit system'), and adds the optional scaling behavior that defines this tool's scope. It does not, however, distinguish itself from the near-identically-named sibling rhino_set_units, so an agent cannot tell which of the two to pick without opening both schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like rhino_set_units or the read-oriented rhino_document_units_get. No conditions, exclusions, or alternative routing are provided, so the agent must guess which tool fits a given intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_draft_angleCRead-only
Compute draft angles relative to the world Z axis (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a non-destructive operation, and the description's 'Compute' aligns with that. The additional 'bridge required' is ambiguous and does not clearly disclose behavioral constraints or side effects beyond what annotations already cover.
Agents need to know what a tool does to the 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, focused sentence that immediately states the core function. It is appropriately concise and front-loaded, though it omits any detail about parameters or output, which slightly reduces structural 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?
For a simple analysis tool, the description covers the basic purpose but fails to mention the return value, required object selection, or how the output is presented. This leaves significant gaps for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains parameters (doc_id, object_id) but the description provides no explanation of them. With 0% schema coverage, the description adds no value in understanding what inputs are expected or how they affect the computation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes draft angles relative to the world Z axis, giving a specific verb and resource. However, it does not differentiate from the similar sibling tool rhino_draft_angle_analysis, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like rhino_draft_angle_analysis. The note 'bridge required' is a prerequisite but not a usage guideline, leaving the agent without direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_draft_angle_analysisC
Display draft-angle analysis on selected surfaces.
Args:
controller: RhinoController instance.
draft_angle: Reference draft angle in degrees.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool 'displays' an analysis, but does not explain whether it is non-destructive, whether it requires preselected geometry, whether it modifies the model, or what the user should expect visually. The return type is mentioned but without meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core action, which is good. But it wastes a line on an undocumented 'controller' argument and uses boilerplate Args/Returns formatting that adds little for an AI agent selecting the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an analysis tool with no annotations, the description is incomplete. It does not state the prerequisite that surfaces must be selected, how the draft-angle value influences the analysis, or what the resulting command result means. The presence of sibling analysis tools like rhino_draft_angle and rhino_curvature_analysis makes this lack of context more significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description gives meaning to draft_angle as 'Reference draft angle in degrees,' which adds value beyond the bare schema field. However, it also lists a 'controller' argument that does not appear in the input schema, creating ambiguity. With 0% schema coverage, the description should clarify all expected inputs, but it only partially does so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: 'Display draft-angle analysis on selected surfaces.' This is clear enough to identify the tool's function. However, it does not distinguish itself from the closely named sibling tool rhino_draft_angle, so an agent may struggle to choose between 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?
The description implies that the tool operates on 'selected surfaces' but provides no explicit guidance on when to use this tool versus alternatives like rhino_draft_angle or rhino_curvature_analysis. It neither states prerequisites, such as selecting surfaces first, nor mentions when this tool should be preferred over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_drawing_export_pdfC
Export a sheet to PDF (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, indicating a state-changing operation, and the description does not contradict that. Beyond that, the description adds only 'bridge only' as a small operational constraint. It does not disclose that the tool writes a file to disk, whether existing files are overwritten, or what occurs when the specified sheet does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero filler — the verb and target appear immediately. This is appropriately concise, though the brevity comes at the cost of a second sentence that could carry important operational details without harming 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 a file-exporting operation with four parameters (two required), a one-line description is insufficient even though the output schema exists so return values need not be explained. Missing context includes what 'bridge only' means in practice, the side-effect of writing an output file, prerequisites (a sheet must exist), and overwrite behavior. The schema documents structure, not operational semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Per context signals, schema description coverage is 0%, so the description must compensate for undocumented parameters. It only loosely maps to sheet_id via 'a sheet' and says nothing about dpi, the output path requirement, or the doc_id handle (despite the schema containing brief descriptions for path and doc_id). The description does not meaningfully help an agent understand the parameter contract.
Input schemas describe structure but not intent. Descriptions should explain 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 (Export), a specific resource (a sheet), and the output format (PDF), which is confirmed by the annotation title 'Export Sheet to PDF'. It is not a tautology and the 'bridge only' qualifier adds a scope constraint. It does not explicitly distinguish itself from sibling export tools (rhino_export_obj, rhino_export_step, rhino_render_to_file), but the sheet-to-PDF resource mapping makes the purpose reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like rhino_render_to_file, rhino_view_capture_to_file, or the various model export tools. The only constraint, 'bridge only', describes an environment/availability restriction rather than a usage selection criterion, leaving the agent without direction on choosing the right export tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_drawing_section_cutC
Cut a section through objects with a plane and place the trace on a sheet (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint false, so the agent knows this is not a pure read operation. The description adds that it 'cut[s] a section' and 'place[s] the trace on a sheet', which is some behavioral context. However, it does not disclose whether original objects are modified, whether a new drawing sheet is needed, or any side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no filler and front-loads the core action. The parenthetical '(bridge only)' is useful. It earns its place, though it could be more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a fairly complex tool with multiple required geometric parameters (sheet_id, object_ids, plane_origin, plane_normal, target_origin) and no guidance on how to obtain them. The description does not mention preconditions, output expectations, or how the sheet trace behaves. It is far below the minimum needed for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, and the description adds no meaning to any parameter. The tool has a required args object with sheet_id, object_ids, plane_origin, plane_normal, and target_origin, but the description does not explain what these mean for the section cut. With low schema coverage, the description should compensate; it entirely fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (cut a section), the resource (objects), and the outcome (place the trace on a sheet). The '(bridge only)' qualifier adds scope clarity. It does not explicitly name the closest siblings (rhino_section, rhino_section_at_axis), so differentiation is implicit via 'place the trace on a sheet' 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 provides no when-to-use or when-not-to-use guidance. It does not mention alternatives such as rhino_section, rhino_contour, or rhino_drawing_view_place, nor does it state prerequisites like needing an existing sheet or active document. The '(bridge only)' note gives a context restriction but nothing to help an agent choose between this and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_drawing_sheet_createA
Create a sheet container — a rectangle on layer Sheets::<name> carrying user_text metadata.
The rectangle's corners define the sheet bounds; user_text holds the
sheet name, paper size (mm), and scale denominator so subsequent
view-placement / title-block / export tools can re-derive it.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnlyHint=false already marks this as a mutation, and the description adds what is actually created: a rectangle on the Sheets::<name> layer carrying user_text metadata for name, paper size, and scale denominator. It does not state whether layers are auto-created or whether an existing same-name sheet is replaced, but the core side effect is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no redundancy. The primary behavior is front-loaded and the second sentence explains the representation and downstream purpose without 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 schema covers parameter defaults and the output schema exists, the description supplies the missing conceptual model: what a sheet container is, how bounds and metadata are represented, and why this matters for later tools. A small gap is the absence of any note about layer existence or creation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The nested schema already documents name, doc_id, origin, width_mm, height_mm, and scale_denominator. The description adds the useful rationale that paper size and scale denominator are stored in user_text for downstream tools, but it does not explain origin or doc_id and the top-level args wrapper has no 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 names a specific action and object ('Create a sheet container') and distinguishes it from generic geometry creation by specifying the rectangle is placed on layer Sheets::<name> with user_text metadata. This clearly separates it from siblings like rhino_rectangle and the drawing 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 states the intended context: the sheet container is created so subsequent view-placement, title-block, and export tools can re-derive the sheet. It does not explicitly name alternatives or exclusions, but the purpose is specific enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_drawing_title_block_addB
Add the bottom-right title block, north arrow, and scale bar to a sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only mutation, and the description adds placement ('bottom-right') and the fact that all three elements are added together. However, it does not disclose whether an existing title block is replaced, whether the active document is modified, or any preconditions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every phrase contributes information about the action, the elements added, or their placement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 nested input with many fields and 0% schema coverage, the one-line description is thin. It omits prerequisites like an existing sheet, guidance on how the composite tool differs from standalone annotation tools, and behavior of defaults such as add_scale_bar and add_north_arrow. The output schema helps, but the call-side context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low, and the description does not explain the required title block data such as sheet_id, project, title, and date_iso, or the booleans controlling the north arrow and scale bar. It only names the output elements, leaving the agent to rely on raw 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 names the exact objects added (bottom-right title block, north arrow, scale bar), the destination (a sheet), and the action (Add). This clearly distinguishes it from standalone sibling tools like rhino_annotation_north_arrow and rhino_annotation_scale_bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 or alternatives are provided. The agent is not told to prefer this combined tool over adding the components separately, nor what to do if no sheet exists. Usage is only implied by the verb and object, not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_drawing_view_placeA
Project objects to a 2-D view (Make2D) and place the result on a sheet (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the tool is expected to modify or create state, and the description explains that it projects and places geometry. It does not go further to disclose side effects, prerequisites like existing sheets, or whether source objects are altered. The description adds some behavioral context but not extensive detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tight sentence that immediately names the operation and its main outcome. Every phrase contributes meaning, and the 'bridge only' constraint is usefully included without clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rich input schema with descriptions and an output schema, the description covers the essential workflow and availability constraint. It could be stronger by noting that a sheet must already exist and that this tool is for the bridge context only, but the schema supplies the sheet_id origin and the description notes bridge-only usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0%, yet the tool description does not compensate by explaining any of the key parameters such as object_ids, sheet_id, target_origin, view_plane, or viewport_scale. It gives no parameter-level guidance beyond the overall Make2D-and-place concept.
Input schemas describe structure but not intent. Descriptions should explain 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 operation: projecting objects to a 2-D view via Make2D and placing the result on a sheet. The 'bridge only' qualifier adds contextual precision. This clearly distinguishes it from a plain Make2D tool and from sheet-creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you want both a Make2D projection and placement onto a drawing sheet. It also notes the bridge-only constraint, which is a form of exclusion. However, it does not explicitly name alternatives like rhino_make2d for projection-only use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_dup_borderC
Extract border curves from a surface or mesh.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title ('Duplicate Border') and no read-only or destructive hints, so the description carries the full burden. 'Extract border curves' suggests creation of new curve geometry, but it does not disclose whether the original object is modified, what output is produced, how layers are handled, or what happens with invalid inputs. This is a minimal behavioral statement rather than a transparent one.
Agents need to know what a tool does to the 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, high-signal sentence with no filler. The core action, resource, and output are all front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite being a relatively simple tool with an output schema, the description lacks guidance on parameter usage and provides no behavioral context or sibling differentiation. An agent would need to rely on the schema and tool name to determine correct invocation, which is incomplete for a tool with no meaningful annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The provided context signals indicate 0% schema description coverage, and the tool description does not mention any parameters. It does not help an agent understand how to fill object_id, border_type, or layer. The description adds no semantic value beyond the schema field names and schema-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Extract') and identifies the resource ('a surface or mesh') and the expected result ('border curves'). It is clear, but it does not explicitly differentiate itself from similar sibling tools like rhino_dup_edge or rhino_show_edges, so it stops short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is used when border curves need to be extracted from a surface or mesh, but it provides no explicit guidance about when to prefer this tool over alternatives, nor does it state exclusions or prerequisites. The usage context is only implied, not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_dup_edgeC
Extract edge curves from a Brep (all or specific indices).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No side effects or behavioral expectations are disclosed. The tool name and description imply a read-only operation, but it is not explicitly stated whether the document is modified, whether the returned curves are copies, or if there are any side effects. The lack of annotations places the full burden on the description, which does not address these aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately communicates the core function. It is front-loaded with the action and resource, and includes the key optionality without unnecessary detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides essential context: it names the input (Brep) and the output (edge curves). Since an output schema exists, the description need not detail the return structure. It is sufficient for an agent to understand what this tool does, though it does not elaborate on edge cases or usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters (object_id as 'GUID of the Brep' and edge_indices as 'Specific edge indices to extract (None = all edges)'). The tool description adds minimal new information beyond what the schema covers, merely restating the concept of 'all or specific indices'. Given the high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Extract edge curves') and the resource ('a Brep'), and mentions the scope ('all or specific indices'). It is specific enough to distinguish from general geometry tools, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus other edge-related tools available in the sibling set (e.g., rhino_dup_border, rhino_show_edges). There is no mention of typical scenarios, limitations, or comparison to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_edge_srfA
Build a surface from 2, 3, or 4 edge/curve inputs.
Pre-select the bounding edges (2-4) before calling.
Args:
controller: RhinoController instance.
num_edges: Number of edge curves (2, 3, or 4).
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| num_edges | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core behavior—building a surface—and the return shape, but it does not describe side effects, failure conditions, or what happens if the selection count does not match num_edges.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the purpose is stated immediately, followed by the essential precondition and then Args/Returns. There is no filler or redundant material.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the main prerequisite and return shape, but it misses the relationship between num_edges and the number of selected curves, and it includes a phantom controller argument. For a simple creation tool this is nearly sufficient, but the selection-count ambiguity leaves real room for incorrect 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?
The description adds meaning to num_edges by explaining it as the number of edge curves and restricting it to 2, 3, or 4, which the bare schema lacks. However, it also lists a controller argument that is absent from the input schema, which could mislead an agent into passing an invalid parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool builds a surface from 2, 3, or 4 edge/curve inputs. It is specific about both the action and the resource, though it does not explicitly distinguish itself from surface-building siblings like rhino_network_surface or rhino_loft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear, actionable precondition: pre-select the bounding edges before calling. It does not, however, explain when to prefer this tool over alternative surface-creation tools or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_edit_points_offA
Turn off edit point display for selected curves or surfaces.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description itself must disclose behavior; it clearly states that only 'edit point display' is turned off, which suggests a non-destructive visual toggle. However, it does not describe what happens with no selection or whether other object types are ignored, and it does not explicitly confirm geometry is unchanged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or repetition. It front-loads the action and immediately specifies the target and selection scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero parameters, an output schema, and a simple display-toggle operation, this one-sentence description covers the action, target, and selection precondition. It is complete enough for an agent to invoke correctly, though it relies on Rhino domain knowledge of what 'edit point' means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema coverage, so there are no parameter details for the description to add. The baseline of 4 applies because no parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Turn off') and names the resource ('edit point display') plus the objects it applies to ('selected curves or surfaces'). The behavior is clear, although it does not explicitly distinguish itself from the similar-sounding rhino_points_off or rhino_edit_points_on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for selected curves or surfaces' implies the tool operates on the current Rhino selection and only on curve/surface objects. It provides no explicit guidance about when to prefer this over rhino_edit_points_on or rhino_points_off, so usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_edit_points_onA
Turn on edit point display for selected curves or surfaces.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It clearly signals a non-destructive display operation ('edit point display'), and scopes the effect to selected curves or surfaces. However, it does not disclose whether the display state persists, whether it only affects the current document session, or whether selection is required.
Agents need to know what a tool does to the 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 clear sentence with no filler. It front-loads the action and immediately identifies the target objects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 display toggle, the description is sufficient for an agent to invoke it. An output schema exists, so return-value details are not required. It could be slightly stronger with an explicit note that it applies to the current Rhino 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?
The input schema is empty, so there are no parameters to document. The description does not need to add parameter details, matching the baseline for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Turn on') and names the resource ('edit point display for selected curves or surfaces'). It is clearly distinct from siblings like rhino_points_on and rhino_edit_points_off, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is for turning on edit point display on selected curves or surfaces, but it gives no explicit when-to-use guidance or comparison with related tools such as rhino_points_on, rhino_edit_points_off, or rhino_add_control_point. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_ellipseB
Add an ellipse on the world XY plane (rhino3dm builds it as a NURBS approximation).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, which only mark this as non-read-only, the description adds meaningful behavioral context: the ellipse lies on the world XY plane and is built as a NURBS approximation. This helps the agent anticipate the geometric result, though permissions or effect details are not discussed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant wording. Every clause adds useful context: the action, the placement, and the representation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool, the description gives the core geometric and representational context, and an output schema exists so return-value details are not required. However, it omits any coordination with parameter semantics and does not address the z-coordinate behavior despite being restricted to the XY plane.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions no parameter names and does not explain center, radius_x, radius_y, doc_id, layer, or name. Schema description coverage is reported at 0%, so the description was expected to compensate, but it does not. The phrase 'world XY plane' mildly hints at the roles of radius_x and radius_y, but this is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Add an ellipse') and specifies the resource and placement ('on the world XY plane'), also noting the NURBS approximation. It is specific and understandable, though it does not explicitly differentiate itself from sibling tools like rhino_cmd_ellipse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rhino_cmd_ellipse or other curve/primitive creation tools. The description implies usage through its action verb but provides no exclusions, conditions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_ellipsoidA
Create an ellipsoid in Rhino.
Rhino prompts: center -> end of first axis -> end of second axis ->
end of third axis. We supply the three semi-axis end-points along
the world X, Y, Z directions respectively.
Args:
controller: RhinoController instance.
x, y, z: Center of the ellipsoid.
rx: Semi-axis length along X.
ry: Semi-axis length along Y.
rz: Semi-axis length along Z.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| rx | No | ||
| ry | No | ||
| rz | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does add meaningful behavior: the Rhino prompt sequence (center -> end of first axis -> end of second axis -> end of third axis), the world-axis alignment, and the return shape ('Dict with status and command keys'). However, it never explains what 'status' or 'command' contain, does not state that the object is added to the active document, and mentions a 'controller' argument that is absent from the input schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose line, followed by a compact procedural explanation, an Args block, and a Returns line. Each section earns its place. The only structural blemish is the 'controller: RhinoController instance' entry, which documents a parameter not present in the input schema and creates noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, the core calling needs are met: every schema parameter is explained and the construction behavior is described. An output schema exists, so return values need not be re-specified, though the description usefully names the two keys. Gaps remain: the semantics of 'status'/'command' values are undefined, the center's coordinate frame and units are assumed, and the phantom controller argument is left unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple 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: x/y/z are defined as the center coordinates and rx/ry/rz as semi-axis lengths along X/Y/Z, adding real meaning beyond the bare integer fields. The phrase 'semi-axis end-points' slightly conflates lengths with coordinates, but the Args block resolves the intended semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create an ellipsoid in Rhino', a specific verb plus resource, and clarifies the 3D nature by explaining the semi-axis endpoints along world X, Y, Z. It is readily distinguishable from siblings like rhino_ellipse (2D) and rhino_sphere based on the object name and dimensional detail, though it never explicitly contrasts with 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?
Usage is implied rather than stated: an agent can infer this tool is for creating axis-aligned ellipsoids from the purpose line and coordinate convention. However, there is no explicit when-to-use/when-not-to-use guidance or mention of alternatives such as rhino_sphere for equal radii or rhino_ellipse for 2D ellipses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_environment_setA
Attach an HDRI/EXR environment used for lighting + background (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, so the description carries the burden of clarifying behavioral scope. It adds useful context by indicating this is a mutating 'attach' operation and that it affects both lighting and background. It does not disclose side effects like replacing an existing environment or requiring a valid absolute file path.
Agents need to know what a tool does to the 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 conveys the verb, resource, purpose, and scope with no filler. The parenthetical 'bridge only' is compact yet informative, and every part of the 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 relatively simple setter, the description combined with the richly detailed nested schema and output schema gives an agent enough to invoke the tool correctly. The main gaps are behavioral side effects and explicit alternative routing, but the schema covers parameter meanings and defaults well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the context signal reports 0% schema description coverage, the nested input schema actually documents every parameter with descriptions and defaults. The description adds some semantic value by linking HDRI/EXR files to hdri_path and clarifying the lighting/background purpose, but it does not explain rotation_deg, background_strength, or doc_id beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Attach'), names the resource precisely ('HDRI/EXR environment'), and states its purpose ('lighting + background') plus a scope restriction ('bridge only'). It is unambiguous, though it does not explicitly name a sibling tool to differentiate from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when an HDRI/EXR environment needs to be attached for lighting and background in the bridge context. However, it does not explicitly mention alternatives or state when not to use this tool, leaving some selection burden on the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_eval_expressionC
Evaluate a Python expression inside Rhino and return the result.
Args:
expression: A valid Python expression string (e.g. '2 + 2' or 'rs.WorldXYPlane()').
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavioral disclosure. It states that the tool evaluates an expression and returns a result, but it does not warn about potential side effects of arbitrary Python expressions, persistence of state, available RhinoScript modules, or risks of executing code. This is a notable gap for a code-evaluation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core action, and every sentence earns its place. The Args block is minimal and directly tied to the single parameter, 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?
Despite being a single-parameter tool with an output schema, this is an arbitrary code execution tool with significant complexity and risk. The description lacks guidance on expression scope, available Rhino API aliases, side effects, or how to use it safely. It also fails to route the agent to related script-running tools, which leaves the definition incomplete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'expression' as a string with 0% description coverage, so the description must add meaning. It does add 'valid Python expression string' and gives two concrete examples, which helps an agent construct a value. However, it does not elaborate on the evaluation context, supported modules, or whether RhinoScript functions are automatically available.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: evaluate a Python expression inside Rhino and return the result. It is not a tautology and the examples ('2 + 2', 'rs.WorldXYPlane()') clarify the intent, though it does not explicitly distinguish itself from sibling execution tools like rhino_execute_python.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as rhino_execute_python, rhino_run_python, or rhino_run_script_file. The description defines what the tool does but gives no exclusions, preconditions, or selection criteria, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_evaluate_surfaceARead-only
Evaluate a surface at UV parameters to get 3D point, normal, and tangents.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description aligns by describing a non-mutating evaluation operation. It adds that the result includes point, normal, and tangents, but it does not disclose domain assumptions, coordinate reference, or error behavior; the read-only safety profile is already covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb and resource, and no filler. Every word contributes either to the operation or the expected outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query with an output schema and readOnlyHint, the description conveys the core operation and outputs. It lacks explicit object_id semantics and UV-domain guidance, so an agent could call it with out-of-domain parameters without clear warning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names u/v as UV parameters and implies object_id selects the surface, but it does not specify valid parameter ranges, surface domain, or how the tangents are derived, leaving meaningful gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Evaluate'), resource ('surface'), and location ('UV parameters'), and enumerates the outputs ('3D point, normal, and tangents'). This differentiates it from sibling surface-analysis tools like rhino_surface_normal_at or rhino_surface_curvature_at.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the use case: an agent should call this when it needs surface evaluation data at given UV coordinates. However, it gives no explicit conditions, exclusions, or alternative tool names, leaving the agent to infer when this tool is preferred over similar surface-query siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_execute_csharpADestructive
Execute RhinoCommon C# code in a live Rhino session using Roslyn.
SAFETY: This tool runs arbitrary code with full RhinoCommon access.
It is gated behind ``RHINO_MCP_ALLOW_CSHARP=1`` so it cannot fire
accidentally. Set the env var only in trusted sessions.
Globals available to the script:
- ``doc``: the active ``RhinoDoc``
- ``output``: a ``StringBuilder`` — call ``output.AppendLine("...")``
to return text to the caller.
Pre-imported namespaces: System, System.Collections.Generic,
System.Linq, System.Text, Rhino, Rhino.Geometry, Rhino.DocObjects,
Rhino.Commands. Pass ``references`` to load extra assemblies (e.g.
``Grasshopper``).
Example — create a sphere::
var sphere = new Sphere(Point3d.Origin, 5.0);
doc.Objects.AddBrep(sphere.ToBrep());
doc.Views.Redraw();
output.AppendLine("Created sphere");
Changes are wrapped in an undo record. ``timeout_s`` caps total
execution time (default 30s); on timeout the call returns
``success: false`` and the script is best-effort cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses critical behavioral traits: it runs arbitrary code with full RhinoCommon access, is gated behind an environment variable, wraps changes in an undo record, and specifies timeout behavior (returns success:false and best-effort cancellation). This goes well beyond the annotation and sets clear expectations for safety and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but well-structured, with clear sections for safety, globals, namespaces, references, example, and timeout. It is appropriately lengthy given the tool's complexity and the need to convey safety and usage nuances. It is front-loaded with the core purpose and safety warning, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key operational aspects: globals, namespaces, references, example, timeout behavior, and undo wrapping. Since an output schema exists, return values are not required in the description. It does not explicitly mention compilation error handling or how to access the output StringBuilder beyond the example, but these are minor gaps given the overall completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (code, timeout_s, references), covering their meaning and defaults. The tool description adds some context, such as the example and explanation of Assembly.Load for references, but does not substantially enhance parameter understanding beyond the schema. Since schema coverage is high, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute RhinoCommon C# code in a live Rhino session using Roslyn.' It specifies the action (execute), the resource (RhinoCommon C# code), and the context (live Rhino session). This unambiguously distinguishes it from other Rhino tools that perform specific geometry or document operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for custom C# scripting but does not explicitly state when to use this tool versus alternatives like rhino_execute_python. It provides detailed operational guidance (safety, globals, timeout) but lacks an explicit 'use this when...' or comparison to other execution tools. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_execute_pythonA
Execute RhinoScript Python code in a live Rhino session.
CRITICAL — BEFORE USING THIS TOOL:
1. Call rhino_get_rhinoscript_docs(topic) to find correct signatures.
2. Read the documentation carefully — note exact parameter types.
3. Write code using ONLY the documented signatures.
4. Call this tool with the code.
Code requirements:
- Import rhinoscriptsyntax: ``import rhinoscriptsyntax as rs``
- Use ``print()`` to return output/results to the caller.
- Handle ``None`` returns from functions that might fail.
Changes are wrapped in an undo record and will be reverted on failure.
Returns ``success``, ``output`` (print capture), and ``message``
(error details on failure).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no safety annotations beyond a title, the description carries the full disclosure burden. It discloses the live-session nature, undo wrapping, rollback on failure, and return shape. It could go further in warning about arbitrary code side effects or long-running execution, but what it says is material and accurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although longer than average, the description is tightly structured with numbered critical steps and bulleted code requirements. Every sentence contributes to correct usage. The critical warning is front-loaded, making it easy for an agent to follow before invoking.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 highly flexible code-execution tool, the description covers the full invocation path: prerequisite documentation lookup, code construction requirements, failure handling, undo behavior, and the expected response fields. The input schema supplies the exact parameter shapes, and the description fills the behavioral and procedural 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?
The description adds important semantics beyond the schema: import rhinoscriptsyntax, use print() for return values, and handle None returns. However, the optional verified_functions parameter is not mentioned in the prose, even though the schema provides a reasonable description for it. The added code-requirement guidance is genuinely useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Execute RhinoScript Python code in a live Rhino session.' This immediately distinguishes it from C# execution and other Rhino command tools. It also provides the essential execution context without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 an explicit, ordered workflow: call rhino_get_rhinoscript_docs first, read signatures, write code using documented APIs, then execute. This is excellent usage guidance. However, it does not explicitly name alternatives or say when not to use this tool, such as when rhino_run_python or rhino_execute_csharp would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_explodeB
Explode selected polysurfaces, blocks, or groups into component parts.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It does not disclose whether the original objects are deleted, whether it is destructive, whether selections are required, or what happens to nested blocks/groups. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core description is one concise, front-loaded sentence. The 'Args: controller' line is redundant and inconsistent with the empty schema, which prevents a perfect score, but the overall size is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 operation that modifies the model, the description is too sparse: no selection requirements, no destructiveness warning, no mention of how components are returned. The presence of an output schema slightly reduces the need to document returns, but the behavioral essentials are still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is no parameter burden to carry. The description's mention of a controller arg in the docstring is inconsistent with the empty schema but harmless. Baseline for zero-parameter tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Explode' and names the resources: polysurfaces, blocks, groups. It clearly states the operation and target, but does not differentiate from sibling tools like rhino_block_explode and rhino_explode_block, which overlap substantially in audience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool instead of alternatives. There are sibling tools dedicated to exploding blocks (rhino_block_explode, rhino_explode_block), and the description does not clarify whether to use this generic tool for blocks or prefer those, nor mention any prerequisites like selecting objects first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_explode_blockB
Explode selected block instances into their constituent geometry.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the operation and outcome but does not disclose whether the original block instances are deleted, how nested blocks are treated, or what happens if nothing is selected. For a mutating explode operation, this is a notable transparency 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 sentence that states the action, target, and result without filler or repetition. It is appropriately sized for a zero-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?
For a zero-parameter tool with an output schema, the core action and target are present and the return value does not need explanation. However, the description is incomplete because it does not clarify how this tool differs from the similar rhino_block_explode sibling or hint at side effects such as destruction of the original block instance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics for the description to add beyond the empty schema. The description's reference to 'selected block instances' usefully signals that the implicit target comes from the current Rhino selection.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific verb ('Explode') and resource ('selected block instances') and states the result ('constituent geometry'), so the purpose is clear. It does not distinguish itself from the similarly named sibling rhino_block_explode, so it does not earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected block instances' implies a prerequisite that blocks must be selected, but there is no explicit when-to-use guidance. It does not mention when not to use the tool or reference sibling alternatives such as rhino_block_explode or rhino_explode, leaving tool selection ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_exportA
Select all geometry and export to a file.
The export format is inferred from the file extension; ``export_type``
is used as the extension if ``file_name`` has none.
Args:
controller: RhinoController instance.
file_name: Output filename (e.g. 'model.stl') or full path.
folder: Optional folder override.
export_type: File extension / format if not included in file_name
(default 'stl').
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | ||
| file_name | Yes | ||
| export_type | No | stl |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose a notable side effect (selecting all geometry before export) and mentions the return type, but it does not cover overwrite behavior, folder creation, or whether the selection state is 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 docstring is structured, front-loaded with the main action, and reasonably compact. The 'controller' argument line is slightly extraneous because it does not appear in the input schema, but it does not harm readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core export mechanism, parameters, and return value, but omits important file-handling details like overwrite behavior, folder creation, and whether the file path is resolved relative to the Rhino document. It also does not mention how to choose between this generic exporter and the format-specific siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description explains every schema parameter: file_name with an example, folder as an optional override, and export_type with a default and fallback behavior. This fully compensates for the bare input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Select all geometry and export to a file') and clarifies that the format is inferred from the file extension. This makes the tool's purpose clear, though it does not explicitly distinguish it from format-specific siblings like rhino_export_stl or rhino_export_obj.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus the many format-specific export tools, nor any exclusions or alternative routing. The format-inference rule is useful but is a mechanism detail, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_export_dxfB
Export to DXF (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false is consistent with a file-writing export operation, so there is no contradiction. The description adds the 'bridge required' environmental prerequisite, which is useful context beyond the annotations. However, it discloses nothing about side effects such as overwriting an existing file at the target path or failure behavior when the bridge is unavailable.
Agents need to know what a tool does to the 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 short sentence with zero filler and the core information (verb, format, prerequisite) front-loaded. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters at 0% schema coverage, a required path parameter, a write-operation annotation, and roughly a dozen export-format siblings, this description is too thin. It omits what path means, what scope is exported by default, and how to choose this over other export tools, so an agent would have to make unsupported assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description carries the burden of explaining parameters, but it says nothing about path, doc_id, or object_ids. The required 'path' parameter is left entirely undocumented in both the schema and description, so an agent cannot know what to supply for it.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Export to DXF'. The format name itself distinguishes it from sibling export tools like rhino_export_obj, rhino_export_stl, rhino_export_step, and rhino_export_iges. However, it doesn't clarify what gets exported (active document vs. selection), which is partly left to the object_ids parameter to imply.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 choose DXF over the many sibling export tools (obj, stl, step, iges, ifc, gbxml), nor are any alternatives or exclusions named. The parenthetical '(bridge required)' is a precondition for using the tool, not guidance for selecting among alternatives, so it contributes nothing to tool-selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_export_gbxmlB
Export thermal / structural BIM payload to gbXML (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, and the description reinforces a write/export operation without contradicting it. It adds the 'bridge only' and 'thermal / structural BIM payload' context, but it does not disclose behavior such as file overwrite, coordinate/unit handling, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. Every word adds meaning, and the key format and payload are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 relatively simple and has an output schema, so return values do not need explanation. Still, unexplained phrases like 'bridge only', the undocumented object_ids parameter, and the discrepancy around zone_user_text_key's default leave gaps an agent must resolve before confidently invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-level meaning, but the embedded schema does document path, doc_id, and zone_user_text_key. However, object_ids is left undocumented, and the context signal reports very low schema description coverage, so the description could have compensated more than it does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Export'), the target format ('gbXML'), and the payload scope ('thermal / structural BIM payload'). It is unambiguous among the many Rhino export siblings, though it does not explicitly contrast with tools like rhino_export_ifc or rhino_export_obj.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 only usage hint is 'bridge only', which is vague and unexplained. The description does not say when to prefer this over other export formats, nor does it mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_export_ifcA
Export the active document (or a subset) to IFC2x3 / IFC4 / IFC4x3 (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the readOnlyHint=false annotation by noting it exports a subset and names the supported IFC schema versions. However, it does not disclose side effects such as file creation, overwrite behavior, or whether the export requires specific document state or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the core action, scope, and the key format constraint immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 presence of an output schema reduces the need to describe return values, and the description covers the basic export scope and schema options. However, the ambiguous 'bridge only' qualifier and the lack of explicit side-effect or usage context make it incomplete for a tool that writes a file to disk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description partially covers parameter semantics by mentioning the active document/subset (doc_id/object_ids) and schema versions (schema_version). However, with the stated 0% schema description coverage, it fails to compensate for the required 'path' parameter or the 'project_name' and 'entity_type_map' parameters, leaving semantic gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Export'), a concrete resource ('active document (or a subset)'), and the exact output formats (IFC2x3 / IFC4 / IFC4x3). This clearly distinguishes it from sibling export tools like rhino_export_obj, rhino_export_stl, rhino_export_step, and rhino_export_gbxml.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for IFC export and mentions that IFC4x3 is bridge-only, but it does not explicitly state when to prefer this over other export tools or when not to use it. There is no exclusion or alternative guidance beyond the format embedded in the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_export_igesC
Export to IGES (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint: false already signals a write-style operation, and the description is consistent with that. It does add one useful behavioral fact beyond the annotations — the dependency on a bridge — which the annotations do not convey. However, it fails to disclose other behavioral traits such as file overwrite behavior, whether the export targets the whole document, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loads the key caveat, so there is no wasted text. But the brevity reflects under-specification rather than disciplined conciseness: a five-word fragment for a tool with three parameters and a bridge dependency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and annotations signal the write nature, the description is incomplete for an export tool: it never states that the output is written to the given path, does not explain the bridge prerequisite or its failure implications, and provides no guidance on the object_ids restriction beyond what the schema already says.
Complex tools with many parameters or behaviors need more documentation. Simple 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% per the context signal, so the description must compensate for undocumented parameters, but "Export to IGES (bridge required)" says nothing about path, doc_id, or object_ids. The schema itself documents doc_id and object_ids, which carries some weight, but the required path argument is left unexplained and the description adds zero parameter 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?
"Export to IGES" restates the tool name (rhino_export_iges) nearly verbatim, making it a tautology rather than a substantive definition. The only added element is the "bridge required" caveat. It also fails to differentiate from the many sibling export tools (rhino_export_step, rhino_export_obj, rhino_export_dxf, rhino_export_ifc, rhino_export_gbxml).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose IGES over STEP/OBJ/DXF/STL or other export formats, and no exclusions are stated. "Bridge required" alludes to a prerequisite but says nothing about the conditions or workflow in which this tool should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_export_objA
Export selected (or all) objects to a Wavefront OBJ file (mesh-only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, the description adds genuinely useful behavioral context: the 'mesh-only' constraint is non-obvious and critical (agents need to know NURBS geometry won't be preserved), and 'selected (or all)' clarifies export scope. It does not disclose overwrite behavior or tessellation semantics, but the annotations already cover the mutation profile.
Agents need to know what a tool does to the 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 14-word sentence that front-loads the verb and purpose, with the 'mesh-only' qualifier appended without clutter. Every word earns its place; no redundancy with schema or annotation fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 moderate-complexity export tool, the description covers format, scope, and the material constraint (mesh-only), while the output schema and parameter defaults handle the remaining mechanics. It could mention the required path or that NURBS get tessellated, but the essentials for correct invocation are 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?
With schema description coverage reported at 0%, the description must compensate for parameter meaning. 'Selected (or all) objects' maps usefully to the object_ids parameter (default null = all), but nothing is said about the required path parameter or doc_id, leaving those to the schema alone. Partial compensation for the parameter documentation 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 ('Export') and resource (objects to a Wavefront OBJ file), with the key qualifier 'mesh-only' that distinguishes this from other geometry exports. The named format clearly differentiates it from sibling export tools like rhino_export_stl, rhino_export_step, and rhino_export_dxf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 format name implicitly signals when to use this tool (when OBJ output is needed), but no explicit when-to-use guidance, exclusions, or alternative format tools are named. Given the large family of export siblings present, the description leaves routing to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_export_stepA
Export to STEP (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds one useful behavioral fact beyond annotations: the export requires a bridge. However, it does not disclose file-creation behavior, overwrite semantics, or what happens if the bridge is unavailable, and annotations only say readOnlyHint=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?
It is a single front-loaded sentence with no filler; every word contributes. This is a model of concise specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 export operation, the description omits whether a file is written to path, how optional object_ids scope the export, and the expected failure mode without the bridge. The presence of an output schema reduces the need to describe return values, but the input and prerequisite side are still under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description contributes no information about the tool's parameters or how path, doc_id, and object_ids relate to the export. Since schema description coverage is reported as 0%, the description leaves parameter semantics almost entirely to inference from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Export') and a concrete resource ('STEP'), which immediately distinguishes it from sibling exporters such as rhino_export_obj, rhino_export_stl, and rhino_export_dxf. The parenthetical 'bridge required' does not obscure the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies the tool is for producing STEP files, so use context is inferable, but the description does not explicitly say when to choose it over the many sibling export tools or when not to use it. The only additional usage signal is the bridge prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_export_stlB
Export meshes to an ASCII STL file.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint=false, the description conveys a file-writing side effect ('to an ASCII STL file'). However, it does not disclose whether an existing file at the given path is overwritten, whether the Rhino document itself is mutated, or what happens when no meshes exist or object_ids filters everything out. With only a bare annotation, these behavioral details are left uncovered.
Agents need to know what a tool does to the 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 eight-word sentence with zero filler. The core facts (export, meshes, ASCII STL) are front-loaded, and the size is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple export operation: the schema documents doc_id and object_ids, and an output schema exists, so return values need not be explained. But key context is missing — no guidance among the large export-tool family, no overwrite or error behavior, and no explicit statement that this is a file-system write rather than an in-document change.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries the burden of explaining parameters, but it never mentions the required 'path', 'doc_id', or 'object_ids'. The only implicit hint is that 'path' is the file destination; the object-scoping and document-targeting semantics are entirely unaddressed by 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 ('Export'), resource ('meshes'), and format ('ASCII STL file'), adding value beyond the tool name through the 'meshes' scope and the 'ASCII' encoding detail. It implicitly separates itself from sibling exporters like rhino_export_obj or rhino_export_step, though it never names them, so differentiation is inferred 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?
No guidance on when to choose STL over the many competing export tools in the sibling list (rhino_export_obj, rhino_export_step, rhino_export_iges, rhino_export_dxf, rhino_export_ifc, etc.). No prerequisites, exclusions, or hints about mesh-based vs geometry-based workflow needs. The agent must infer the appropriate use case from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_extend_curveC
Extend the selected curve by a fixed length from one or both ends.
The curve must be pre-selected before calling this function.
Args:
controller: RhinoController instance.
length: Extension length.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| length | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It mentions the pre-selection requirement and the return dictionary keys, but it does not disclose whether the original curve is modified or replaced, whether the operation is reversible, what the 'command' string will be, or what 'status' values may appear. For a mutating geometry tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action in the first sentence. The Args/Returns structure is readable and avoids excessive prose. The mention of a 'controller' parameter that does not appear in the schema is a minor structural flaw, but the overall length and organization are appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 geometry-modification tool with no annotations and a low-information schema, the description is incomplete. It does not explain how the caller specifies which end(s) to extend, what units 'length' uses, what happens if no curve is selected, or how the result is returned beyond a vague status/command dict. An agent would struggle to invoke this tool reliably without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the 'length' parameter. It only says 'Extension length,' which adds minimal meaning beyond the parameter's title 'Length.' It does not explain units, valid ranges, or how the length relates to extending one or both ends. Additionally, the description mentions a 'controller' argument that is absent from the input schema, creating confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: extend a selected curve by a fixed length from one or both ends. It names the object type (curve) and the action (extend), which distinguishes it from curve-creation and curve-offset siblings. However, it does not explicitly explain how 'one or both ends' is controlled, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: 'The curve must be pre-selected before calling this function.' This tells the agent when it can be invoked, but it does not offer guidance on when to prefer this tool over alternatives like rhino_extrude_curve or rhino_offset_curve, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_extend_surfaceB
Extend a surface edge by a specified distance.
The edge to extend is selected interactively.
Args:
controller: RhinoController instance.
distance: Extension distance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses interactive selection and a dict result, but does not state whether the operation modifies the existing surface, requires an open document, or what happens if no valid edge is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. It contains no unnecessary prose, though the Args/Returns section is somewhat minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and a 0% schema coverage, the description leaves out important operational details such as distance units, prerequisites, whether the surface is modified in place, and error behavior when interactive selection fails. The output schema likely covers the return structure, but overall context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. 'Distance: Extension distance' adds only marginal meaning beyond the schema field name and does not specify units, sign behavior, or allowed range. The mentioned controller argument is also absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: extend a surface edge by a given distance. It also clarifies that the edge is selected interactively, which distinguishes it from curve-extension tools like rhino_extend_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use this tool: when a surface edge needs to be extended by a numeric distance. The note that the edge is selected interactively gives useful contextual guidance, though it does not explicitly name alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_extrudeB
Linearly extrude a profile curve by distance along direction.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals mutation, and the description adds a concrete behavioral statement: linear extrusion of a profile curve driven by distance and direction. However, it does not mention the document-level effect (e.g., a new extrusion object), capping behavior for closed profiles, or any constraints on the profile curve.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words. The core operation and primary parameters are front-loaded, and every word contributes to understanding what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are not the description's responsibility. However, for a document-mutating CAD tool, the description is thin: it does not clarify the type of result produced, how capping behaves, or whether the profile must be open or closed. It is minimally viable but leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the semantic burden. It helpfully connects profile_id, distance, and direction in one coherent sentence. It does not explain the optional name/layer/capped parameters or the exact vector format for direction, though the nested schema provides examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb ('extrude'), a resource ('profile curve'), and the linear mechanism with distance and direction. It is immediately understandable, but it does not explicitly differentiate itself from sibling tools like rhino_extrude_curve or related surface-generation tools such as rhino_sweep1, rhino_loft, or rhino_revolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this tool over alternatives. The sibling list includes rhino_extrude_curve, rhino_extrude_surface, and numerous surface creation tools, and the description gives no selection criteria, exclusions, or context about prerequisites. The only hint is the word 'linearly,' which is not enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_extrude_curveB
Extrude selected curve(s) to create a solid or surface.
Args:
controller: RhinoController instance.
distance: Extrusion distance.
both_sides: Extrude in both directions symmetrically.
solid: Create a closed solid (cap ends).
delete_input: Delete the input curve after extrusion.
| Name | Required | Description | Default |
|---|---|---|---|
| solid | No | ||
| distance | No | ||
| both_sides | No | ||
| delete_input | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses meaningful per-parameter behavior ('both_sides: Extrude in both directions symmetrically', 'solid: Create a closed solid (cap ends)', 'delete_input: Delete the input curve after extrusion'), going beyond what the bare schema shows. But it omits the selection prerequisite, says nothing about behavior when no curves are selected, and does not explain when a surface rather than a solid is produced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One crisp purpose line followed by compact per-argument bullets, with the core action front-loaded. The only waste is the controller line, which duplicates infrastructure not represented in the schema; otherwise 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 simple 4-parameter tool with an output schema, the operation and parameters are covered well. But without annotations, the missing selection precondition and the unexplained solid-vs-surface outcome condition leave real gaps an agent needs to call this correctly. Adequate, with clear openings for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple 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: every schema parameter receives a semantic gloss that the schema titles lack (distance = extrusion distance, solid = cap ends to make a closed solid, delete_input = removes source curve). The minor flaw is documenting 'controller: RhinoController instance' as an arg even though it does not appear in the input schema, which could confuse an agent about the actual parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Extrude') plus resource ('selected curve(s)') and outcome ('solid or surface'), which clearly distinguishes it from rhino_extrude_surface and surface-creation siblings like rhino_loft or rhino_sweep1. However, it never explicitly contrasts with the generic rhino_extrude tool, so the differentiation is implicit rather than 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?
Provides no guidance on when to use this tool versus alternatives such as rhino_extrude, rhino_extrude_surface, rhino_revolve, or rhino_sweep1/sweep2. It also fails to state the key precondition that curves must already be selected, nor any exclusions (e.g., open vs closed curves). An agent must infer all usage context on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_extrude_surfaceB
Extrude selected surface(s) by a given distance.
Args:
controller: RhinoController instance.
distance: Extrusion distance.
both_sides: Extrude in both directions symmetrically.
solid: Create a closed solid.
| Name | Required | Description | Default |
|---|---|---|---|
| solid | No | ||
| distance | No | ||
| both_sides | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains the three parameters but does not state whether the original surfaces are modified or kept, whether it works only on planar surfaces, what direction the extrusion goes, or whether it requires a pre-selection. This leaves significant behavioral ambiguity for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with a clear one-line summary followed by a compact argument list. The mention of 'controller' is unnecessary and not reflected in the schema, which prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema provides defaults and the output schema may describe return values, the description omits important operational details: how the extrusion direction is determined, whether the tool modifies existing surfaces or creates new ones, and how it differs from similar extrusion tools. The phantom 'controller' argument further weakens completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema properties have no descriptions, and the description compensates by explaining distance, both_sides, and solid. However, it also lists a 'controller' argument that is not present in the schema, which is confusing and slightly detracts from otherwise helpful parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Extrude') and resource ('selected surface(s)'), which makes the tool's primary function clear. It does not explicitly name a sibling alternative like rhino_extrude_curve, but the resource is specific enough to separate it from curve-based extrusion tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected surface(s)' implies the tool operates on the current selection, providing some usage context. However, there is no explicit guidance on when to choose this over rhino_extrude or rhino_extrude_curve, nor any exclusions or prerequisites beyond the selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_fair_curveA
Fair (smooth) the selected curve using Rhino's FairCrv command.
The curve must be pre-selected before calling this function.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavioral disclosure. It mentions the pre-selection requirement and the return dict, but it does not state whether the curve is modified in place, whether the operation is destructive, or what happens if no valid curve is selected. This is a significant gap for a command that mutates geometry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, front-loaded with the action, and uses compact Args/Returns blocks. 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 zero-parameter tool, the mandatory pre-selection condition and the basic return shape are stated. However, the description leaves ambiguity about whether the FairCrv command is actually executed or only a command string is returned, and it does not clarify the mutation effects on the selected curve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is little for the description to explain; the baseline is 4. The description does mention the controller argument, which clarifies the expected calling convention even though the schema does not list it.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Fair (smooth) the selected curve' using Rhino's FairCrv command. It clearly identifies the operation and distinguishes it from general curve-editing siblings like rhino_smooth or rhino_rebuild_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that the curve must be pre-selected before calling, which is a clear usage precondition. However, it does not explain when to prefer this tool over related alternatives such as rhino_smooth or rhino_rebuild_curve, nor does it provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_fillet_edgesB
Fillet the selected edges of a polysurface or solid.
Args:
controller: RhinoController instance.
radius: Fillet radius.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the operation modifies selected edges and returns a dict, but it does not disclose prerequisites, side effects, failure modes, or whether the original geometry is altered. A fillet operation is a mutation, but this is only 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?
The description is short and front-loaded with the core purpose. The Args/Returns formatting is conventional and easy to scan, though the 'controller' line is unnecessary and slightly noisy for the actual 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 simple one-parameter operation, the description identifies the target geometry and the core action, and an output schema is present. However, it omits practical invocation details such as whether edges must be selected before calling, what units the radius uses, and what the returned 'command result' contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions (coverage 0%), and the description only says 'radius: Fillet radius', which adds little beyond the property name 'Radius'. It does not explain units, valid ranges, or behavior for edge cases. The stray 'controller' argument in the docstring is also not part of the input schema and could confuse invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fillet') and the resource ('selected edges of a polysurface or solid'), so an agent can understand the basic purpose. It does not explicitly differentiate this from siblings like rhino_variable_fillet or rhino_fillet_surface, though the 'selected edges' qualifier helps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is for filleting already-selected edges on polysurfaces/solids, but it gives no explicit guidance about when to choose this over related tools such as variable fillet, chamfer edges, or fillet surface. The usage context is only implied by the operation name and target geometry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_fillet_surfaceB
Create a constant-radius fillet between two surfaces.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the mutation signal (readOnlyHint=false), and the 'Create' verb is consistent with that, so there is no contradiction. The description adds no behavioral detail beyond the operation: it does not disclose whether the source surfaces are kept, trimmed, or destroyed, nor does it mention failure conditions for infeasible radii or incompatible geometry. With annotations covering the safety profile, the description's thinness is tolerable but unhelpful.
Agents need to know what a tool does to the 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 eight-word sentence that is front-loaded with the verb and wastes no words. It is efficient, though it borders on under-specification — a short clause clarifying the fate of the source surfaces would add value without bloating the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a surface-modeling operation with six nested parameters and many closely related siblings, this is too thin. It omits prerequisites (that the ids refer to existing surface objects, that the surfaces must be filletable), the fate of the source surfaces, and failure conditions. The presence of an output schema excuses the absence of return-value explanation, but the operational context remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it partially does: 'two surfaces' maps to surface_a_id and surface_b_id, and 'constant-radius' maps to radius. It adds nothing about the optional name, layer, or doc_id parameters, nor about radius units or feasibility constraints. The three required parameters are covered conceptually, but mostly because the schema titles are already self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Create') and a specific resource ('constant-radius fillet between two surfaces'). The 'constant-radius' qualifier implicitly distinguishes it from rhino_variable_fillet, and 'between two surfaces' separates it from edge-based tools like rhino_fillet_edges. However, differentiation is implicit only — it never acknowledges the near-duplicate rhino_cmd_fillet_surface in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as rhino_cmd_fillet_surface, rhino_variable_fillet, rhino_fillet_edges, or rhino_blend_surface. The word 'constant-radius' is the only hint about scope, and there are no exclusions or routing conditions. Given the large sibling list with several overlapping surface tools, explicit usage guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_flipA
Flip the normal direction of selected surfaces.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It makes the core mutating effect clear ('flip the normal direction of selected surfaces'), but it does not disclose prerequisites beyond 'selected', side effects, or error conditions. The mention of a controller argument not present in the schema adds slight ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is short, front-loaded, and direct. The 'Args' and 'Returns' boilerplate is vague and partly redundant, but it does not significantly bloat an otherwise concise description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless mutation tool, the description captures the essential action and target. However, it does not explicitly instruct the agent to ensure surfaces are selected before calling, nor does it clarify the distinction from mesh-normal flipping. The return shape is presumably covered by the existing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so the baseline is 4. The description adds meaningful implicit context by stating the operation acts on the current selection of surfaces rather than on a passed argument. The docstring's controller argument is absent from the schema and does not help the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action ('Flip') and a specific resource ('normal direction of selected surfaces'). It clearly identifies surfaces rather than meshes, distinguishing it from the sibling tool rhino_flip_mesh_normals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is implied: call this when selected surfaces need their normal direction flipped. However, it does not explicitly name alternatives or state when not to use it, such as directing mesh-normal flips to rhino_flip_mesh_normals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_flip_mesh_normalsB
Flip the normals of selected mesh faces.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing side effects. It only restates the operation without explaining that it mutates the mesh, what happens if no faces are selected, or whether changes are reversible. For a mutating tool, this is a significant transparency 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 short and the primary behavior is front-loaded in the first sentence. The 'Args' block is mostly redundant with the schema and introduces an undocumented controller parameter, preventing a higher score, but the overall structure is still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has no required parameters, and an output schema exists, so the return-value burden is lower. However, the description does not explain how 'selected mesh faces' are determined, what state is required in Rhino, or how this differs from related normal-related tools. It is adequate but has 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?
The input schema has zero properties, so the description does not need to document user parameters. It does mention a 'controller: RhinoController instance' argument that is not present in the schema, which is slightly confusing, but this does not block invocation since no schema parameters are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Flip') and the target resource ('normals of selected mesh faces'), so an agent can tell what the tool does. It does not explicitly contrast with closely related tools like rhino_unify_mesh_normals or rhino_flip, but the phrase 'selected mesh faces' adds useful specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of related mesh-normal tools, nor any mention of prerequisites such as having mesh faces selected or needing an active Rhino document. The description relies entirely on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_flowC
Flow objects from one curve onto another (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation signals mutation, but the description does not explain what 'bridge only' means, whether original objects are modified or copied, or what side effects occur. The behavioral trait 'bridge only' is mentioned but not clarified, placing too much burden on ambiguous wording.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. The key operation is front-loaded, and every word earns its place, even if the 'bridge only' qualifier is ambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 that mutates objects based on two curves, the description lacks critical context: whether source objects are preserved, what object types are supported, what 'bridge only' restricts, and why this differs from the nearly identical sibling rhino_flow_along_curve. The presence of an output schema does not compensate for these 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?
The description loosely maps to the parameters: 'objects' to object_ids, 'one curve' to base_curve_id, and 'another' to target_curve_id. However, with 0% schema description coverage, it does not explain doc_id, the exact meaning of object_ids, or what 'bridge only' implies for parameter usage.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Flow') and resource ('objects from one curve onto another'), making the core operation clear. However, it does not differentiate itself from sibling tools like rhino_flow_along_curve, and the parenthetical 'bridge only' is left unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rhino_flow_along_curve or rhino_cmd_flow_along_curve. No prerequisites, exclusions, or condition-based routing are provided; an agent must infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_flow_along_curveC
Reposition objects from a base curve onto a target curve.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'reposition', but does not disclose whether original objects are modified, whether copies are created by default, whether undo is supported, or what side effects occur. With no behavioral annotations provided, this is a significant transparency 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 concise sentence with no filler or redundant wording. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a geometry transformation tool with multiple nested parameters and a copy option, the description is too sparse. It does not explain required inputs, the meaning of object_ids, how make_copy behaves, or any constraints on the base/target curves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for base_curve_id and target_curve_id, but object_ids and make_copy lack meaningful descriptions. The tool description adds no parameter clarification, and the top-level 'args' wrapper with nested fields is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear action ('Reposition objects') and the geometric relationship (base curve to target curve). It is sufficiently specific to the tool's function, though it does not explicitly differentiate itself from similar sibling tools like rhino_flow or rhino_cmd_flow_along_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as rhino_flow, rhino_cmd_flow_along_curve, or rhino_array_on_curve. Missing any context about prerequisites, copy behavior, or selection requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_freeform_curveA
Create a control-point (freeform) NURBS spline.
The curve is defined by its control polygon; it does NOT pass through
interior points (only through the first and last control point when the
degree allows).
Args:
controller: RhinoController instance.
points: Control polygon vertices as (x, y, z) tuples.
degree: Polynomial degree (default 3 = cubic B-spline).
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| degree | No | ||
| points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does this well by explaining that the curve approximates rather than interpolates, passes through only the first and last control point when the degree allows, and returns a dict with 'status' and 'command' keys. This is meaningful behavioral context beyond the simple 'create' verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: purpose, key behavioral caveat, then parameters and return info. It has little fluff, but the 'controller: RhinoController instance' line does not correspond to any schema property and is slightly extraneous for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 creation tool, the description is largely complete: it covers purpose, behavior, parameters, and the return format. What is missing is explicit guidance on when to choose this tool over sibling curve-creation tools, and the points type mismatch with the schema leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It defines 'points' as control polygon vertices given as (x, y, z) tuples and 'degree' as polynomial degree with a default of 3 (cubic B-spline), adding real semantics. There is a slight mismatch because the schema types 'points' as a string rather than tuples, which creates minor ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a control-point (freeform) NURBS spline.' It further distinguishes itself from interpolating curve tools by explicitly stating that the curve does NOT pass through interior points, which differentiates it from siblings like rhino_interpolate_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description communicates the core behavior of a control-point curve, which implicitly tells an agent this is not for interpolation-through-points scenarios. However, it never explicitly states when to prefer this tool over rhino_interpolate_curve or rhino_nurbs_curve, nor does it name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_get_control_pointsARead-only
Get all control points (and weights) of a NURBS curve or surface.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description is consistent with that. It adds the useful detail that weights are returned alongside control points, but does not disclose behavior such as handling of non-NURBS objects or whether trimmed surfaces produce their full control polygon.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no fluff; the core action, object type, and inclusion of weights are front-loaded efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 single-parameter read tool with an output schema and a readOnlyHint, the description covers the essential scope. It could be a bit more complete by stating that the object must already exist as a NURBS curve/surface, but that is largely implied by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only required parameter, object_id, is described in the schema as the GUID of the NURBS curve or surface, and the tool description repeats that the geometry is a NURBS curve or surface. The description adds no deeper semantics about the parameter, so it neither compensates for nor benefits from a low schema-coverage signal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('all control points (and weights) of a NURBS curve or surface'), making the tool's read-only purpose immediately recognizable. This clearly distinguishes it from mutation siblings like rhino_set_control_points and rhino_remove_control_point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 use case is implied by the word 'Get' and the curve/surface scope, so an agent can infer when to call it for inspection. However, there is no explicit guidance about preferring this over related read tools (e.g., rhino_object_info) or about using rhino_set_control_points for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_get_document_textA
Retrieve a document-level user text value by key.
Args:
key: Key name.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, but it only says 'Retrieve' without disclosing behavior for missing keys, empty values, or whether multiple keys can be accessed. The operation is clearly a read, so no destructive behavior is implied, but return edge cases are not 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 short and the main sentence is front-loaded and information-dense. The 'Args:' section is largely redundant with the schema, but it does not bloat the description significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter getter, the description identifies the resource and input, and an output schema is present to describe the return. However, it omits missing-key behavior and does not clarify relationship to sibling user-text tools, leaving some context for the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It merely restates 'key: Key name,' which adds little beyond the property name itself. It provides no guidance on valid key formats, how to discover document-level keys, or what happens for absent keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') plus a clear resource ('document-level user text value') and mechanism ('by key'). The term 'document-level' distinguishes it from sibling tools like rhino_get_user_text, which operate at the object level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for reading document-level custom text values, but it does not explicitly state when to prefer it over rhino_get_user_text or when not to use it. No alternative or exclusion is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_get_module_functionsARead-only
Get all functions in a specific RhinoScript module with signatures.
Use rhino_list_rhinoscript_modules() first to see available modules,
then call this to browse a module's full API.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds that the result includes signatures, which is useful return-value context, but it does not describe output structure or edge cases. With annotations carrying the safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action is front-loaded, and the prerequisite workflow is stated efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only introspection tool with an output schema present, the description covers the essential flow: list modules first, then browse a module's API. It could optionally mention that this is the companion to the module-listing tool, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description does not explicitly document module_name, but it implies the parameter by saying 'specific RhinoScript module' and tells the agent to use rhino_list_rhinoscript_modules() to discover valid values. The nested schema also provides an example ('curve', 'surface', 'mesh'), so the parameter is reasonably covered despite low schema-description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get all functions in a specific RhinoScript module with signatures.' This clearly distinguishes it from sibling tools like rhino_list_rhinoscript_modules (which lists modules) and rhino_search_rhinoscript_functions (which searches functions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 an explicit workflow: call rhino_list_rhinoscript_modules() first to see available modules, then call this tool to browse a module's API. It lacks explicit 'when not to use' instructions against alternatives like search_rhinoscript_functions, but the intended usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_get_object_infoA
Return information (type, layer, name, color) for all currently selected objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. 'Return information' signals a read-only query, which is useful, but the description does not disclose what happens with no selection, whether it errors or returns an empty result, or whether it reports each object separately or aggregated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and resource, followed by the exact fields returned. There is no fluff or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with an output schema, the description is mostly complete: it names the selection scope and the fields. The main missing context is the no-selection edge case and how the result is structured, though the output schema can cover the structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so there is no parameter detail the description needs to add. The baseline of 4 applies because the description correctly implies the operation is driven entirely by the current Rhino selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and names the resource (object information) with the exact fields returned (type, layer, name, color) and scope (all currently selected objects). It is clear on its own, but it does not explicitly distinguish itself from similarly named siblings like rhino_object_info or rhino_list_objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for all currently selected objects' implies when to call it: after making a selection when property details are needed. However, it gives no explicit guidance about alternatives, no caveats about empty selections, and no mention of a prerequisite to select objects first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_get_object_nameA
Return the name of each currently selected object.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It conveys a read-only retrieval operation, but it does not describe behavior for empty selections, multiple selections, or whether any state changes occur. The output schema likely covers return format, but edge-case behavior is left 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?
The description is a single, direct sentence with no filler. It front-loads the action and the target resource immediately, making it easy for an agent to parse and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only getter with an output schema, the description covers the essential context: what is returned and from which objects. The only notable gap is the lack of guidance on empty-selection behavior, which is a minor omission for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to add beyond the schema. The baseline for zero-parameter tools is 4, and the description does not need to compensate for missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and identifies the exact resource ('the name of each currently selected object'). It clearly communicates what the tool does and is distinguishable from sibling query tools like rhino_object_info or rhino_list_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?
There is no explicit guidance about when to use this tool versus alternatives, nor any mention of prerequisites or fallback behavior when nothing is selected. The phrase 'currently selected' implies a precondition, but the description does not explain what happens if the selection is empty or how this differs from similar getter tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_get_rhinoscript_docsARead-only
Get comprehensive RhinoScript documentation for a topic.
CRITICAL: You MUST call this tool before using rhino_execute_python.
Returns full signatures, parameter descriptions, return values, and
optional code examples for the most relevant functions.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe, read-only operation. The description adds that it returns signatures, parameter descriptions, and examples, which is essentially output content rather than a deeper behavior. It doesn't disclose any side effects, permissions, or additional constraints beyond the 'MUST call before' prerequisite. With annotations covering safety, this is acceptable but adds minimal extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. The purpose is front-loaded, followed by the critical usage directive and then the return-value summary. Every sentence adds value, and the message is clear without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the annotations cover read-only, the description is complete enough for an agent to invoke it. It covers core purpose, provides mandatory context, and hints at output contents. It doesn't document the parameters precisely or mention edge cases like empty results, but those are partly handled by the schema and the simple read-only nature.
Complex tools with many parameters or behaviors need more documentation. 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 description coverage is 0% (top-level args), and the description must compensate. It only hints at the include_examples parameter via 'optional code examples' and at the topic via 'for a topic', but it doesn't describe max_functions or clarify the free-form nature of topic. The description adds sparse parameter meaning and does not make up for the schema's low coverage for an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves comprehensive RhinoScript documentation for a topic, matching the tool name. It mentions full signatures, parameter descriptions, return values, and optional examples, which distinguishes it from generic execution tools. However, it doesn't explicitly name a sibling alternative like rhino_search_rhinoscript_functions or rhino_get_module_functions, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'CRITICAL: You MUST call this tool before using rhino_execute_python.' This clearly states when the tool should be invoked and is a strong directive. It doesn't mention when not to use it or list alternatives, but the mandatory precondition is a clear usage instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_get_user_textARead-only
Read user text (key-value metadata) attached to an object.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safe, read-only nature. The description adds the useful semantic context that this reads per-object key-value metadata, but does not disclose other behavioral details such as all-or-nothing key retrieval or active-document behavior. This is acceptable given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence that front-loads the core action and resource. It contains no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a clear schema, readOnlyHint annotation, and an output schema, the description is largely sufficient. The main gap is the absence of usage guidance and parameter compensation, but the structured fields carry most of the remaining burden.
Complex tools with many parameters or behaviors need more documentation. 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 description coverage is 0%, and the tool description does not compensate by explaining object_id, key, or doc_id. While the schema itself has descriptions for key and doc_id, the description adds no parameter-level meaning, leaving the agent to rely entirely on the schema for invocation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and identifies the exact resource: key-value user text metadata attached to an object. This clearly differentiates it from related tools like rhino_set_user_text (write) and rhino_get_document_text (document-level rather than object-level).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. The usage is only implied from the verb and resource name, so an agent is left to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_groupC
Group objects together under a (named) group.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, meaning this is a mutating operation, and the description's 'Group objects together' is consistent with that. However, the description adds no extra behavioral context beyond the annotation: it does not disclose that a group is created, how existing groupings are affected, or any side effects. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact sentence with no filler or redundancy. The core action is front-loaded, and the '(named)' qualifier efficiently signals the optional naming capability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with a clear input schema and an output schema, the description is minimally adequate: an agent can infer that it should pass object_ids and optionally a name. But it lacks usage guidance and sibling differentiation, and it does not clarify behavioral effects, leaving some context gaps for confident tool 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 for parameter meaning, but it only hints at the 'name' parameter with '(named) group'. It does not explain object_ids, the active document default in doc_id, or the optional null name. The schema provides some structure, but the description adds little semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Group objects together under a (named) group.' It clearly states what the tool does and foreshadows the optional name parameter. However, it does not explicitly distinguish itself from sibling tools like rhino_group_selected or rhino_ungroup, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_group_selected or rhino_ungroup. The description does not state prerequisites, whether explicit object_ids are required, or any exclusions. Usage context must be inferred entirely from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_group_selectedA
Group the currently selected objects.
Args:
name: Optional name for the group. If None, Rhino auto-assigns a name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action and does not disclose side effects, error conditions (e.g., no selection), or whether the operation is destructive/modifying beyond grouping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, comprising one sentence for the action and one for the parameter. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the description covers its core function and parameter. Since an output schema is present, return values are not required in the description. It is complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the sole parameter 'name' fully: 'Optional name for the group. If None, Rhino auto-assigns a name.' This adds meaning beyond the schema which only provides a title 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 clearly states the action ('Group the currently selected objects') with a specific verb and object. It distinguishes from related tools like 'ungroup' and other selection operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (i.e., when you need to group selected objects), but it does not explicitly mention alternatives or when not to use this tool. No explicit 'when' or 'when-not' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_hatchC
Add a hatch over the given closed curves.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide readOnlyHint=false, so the description carries the behavioral disclosure burden. It adds the 'closed curves' requirement but does not describe side effects, error conditions, or what happens to existing hatches or object settings. It is accurate but very thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single verb-first sentence with no filler. Every word earns its place, and the core action is immediately clear. Its brevity is a strength even though it sacrifices content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five parameters and zero schema description coverage, the description provides only the core action and one input constraint. It omits pattern and layer semantics, behavior on invalid curves, and usage context. The existence of an output schema reduces the need to describe return values, but this description is still incomplete 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 description coverage is 0%, and the description only hints at the meaning of boundary_curve_ids ('closed curves'). The other parameters—name, layer, pattern, and doc_id—are left undocumented in both the schema and the description, so the description does not compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('hatch'), and clarifies the input is closed curves. It is clear, but it does not differentiate this tool from the sibling tool 'rhino_add_hatch', so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. The description only states the action, leaving an agent to guess when it should be selected over similar hatch-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_helixB
Add a helix sampled into a NURBS curve.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool as non-read-only, so the 'Add' wording is consistent and not contradictory. The description adds the useful behavioral detail that the helix is sampled into a NURBS curve, implying an approximation controlled by sampling density, but does not disclose side effects like active-document insertion or layer creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It captures the core action, object, and representation efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 detailed input schema covers the parameters, and the output schema covers return values, so the description need not restate those. However, given the large number of nearby curve-creation siblings and the lack of usage guidance, the description is adequate but not fully complete for confident tool 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?
The description adds the key concept of sampling into a NURBS curve, which maps to the points_per_turn parameter. The individual parameters themselves (center, radius, pitch, turns, etc.) are described in the schema, so the description does not need to repeat them, but it also does not meaningfully clarify their behavior beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Add'), a clear resource ('a helix'), and the resulting representation ('sampled into a NURBS curve'). This distinguishes it from related tools like rhino_spiral or rhino_nurbs_curve, though it stops short of explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus related curve-creation tools such as rhino_cmd_helix, rhino_spiral, or rhino_nurbs_curve. The only implicit signal is the tool name and the word 'helix,' which is not enough for an agent to reliably choose among the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_hide_selectedA
Hide currently selected objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden of disclosing behavior. It clearly states the core action on selected objects, but it does not mention that hiding is reversible, what happens if no objects are selected, or that the objects are not deleted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter command with an output schema, this is almost complete: the target (currently selected objects) and action (hide) are clear. A note about reversibility or the no-selection case 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?
There are zero parameters and the schema is empty, so there is nothing to document. The description still adds valuable context by specifying that the tool operates on the current selection rather than taking explicit arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Hide') and names the exact resource ('currently selected objects'), making it easy to distinguish from sibling selection tools such as rhino_delete_selected, rhino_lock_selected, and rhino_show_selected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently selected objects' implies the prerequisite of an active selection and the use case of making selected geometry invisible. It does not explicitly state when not to use it or point to alternatives like rhino_show_selected for reversing the action, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_importC
Import an external file into the active document (bridge required for non-3DM).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, so the description carries the burden of explaining side effects. It mentions the bridge requirement but does not describe what happens on import, whether existing objects are affected, supported file behavior, or failure modes. No contradiction with annotations, but disclosure is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single economical sentence with the key verb and target front-loaded. It is not bloated, though it sacrifices useful detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is an output schema, so return-value detail is not required, but an importer with path, doc_id, and object_ids needs more context on supported formats and how those parameters relate to importing. The bridge note is helpful, but critical operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-level meaning and schema coverage is 0%. The schema itself is confusing for an import tool: object_ids is described as 'Restrict export; default = all,' which sounds like export rather than import behavior. The description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Import') and resource ('external file' into 'active document'), so the core purpose is clear. It also adds the bridge requirement for non-3DM. However, it does not differentiate from close siblings like rhino_cmd_import or rhino_import_ifc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or comparison with alternatives is provided. The bridge note hints at a prerequisite, but nothing says when to prefer this over rhino_import_ifc, rhino_cmd_import, or rhino_open. The agent is left to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_import_ifcA
Import an IFC file, mapping each entity to a layer under target_layer_root (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, so the agent already knows this is a mutating operation. The description adds genuine behavioral context beyond that: imported entities are organized as layers nested under target_layer_root, and the tool functions only in bridge mode. It does not disclose edge behaviors like layer creation when the root is missing, but the added context is meaningful and consistent with the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of about 20 words carries the verb, resource, layer-mapping behavior, and the bridge-only scope with no filler. The most decision-relevant qualifier ('bridge only') is placed at the end after the core semantics. Every element 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 an output schema present and four parameters well described in the input schema, the short description is mostly adequate. The notable gap is that '(bridge only)' is stated but never explained — an agent cannot tell whether the tool errors, no-ops, or behaves differently outside bridge mode. It also does not mention whether the target layer root is created if absent or merged with existing layers, which matters for an import 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?
Although the context signal reports 0% schema coverage, the nested _ImportIfcIn schema actually documents all four parameters well (path, doc_id, filter_by_type, target_layer_root). The description adds a little beyond the schema by stating the entity-to-layer mapping behavior for target_layer_root, but it does not elaborate on path, doc_id, or filter_by_type. Net effect is modest added value on top of already-readable schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Import an IFC file') and adds a scoping detail ('mapping each entity to a layer under target_layer_root') that clarifies the operation's effect. The '(bridge only)' qualifier further narrows the context. It does not explicitly name or differentiate from sibling import tools like rhino_import or rhino_export_ifc, which keeps it at a 4 rather than 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: an agent can infer this tool is for bringing IFC data into the Rhino document. The '(bridge only)' qualifier is a partial contextual constraint on when the tool applies. However, there is no explicit when-not guidance or mention of alternatives such as rhino_import or rhino_cmd_import, so routing among the large sibling set 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.
rhino_insert_blockB
Insert a block instance into the document.
Args:
name: Block definition name to insert.
x, y, z: Insertion point.
scale: Uniform scale factor.
rotation: Rotation angle in degrees.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| name | Yes | ||
| scale | No | ||
| rotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It identifies the operation as an insertion (a mutating action) but does not disclose what happens when 'name' references a nonexistent block definition, whether the instance lands on the current layer, or unit expectations for x/y/z. The behavior disclosed is essentially the action already implied by the tool 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?
Roughly 40 words: a one-sentence action summary followed by a compact Args list. Front-loaded with the operation, no filler, and every parameter line adds value given the empty schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values need no explanation, and parameter semantics are well covered. But with six parameters and no annotations, an agent still lacks context on prerequisites (definition must exist), error behavior, and when this tool is preferred over block_define/block_explode. 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 description coverage is 0%, and the description compensates by explaining all six parameters. It adds real meaning: 'rotation ... in degrees' (preventing a radian assumption), 'Uniform scale factor,' and 'Block definition name' clarifying that name refers to an existing definition. This goes 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 'Insert a block instance into the document' — a specific verb and resource that is immediately distinguishable from siblings like rhino_block_define, rhino_block_list, and rhino_block_explode. The description clearly communicates the operation without requiring schema inspection, though it doesn't explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus rhino_block_define (which creates the definition this tool references), rhino_block_explode, or other block tools. No prerequisite stated (e.g., the block definition must exist before insertion), and no mention of alternatives or exclusions. An agent must infer when this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_interpcrvC
Create an interpolated NURBS curve that passes through all given points.
Args:
controller: RhinoController instance.
points: Ordered list of (x, y, z) tuples (>= 2).
degree: Polynomial degree of the resulting curve (default 3 = cubic).
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| degree | No | ||
| points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, but it only states that the tool creates a curve and returns a dict with 'status' and 'command.' It does not describe document-level side effects, validation failures, coordinate handling, or what the 'command' value represents.
Agents need to know what a tool does to the 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 reasonably concise and front-loaded with the primary purpose. The Args block is organized and readable, though it includes a misleading 'controller' argument and an inconsistent type description for 'points' that could have been clarified in fewer words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 0% schema coverage and absent annotations, the description is incomplete. It mentions the minimum point count and default degree but omits the required serialization format for points, error behavior, whether the curve is added to the active Rhino document, and how this differs from rhino_interpolate_curve. An agent would still face significant ambiguity when actually invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the intended meaning of 'points' and 'degree,' which is useful because schema description coverage is 0%. However, the schema declares 'points' as a string while the description says it is an ordered list of (x, y, z) tuples, creating a direct contradiction. It also documents a 'controller' argument that is absent from the input schema, making the parameter guidance unreliable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool action and resource: 'Create an interpolated NURBS curve that passes through all given points.' The purpose is not a tautology and distinguishes the core behavior from direct NURBS construction or editing tools. However, it does not differentiate itself from the similarly named sibling rhino_interpolate_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as rhino_interpolate_curve, rhino_nurbs_curve, or rhino_curve_split. The description implies interpolation via 'passes through all given points,' but it never states exclusions or when another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_interpolate_curveB
Add an interpolated NURBS curve passing through the given points.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false already signals mutation, and 'Add' is consistent with that annotation, so there is no contradiction. The description adds modest context by specifying what kind of object is created (an interpolated NURBS curve), but it does not go beyond the annotations to disclose side effects such as modifying the active document, appending a new object per call, or the layer-creation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero filler; the verb 'Add' leads, and every word contributes meaning. It is efficiently structured, though it could carry additional useful details (e.g., degree default or relation to interpcrv) without becoming 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?
An output schema exists and the nested schema documents most parameters, so the description need not explain return values. However, the description is thin on selection context relative to rhino_interpcrv, and degree semantics are left unexplained. It is minimally viable for a schema-rich tool but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, so the description must compensate for undocumented parameters, and it only loosely maps to the points parameter ('passing through the given points'). It says nothing about degree (range 1-11, default 3), the name/layer options, or doc_id document targeting. The nested $defs carry some descriptions, but the description itself adds little semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and resource ('interpolated NURBS curve'), and states the defining behavior: the curve passes through the given points. This distinguishes it from control-point-based creation such as rhino_nurbs_curve. However, it does not explicitly differentiate itself from the near-identical sibling rhino_interpcrv, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: an agent has a set of points and wants a smooth curve through them. But it provides no explicit when-to-use or when-not-to-use guidance, and names no alternatives (e.g., rhino_nurbs_curve for control-point curves, rhino_interpcrv as a command-level equivalent). The agent must infer selection context from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_isocurveB
Extract an isocurve from a surface at a specific U or V parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no behavioral annotations beyond a title, and the description does not disclose whether this operation creates a new curve object, modifies the surface, or simply returns data. For a geometry extraction tool this side-effect ambiguity is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core action and resource, and no filler. It is appropriately succinct for this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema and output schema carry much of the technical detail, and the description captures the core operation. However, with no annotations and no mention of side effects or required preconditions, the definition is adequate but not fully complete for an autonomous agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents object_id, parameter, and direction, including the 0=U-direction and 1=V-direction mapping. The description adds no new parameter semantics beyond restating that the isocurve is U/V-based, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Extract') and resource ('an isocurve from a surface') and identifies the key input ('a specific U or V parameter'). This clearly distinguishes the tool from related surface query tools such as rhino_evaluate_surface or rhino_surface_closest_point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to prefer this tool over alternatives, nor does it give exclusions or prerequisites. Usage context is only implied by the name and one-liner, so an agent gets no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_joinB
Join selected surfaces, curves, or polysurfaces into a single object.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the basic action but does not disclose whether joining is destructive to the original objects, whether there are connectivity or tolerance requirements, how the operation affects the Rhino document, or what happens when the selection is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core verb and object. The Args block is minimal and mostly unnecessary, but it does not add meaningful bloat. Overall it is efficient without being under-specified to the point of confusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 join operation with an empty input schema and an output schema present, the description provides the essential action and object types. However, with no annotations and no guidance on preconditions, tolerances, or sibling-tool routing, an agent still has to infer several important details about successful 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?
The input schema has zero properties, so there are no undocumented parameters. The description's mention of 'controller: RhinoController instance' adds a small amount of context about how the tool is invoked, and the 0-parameter baseline applies 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 clearly states the action ('Join'), the input scope ('selected surfaces, curves, or polysurfaces'), and the result ('into a single object'). It is specific enough to understand the tool's purpose, but it does not explicitly differentiate it from nearby siblings like rhino_merge_surfaces, rhino_group, or boolean union tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'selected' implies the precondition that the user must select objects before invoking the tool, which is useful context. However, it does not explicitly say when to prefer this tool over alternatives like boolean union, merge surfaces, or grouping, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_launchB
Launch Rhino and wait for it to become ready.
Args:
controller: RhinoController instance.
wait_seconds: Seconds to wait for Rhino to start (default 12).
Returns:
Dict with launch result.
| Name | Required | Description | Default |
|---|---|---|---|
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose the blocking wait behavior and configurable wait time. However, it omits important operational behaviors: what happens on timeout, whether the call is idempotent when Rhino is already launched, and what shape a failure takes.
Agents need to know what a tool does to the 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 docstring is well-structured: a front-loaded one-line summary, then Args, then Returns. The phantom controller entry and the generic "Dict with launch result" line add minor noise, but the overall format is clean and scannable for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with an existing output schema, the description covers the core action and the single real parameter adequately. Key gaps remain: failure/timeout behavior, idempotency when Rhino is already running, and the confusing controller reference not present in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it does explain wait_seconds meaningfully ("Seconds to wait for Rhino to start (default 12)"), adding value beyond the schema's bare title and default. However, it documents a "controller: RhinoController instance" argument that does not appear in the schema — a stale or misleading reference that could cause an agent to supply an invalid parameter and undermines reliability.
Input schemas describe structure but not intent. Descriptions should explain 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 "Launch Rhino and wait for it to become ready" states a specific verb (launch), a specific resource (the Rhino application), and the expected outcome state (becomes ready). Among the large sibling list, no other tool launches the application itself — rhino_open/rhino_open_file operate on documents, not the application — so it is clearly distinguishable without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to call this tool, whether it must precede other Rhino operations, or what happens if Rhino is already running. The "wait for it to become ready" phrasing implies it is a session-setup step, but no explicit when/when-not conditions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_colorB
Set a layer's display color.
Args:
name: Layer name.
r, g, b: RGB color components (0-255).
| Name | Required | Description | Default |
|---|---|---|---|
| b | No | ||
| g | No | ||
| r | No | ||
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses the mutation ('Set') and the RGB range, but does not explain whether the layer must already exist, whether the tool creates it, what happens on failure, or any side effects. The behavioral context is minimal beyond what the name already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose, followed by a compact Args list. Every line serves a purpose and there is no redundant filler. The formatting is clear, though the Args section reads a bit tersely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutation tool with no annotations and no mention of prerequisites or error behavior, the description is not fully complete. It tells the agent what to set and how to supply the values, but not what to expect if the layer is missing, whether the layer is created automatically, or how success is reported. Having an output schema helps with return values, but the behavioral context is still thin.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'name' is the layer name and that r, g, b are RGB color components in the 0-255 range. This adds meaningful semantics beyond the raw schema fields, though it could be more explicit about defaults or the role of each channel individually.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Set a layer's display color.' This is unambiguous about what the tool does. However, it does not differentiate from the sibling tool rhino_layer_set_color, which likely performs the same operation, 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?
No guidance is provided about when to use this tool versus alternatives such as rhino_layer_set_color, rhino_set_object_color, or rhino_layer_visible. The description only states the action and parameters, leaving the agent to infer 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.
rhino_layer_countA
Return the total number of layers in the document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It does state that the tool returns a layer count and implies a read-only operation, but it does not clarify whether all layer table entries (including hidden or sublayers) are counted or what happens in edge cases such as an empty document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant explanation. Every word contributes directly to the tool's 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?
For a zero-parameter, read-only count operation with an output schema, the description is nearly sufficient. It could improve by noting whether hidden or purged layers are included, but no invocation prerequisites or return-shape details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is no parameter semantics for the description to add. The baseline of 4 is appropriate because nothing is missing on the parameter side.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and names a precise resource ('the total number of layers in the document'). It clearly distinguishes this count operation from sibling tools like rhino_layer_list, which would list layers rather than return a count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as rhino_layer_list or other layer-management tools. The intended use is inferable from the name and description, but no explicit usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_createB
Create a layer with optional colour and visibility.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation signals mutation, and 'Create' is consistent with that, so there is no contradiction. But the description adds almost no behavioral context beyond the annotation: it does not disclose what happens on duplicate names (schema hints names are unique), whether the new layer becomes the current layer, or any other side effects on the document. For a state-changing tool with minimal annotation coverage, this is a thin 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?
A single sentence with zero wasted words: verb first, then object, then the optional modifiers. It is front-loaded and appropriately sized for a straightforward creation 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?
The tool is simple and has an output schema, so return values need not be explained. However, the description omits useful context such as duplicate-name behavior, whether the created layer becomes active, and the relationship to the similarly named rhino_cmd_layer_create. Adequate for a basic call, but with clear gaps for a robust agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents most parameters well (name uniqueness, doc_id meaning, ColorRGBA channels with ranges and defaults), so the baseline of 3 applies. The description adds a small at-a-glance summary that color and visibility are optional knobs, but it adds no meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('a layer'), and mentions the key optional attributes (colour, visibility). This is clear and unambiguous. However, it does not differentiate from the near-duplicate sibling rhino_cmd_layer_create or other layer-management tools, so it misses the sibling-distinguishing criterion for 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 guidance is given on when to use this tool versus alternatives. Given the sibling list contains many layer-related tools (rhino_layer_set_color, rhino_layer_delete, rhino_layer_set_current, rhino_cmd_layer_create), an agent gets no help choosing among them. Context like 'use this when creating a new named layer; use rhino_layer_set_color to modify an existing one' is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_deleteADestructive
Delete a layer by name (in standalone mode the layer is hidden + name-prefixed).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as destructive (destructiveHint=true, readOnlyHint=false), and the description adds a genuinely useful behavioral nuance: in standalone mode the layer is hidden and name-prefixed rather than truly deleted. This goes beyond the annotation and helps calibrate expectations. It still leaves 'standalone mode' and 'name-prefixed' somewhat undefined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the core action front-loaded and the mode-specific behavior in a parenthetical. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive operation, the core invocation is reasonably clear, and an output schema exists. However, the description does not define what 'standalone mode' means, what 'name-prefixed' entails, or what happens to objects on the deleted layer. These are meaningful gaps for an agent trying to predict the full effect of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that the required 'name' parameter is the layer's identifying key, which compensates for the schema's lack of description on that field. It does not mention the optional 'doc_id' parameter, though the schema documents that field. The description partially compensates for low schema coverage but not completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Delete'), a clear resource ('a layer'), and the selection mechanism ('by name'). It is easy to understand what the tool does. However, it does not explicitly differentiate itself from the similarly named sibling rhino_cmd_layer_delete or from rhino_object_delete, so it falls just short of full disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus alternatives, no prerequisites, and no mention of what happens to objects on the layer. The phrase 'by name' implies the primary usage, but it does not help an agent decide between this and the many related layer/object deletion tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_get_currentA
Return the name of the current (active) layer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Return the name' clearly indicates a read-only operation, but it does not disclose edge-case behavior such as what happens when no layers exist or whether the document is modified. For this simple getter the core behavior is stated, but there is room for more context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler. It front-loads the action and object clearly and earns its place entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero parameters, a clear output schema, and a simple getter operation, the description is fully adequate. Nothing essential is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema description coverage, so the baseline is 4. The description does not need to explain any parameter semantics because there are none; 'current (active) layer' provides enough context for the expected 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?
The description uses a specific verb ('Return') and a specific resource ('name of the current (active) layer'). It clearly distinguishes this tool from siblings like rhino_layer_list (which lists layers) and rhino_layer_set_current (which changes the current layer).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when you need the name of the currently active layer. It does not explicitly mention alternatives or exclusions, but for a simple getter the intended use is unambiguous given the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_isolateA
Isolate a layer by hiding all other layers.
Args:
name: Layer to keep visible.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly carries the behavioral burden by stating that all other layers are hidden. It does not discuss edge cases like locked layers or how to undo the isolation, but the primary side effect is transparently disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with the core behavior stated in the first sentence and a compact Args section. Every sentence earns its place, with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter layer visibility tool, the description is essentially complete: it states the action, the effect, and the argument meaning. The only notable omission is not pointing to an inverse operation like rhino_layer_unisolate, but the tool can be invoked correctly without that detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by defining the sole parameter: 'name' is the layer to keep visible. This gives an agent complete semantic understanding of the argument without needing additional inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('isolate') and resource ('layer') and immediately explains the mechanism: hiding all other layers. This clearly differentiates it from related layer tools like rhino_layer_visible or rhino_layer_unisolate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 makes the use case clear: keep exactly one layer visible and hide everything else. It does not explicitly mention alternatives such as rhino_layer_unisolate for restoring visibility, but the intended context is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_listBRead-only
List all layers with their properties (color, visibility, object count).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, and the description consistently describes a read-only operation. It adds useful scope information ('all layers') and enumerates the returned properties, but does not disclose behaviors like document selection fallback or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, and no filler. Every word contributes to understanding what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for a simple read-only list tool with one documented parameter and an existing output schema. It could be improved by explicitly routing the agent away from related layer/list siblings, but that is a minor gap given the schema and readOnlyHint.
Complex tools with many parameters or behaviors need more documentation. 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 parameter doc_id is documented in the input schema with 'Document handle id; active targets the current document.' The tool description adds no additional parameter semantics, so the schema carries the burden and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('all layers'), and names the returned properties (color, visibility, object count), making the tool's function clear. However, it does not explicitly contrast with closely related siblings like rhino_cmd_layer_list or rhino_layer_count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 or alternatives are provided. Given the large set of layer-related sibling tools, an agent is left to infer when this read-only listing tool should be chosen over rhino_layer_count, rhino_cmd_layer_list, or rhino_list_objects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_lockB
Lock or unlock a layer.
Args:
name: Layer name.
locked: True to lock, False to unlock.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| locked | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does state the core behavior and the meaning of the 'locked' boolean, which is helpful. However, it does not disclose consequences such as what happens to objects on the layer, whether an existing layer is required, or whether the operation is reversible through the same tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences plus parameter definitions. Every line adds necessary information, and the primary action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool the description covers the essential calling contract. But given that an output schema exists and no annotations are present, it would be stronger to mention expected failures, layer name matching behavior, or how this relates to other layer-state controls. The current description is adequate but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. It explains that 'name' is the layer name and that 'locked' uses True to lock and False to unlock. This gives an agent the semantics needed to set the parameters correctly, though it is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Lock or unlock a layer.' This clearly identifies the operation, but it does not explicitly differentiate itself from siblings such as rhino_lock_selected or rhino_layer_visible, which also relate to visibility/locking states.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like rhino_lock_selected, rhino_unlock_all, or rhino_layer_visible. The description implies the tool is for a named layer, but it does not state when a layer lock is preferable to an object selection lock or any other condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_purge_unusedA
Delete all layers that contain no objects and have no sub-layers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It clearly discloses that this is a destructive operation and precisely specifies what will be deleted: layers with no objects and no sub-layers. This is meaningful transparency beyond the empty schema, though it does not mention undo behavior or locked-layer edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately states the action and then defines the exact filtering condition. Every part of the sentence contributes necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless destructive tool with an output schema available, the description is largely complete: it defines the action, the target scope, and the filter. Minor gaps include lack of explicit warning about irreversibility and no mention of the current-document scope, but these do not seriously impair agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is no parameter documentation burden. The description adds value by defining the implicit scope of the operation ('all layers' matching the deletion criteria), which is the only semantic information an agent needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete'), a specific resource ('all layers'), and precise selection criteria ('contain no objects and have no sub-layers'). This clearly distinguishes it from related tools like rhino_layer_delete, which deletes a named layer, and rhino_purge, which is a broader purge command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_layer_delete or rhino_purge. There are no stated prerequisites, exclusions, or context about when a cleanup of unused layers is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_renameC
Rename an existing layer.
Args:
old_name: Current layer name.
new_name: New layer name.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| old_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the primary action. It does not mention side effects, error handling, return values, or what happens if the old layer does not exist or the new name is already in use. With no annotations to supplement, behavioral information is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is highly concise and straightforward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and two required parameters, yet the description lacks essential details such as return value, behavior when the old layer does not exist, or whether duplicate new names are allowed. It is only minimally complete for such a simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add any meaning to the parameters beyond their names. Since the schema has no descriptions, the names old_name and new_name are the only clues. The description could have clarified that old_name is the current layer name and new_name is the desired name, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: to rename an existing layer. It uses a specific verb and object, which distinguishes it from other layer operations such as create or delete, even though it doesn't explicitly contrast 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?
No guidance is provided on when to use this tool versus alternatives like rhino_layer_create or rhino_layer_list. There is no context about prerequisites, document state, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_set_colorB
Change a layer's display colour.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is false, which aligns with the description's 'Change' wording. The description adds a small behavioral nuance by specifying 'display colour', implying the visual viewport color is modified rather than object geometry or material color, but it does not disclose side effects, error behavior, or the effect of omitting doc_id.
Agents need to know what a tool does to the 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-formed sentence with no filler, redundant phrases, or unnecessary detail. It is concise and immediately communicates the operation in a front-loaded manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with schema-provided parameters and an output schema, the description is minimally viable but leaves gaps. It does not clarify when to prefer this over a sibling tool, whether the color change affects existing objects on the layer, or how the doc_id parameter alters behavior across documents.
Complex tools with many parameters or behaviors need more documentation. 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 reported schema description coverage of 0%, the description should compensate by explaining parameter meaning, but it does not mention the layer name, color, or doc_id parameters at all. The schema itself provides titles, defaults, and some descriptions for nested color components, but the description adds no semantic value beyond the tool's one-line purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Change') and target resource ('a layer's display colour'), making the tool's purpose immediately understandable. It is clear on its own, though it does not explicitly differentiate itself from closely related sibling tools such as rhino_layer_color or rhino_set_object_color.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like rhino_layer_color or rhino_material_assign. It also does not mention any prerequisites, such as the layer already existing, or whether this affects only display versus render material color.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_set_currentC
Set the active (current) layer.
Args:
name: Name of the layer to make current.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It confirms the operation mutates document state ('Set') but says nothing about side effects, error behavior when the named layer does not exist, or whether the change affects subsequent drawing and object placement. For a state-changing tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short lines with the purpose statement front-loaded and no filler; every word carries meaning. The Args line is slightly redundant with the schema's parameter name but adds the semantic explanation, so it earns its place for a simple 1-param 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?
The tool is simple (one required parameter) and an output schema exists, so return values need not be described. The description covers purpose and parameter, but with no annotations the agent is left unsure about failure modes for a nonexistent layer and about prerequisites, so it is adequate 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 description coverage is 0% — the schema's 'name' property has only type and title. The description compensates by explaining 'name: Name of the layer to make current,' clarifying that the identifier is a layer name rather than an ID or index, but it leaves format, case sensitivity, and existence requirements 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?
The first line, 'Set the active (current) layer,' names a specific verb (Set) and resource (the active/current layer), making the tool's goal unambiguous. It implicitly contrasts with the sibling rhino_layer_get_current, but never names any sibling or scope condition, so explicit 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 offers no when-to-use guidance, prerequisites, or exclusions — it does not say the layer must already exist, nor does it point at alternatives like rhino_layer_create or rhino_layer_get_current. Usage context is only weakly implied by the bare statement of function, which is insufficient among the large layer-tool sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_set_materialA
Bind a render material to a layer so layer-source objects inherit it.
Bridge-only: rhino3dm exposes ``material_index`` on the layer but the
in-document material table is read-only. Use ``rhino_material_create``
first to define the material.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals mutation; the description adds genuinely useful behavior beyond it: the in-document material table is read-only, materials must pre-exist, and layer-source objects inherit the bound material. This explains the operational constraint and prerequisite ordering well, though it does not cover failure cases or overwrite behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core purpose is stated in sentence one, followed by a tightly scoped constraint note. Every sentence earns its place, and the bridge-only caveat is necessary because it forces the correct call sequence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one args object and an output schema, the description covers the essential workflow: what the tool does, the prerequisite material creation, and the inheritance effect. It falls slightly short on explaining the material selection parameters, but the output schema and nested property descriptions partially fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, and the description does not compensate for this gap. It never mentions material_name/material_index mutual exclusivity, the doc_id default, or how to select which material to bind. The nested schema properties carry some descriptions, but the tool description itself adds no parameter-level meaning, and the agent is left without guidance on the two alternative selection modes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement: 'Bind a render material to a layer so layer-source objects inherit it.' This clearly states both the action and the effect, and the layer-level scope distinguishes it from object-level material siblings like rhino_material_assign, rhino_set_object_material, and rhino_assign_material_to_object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit sequencing guidance: 'Use rhino_material_create first to define the material,' and explains why in the bridge-only context. It does not explicitly state when not to use this tool or name the object-level alternatives, but the layer-scope is clear enough that the agent can infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_unisolateA
Show all layers (undo isolation).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full disclosure burden. It clearly states the state change: all layers are shown and the isolation state is undone. It does not discuss secondary effects like whether manually hidden layers are also forced visible, but the primary behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five words long, front-loads the action, and contains no filler. Every part earns its place, and the clarifying parenthetical adds meaningful context without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter visibility command with an output schema, the description is complete: it conveys the action, the scope, and the context (undo isolation). There is no need to explain return values or parameters, and no prerequisites are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema already fully covers inputs and the description has nothing parameter-specific to add. The baseline for a zero-parameter tool is 4, and the description's 'all layers' usefully clarifies the scope of the operation.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific verb and resource ('Show all layers') and ties it to the precise operation 'undo isolation'. This clearly distinguishes it from sibling tools like rhino_layer_isolate and rhino_layer_list, since it is an action that restores layer visibility rather than a listing or isolation command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'undo isolation' implies the correct context: use after rhino_layer_isolate has been applied. However, it never explicitly names alternatives or states when not to use it, so the usage guidance is implied rather than concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_layer_visibleA
Show or hide a layer.
Args:
name: Layer name.
visible: True to show, False to hide.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| visible | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the core action but does not mention side effects, whether the layer must already exist, whether the change is reversible, or whether other layer properties (like lock state) are unaffected. The description adds little beyond the direct action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and efficiently structured: a one-sentence action statement followed by parameter definitions. There is no redundant or extraneous text, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple visibility setter, the description is largely sufficient: it defines the action and both parameters, and an output schema is present. Minor gaps remain, such as behavior when the named layer doesn't exist and whether any side effects occur, but the low complexity keeps these from being critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining both parameters: 'name: Layer name' and 'visible: True to show, False to hide.' The visible parameter's boolean mapping is genuinely useful and clarifies the tool's behavior, though the name description is mostly a restatement.
Input schemas describe structure but not intent. Descriptions should explain 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 'Show or hide a layer,' which is a specific verb and resource. It clearly differentiates this tool from layer-related siblings like rhino_layer_lock, rhino_layer_rename, and rhino_layer_create by focusing solely on visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the usage scenario: call this tool when you need to change a layer's visibility. However, it provides no explicit guidance about when not to use it, no mention of alternatives like rhino_show_selected or rhino_hide_selected, and no conditions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_leaderB
Add a multi-point leader (with optional text).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal mutation via readOnlyHint=false, so the description's 'Add' is consistent and adds no contradiction. It does add minor context about multi-point structure and optional text, but it does not disclose how text attaches to the leader, whether the created object is selected, or any side effects beyond creation.
Agents need to know what a tool does to the 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 zero filler. Every word earns its place, and the core action and optionality are communicated efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 five parameters and no guidance on text placement, layer/doc targeting, or the relationship to the near-sibling rhino_add_leader, the one-sentence description is insufficient. An output schema exists so return values need not be covered, but the usage context is far too thin for a tool in a catalog of 400+ siblings.
Complex tools with many parameters or behaviors need more documentation. Simple 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% per context signals, and the description only hints at the 'text' parameter and the multi-point nature of 'points'. The parameters name, layer, and doc_id receive no explanation, and the leader-specific meaning of the point array (vertices of the leader) is left implicit, though the Point3dModel sub-schema does document coordinate units.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('multi-point leader') and notes the optional text capability, making the core purpose clear. It does not explicitly differentiate from the near-duplicate sibling rhino_add_leader in the catalog, which keeps it from 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 is provided. The description never mentions alternatives such as rhino_add_leader, rhino_annotation_callout, or rhino_text_dot, nor does it state preconditions like requiring an active document. The agent must infer applicability from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_lengthB
Measure the length of selected curves.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing curve length.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It states the tool measures length and returns a dict, but it does not explicitly confirm the operation is read-only/non-destructive, nor does it describe behavior for empty selections, multiple curves, or units.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core operation. The Args and Returns sections are brief, though the return line is somewhat vague ('command result containing curve length'); overall there is no wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description covers the basic operation adequately. However, it omits practical details such as selection prerequisites, behavior with multiple curves, units, and error conditions, making it minimally viable rather than 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 input schema has zero parameters, so there is little for the description to document at the argument level. The 'controller: RhinoController instance' line is not in the schema but reads as contextual dependency rather than a user-supplied parameter, so no actual call parameters are left 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 clearly states a specific verb and resource: 'Measure the length of selected curves.' It is unambiguous about what the tool does, though it does not explicitly differentiate itself from sibling rhino_curve_length, which may target a specific curve by identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected curves' implies the tool relies on the current Rhino selection, which is useful context. However, there is no explicit guidance about when to choose this tool over rhino_curve_length or how to handle cases with no selection or multiple selected curves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_light_addB
Add a point / spot / directional / rectangular / linear light to the document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is not read-only, and the description confirms a mutating action by stating it adds a light to the document. It adds some useful scope by listing the five light kinds, but it does not disclose behaviors like default placement when location is omitted, whether a target is required for spot lights, or how the resulting light is registered in the document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to identifying the operation and the variation of light types supported.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally sufficient for a simple default invocation: an agent can understand that this adds a light and can choose a kind. However, it is incomplete for correct advanced usage because it does not explain placement requirements, the role of target/location for certain light types, or how this tool relates to the specialized light-adding sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description needed to compensate for the wide range of parameters, but it only echoes the possible values of the 'kind' parameter. It does not explain location, target, intensity, color, width, length, layer, or spot_angle_deg, so meaningful parameter understanding still depends almost entirely on the schema 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 uses a specific verb ('Add') and resource ('light to the document'), and it enumerates the supported light kinds: point, spot, directional, rectangular, and linear. It is clear about what the tool does, though it does not explicitly differentiate itself from sibling tools like rhino_add_point_light, rhino_add_spotlight, and rhino_add_directional_light.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this unified light-add tool versus the more specific rhino_add_*_light sibling tools. The description provides no context about prerequisites, preferred workflows, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_lineB
Add a line between two points.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint as false, and the description's 'Add' clearly indicates a mutating operation. The description does not contradict annotations, but it also does not disclose additional behavioral details such as document selection defaults, layer creation, or whether the line is added to the active document. This is acceptable for a simple creation tool but adds limited value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant phrasing. It is appropriately concise, though the brevity comes at the cost of missing usage and parameter 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 simple line-creation tool with a well-structured schema, the description provides the minimum viable context. The output schema exists, and the input schema details most parameter semantics, so the description is adequate but leaves usage-selection and behavioral nuances to the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'two points,' which maps to the start and end parameters, but it does not explain required versus optional fields, coordinate units, default z-value, layer behavior, doc_id, or name. Schema description coverage is 0%, so the description needed to compensate more; the single phrase is not enough to clarify the full parameter model.
Input schemas describe structure but not intent. Descriptions should explain 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 'Add a line between two points' uses a specific verb and resource, clearly identifying the operation as creating a line segment from a start point to an end point. It conveys the core purpose, though it does not explicitly distinguish itself from related siblings like rhino_polyline or rhino_cmd_line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when a straight line between two points is needed—but provides no explicit guidance about alternatives or when not to use it. With many sibling tools for curves, polylines, and other primitives, the agent gets no selection criteria beyond the tool name and basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_list_blocksA
Return a list of all block definition names in the document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does clearly communicate that this is a read-only operation returning names, but it omits details such as whether nested block definitions are included, ordering, or behavior on an empty document. Adequate for a simple query but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the action and resource efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with an output schema, the description is largely sufficient. The main gap is not clarifying the relationship with rhino_block_list, but the tool itself is simple enough that an agent can call it correctly from this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already fully covers the input surface. The description adds no parameter details, but none are needed; baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Return a list') and resource ('all block definition names in the document'). However, it does not distinguish itself from the sibling tool rhino_block_list, which appears to overlap in purpose, so it is not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, and no exclusions or prerequisites are mentioned. The context is simply that it lists block definition names, but the near-duplicate rhino_block_list sibling is not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_list_objectsARead-only
List objects in the document with optional layer/type filter.
Returns up to ``limit`` objects starting at ``offset`` (after filters).
The response carries a ``pagination`` block — ``{total, offset, limit,
returned, has_more}`` — so the caller can iterate without guessing.
Async so concurrent ``rhino_*`` queries don't block FastMCP's event
loop while the bridge round-trip is in flight.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered, and the description adds genuinely useful behavior beyond that: it specifies the pagination contract ({total, offset, limit, returned, has_more}) and the async non-blocking execution during the bridge round-trip. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short paragraphs, each earning its place: the lead states the purpose, the second gives the pagination iteration contract, and the third explains the async behavior. Slightly more prose than strictly necessary, but there is no filler or 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 read-only listing tool, the description covers the core behavior, filter semantics, pagination iteration, and an operational caveat (async non-blocking). The output schema and per-parameter descriptions fill the remaining gaps, so nothing an agent needs to call or iterate over this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the context signal reports 0% coverage, the visible schema actually documents every parameter (kind, layer, limit, offset, doc_id), so the baseline is 3. The description adds order-of-operations meaning — filters apply before limit/offset — and surfaces the pagination block the caller must parse. doc_id is left to the schema, which is acceptable given its description and 'active' 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 opening sentence, 'List objects in the document with optional layer/type filter,' names a specific verb, resource, and scope, and the filter mechanism distinguishes it from sibling tools like rhino_layer_list (lists layers) and rhino_object_info (details one object). It is unambiguous as a read/query operation with no tautology or vagueness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 operational context for iterating ('the caller can iterate without guessing') and states that filters apply before limit/offset, but it never names an alternative or says when not to use this tool. Among the many sibling query/list tools, no routing guidance is offered. This is implied usage rather than explicit when/when-not instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_list_rhinoscript_modulesARead-only
List all available RhinoScript modules with function counts.
Use this to discover what areas of the API are available when you are not sure which module contains the functions you need.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds behavioral context by indicating that the result is an enumeration of all available modules with function counts, which tells the agent what kind of response to expect without overspecifying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states what the tool does, the second gives its intended use case. There is no filler, repetition of the schema, or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a no-argument, read-only listing tool with an output schema available. The description tells an agent exactly when to call it and what it returns, leaving no practical gap 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?
The tool takes zero parameters and the schema has no properties, so no parameter documentation is needed. The description's statement about listing all modules fully satisfies any parameter expectation; this is the appropriate baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List all available RhinoScript modules') and a distinctive output detail ('with function counts'). It clearly positions this as a discovery tool for API areas, which helps distinguish it from sibling lookup tools like rhino_search_rhinoscript_functions and rhino_get_module_functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use the tool: when the agent is not sure which module contains the functions it needs. It does not name alternative tools or state when not to use it, but the discovery scenario is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_list_saved_filesB
List all files in the default RhinoFiles directory (D:/RhinoFiles).
Args:
controller: RhinoController instance.
Returns:
Dict with 'files' key containing list of file info dicts,
and 'directory' key with the scanned path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the return contract (dict with 'files' and 'directory' keys) and pins the scanned path to D:/RhinoFiles, which is useful. However, it never explicitly states that this is a read-only, non-destructive operation that does not alter the document, leaving the safety profile implicit in the word 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly organized: a front-loaded one-line purpose, then concise Args and Returns sections. Every part earns its place, and the return structure is valuable. The docstring-style formatting is slightly templated but not 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 simple zero-parameter listing tool with an output schema, the description covers the core needs: what it lists, where, and what shape the result takes. Minor omissions such as whether subdirectories are scanned, which file extensions are included, and ordering/sorting behavior are not addressed, but these are low-stakes 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?
The tool has zero parameters, so the baseline is 4 and there is nothing for the schema to document. The description does add context via an 'Args' note explaining that the controller is a RhinoController instance, though this parameter does not appear in the schema and could mildly confuse an agent into expecting a callable argument.
Input schemas describe structure but not intent. Descriptions should explain 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: 'List all files in the default RhinoFiles directory (D:/RhinoFiles)'. This is unambiguous and the resource (files on disk) is inherently distinct from siblings like rhino_list_objects (document geometry), rhino_layer_list, and rhino_block_list. However, it never names a sibling or explicitly contrasts itself, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives such as rhino_open, rhino_save, or rhino_list_objects. The purpose line implies a use case, but no conditions, exclusions, or alternative tools are mentioned. With over 170 siblings, the lack of any routing guidance is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_lock_selectedA
Lock currently selected objects so they cannot be selected or modified.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it clearly states that locked objects 'cannot be selected or modified.' However, it omits details such as whether lock state persists across documents, whether objects remain visible, and how to reverse the action, so it is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 13-word sentence states the action, target, and consequence with no filler. It is efficiently front-loaded and appropriate for a zero-argument command.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 command with an output schema, the description is nearly complete: it identifies the affected objects and the outcome. It could add an unlock alternative or note about no selection, but such gaps are minor for this simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so the baseline is 4. The description usefully identifies that the target is the current selection, which is the relevant implicit input and requires no parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Lock), a resource (currently selected objects), and the resulting state (cannot be selected or modified). This clearly distinguishes it from sibling tools like rhino_unlock_all or rhino_hide_selected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently selected objects' implies that the command depends on an existing selection, but the description does not state when to prefer this over alternatives such as rhino_unlock_all or rhino_layer_lock. Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_loftB
Loft a sequence of profile curves into a surface.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint: false, so the agent knows this is a mutating operation; the description adds that it consumes profile curves and produces a surface, which is consistent. However, it doesn't disclose behavioral nuances such as sensitivity to curve ordering, whether the source curves remain unmodified, or how loft_type affects the result. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 10-word sentence, front-loaded with the verb, zero filler or repetition. Every word earns its place, and the statement is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a nuanced surface-creation tool with 6 parameters, including loft_type with 5 modes and a closed flag, yet the description is only one sentence. It fails to address curve ordering requirements, what the loft_type presets mean, when closed is appropriate, or how this tool relates to the dozens of surface-creation siblings. The output schema and annotations do not compensate for this lack of guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden. It usefully clarifies the core parameter profile_ids as 'profile curves,' which is meaningful. But it adds nothing about name, layer, closed, or loft_type semantics beyond what the schema's terse titles and defaults already show, leaving half the tool's behavior 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?
The description states a specific verb ('Loft'), a specific input ('a sequence of profile curves'), and a clear output ('a surface'). This is a functional definition that an agent can act on. However, it doesn't differentiate from siblings like rhino_cmd_loft, rhino_subd_loft, rhino_sweep1, or rhino_network_surface, all of which also create surfaces from curves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use loft versus the many alternative surface-creation tools in the sibling list (sweep1/sweep2, network_surface, patch, edge_srf, subd_loft). The description provides no exclusions, no prerequisites, and no hint about which scenario favors lofting over other operations, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_make2dC
Generate a 2D drawing projection of 3D objects.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no behavioral annotations beyond a title, so the description must carry the burden of explaining side effects and behavior. It only says the tool generates a projection; it does not disclose that new curve objects are typically created in the document, that original objects remain unchanged, or that output may be extensive and view-dependent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant phrasing. It loses a point because it is so sparse that it does not use its brevity to convey scoping or usage 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 tool with four nested parameters, no behavioral annotations, and many similar siblings, a one-sentence description is inadequate. It does not mention the active viewport dependency, hidden-line handling, target layer, or the fact that the tool creates a new 2D drawing representation, so an agent cannot fully anticipate the results or configure the call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds almost no parameter-level meaning. '3D objects' loosely maps to object_ids, but there is no explanation of layer, view_name, or show_hidden behavior in the description. The schema partially documents view_name and show_hidden, but the overall coverage is low and the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generate') and resource ('2D drawing projection of 3D objects'), so an agent can identify what this tool does. It does not explicitly distinguish it from related siblings like rhino_section, rhino_silhouette, or rhino_project_to_cplane, but '2D drawing projection' is reasonably specific to Make2D.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool instead of sibling tools that produce sections, contours, silhouettes, or drawing views. The description gives no context about documentation workflows, view dependence, or when Make2D is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_match_srfB
Match the edge of one surface to another for G0/G1/G2 continuity.
Pre-select the edge to adjust before calling.
Args:
controller: RhinoController instance.
continuity: Continuity type: 'Position', 'Tangency', or 'Curvature'.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| continuity | No | Tangency |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explains that the selected edge is adjusted and that the return is a dict with 'status' and 'command' keys. However, it does not explicitly state whether the source/target geometry is modified, whether the operation is destructive, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with its purpose and uses a clear Args/Returns structure. The 'controller' line is extraneous and inconsistent with the schema, and the mapping between G0/G1/G2 and the continuity values is left implicit, reducing the clarity of the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with an output schema, the core operation and return shape are covered. But the description omits how the second/target edge is specified—it only mentions pre-selecting 'the edge to adjust'—and it never explains the relationship between G0/G1/G2 and Position/Tangency/Curvature. These are material gaps for correctly invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'continuity' as a string with default 'Tangency', and schema coverage is 0%, so the description must add meaning. It usefully enumerates the allowed values: 'Position', 'Tangency', or 'Curvature'. However, it also lists 'controller' as an argument that is not present in the input schema, which could mislead an agent into passing an invalid parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: matching the edge of one surface to another for G0/G1/G2 continuity. This clearly identifies the tool's purpose and distinguishes it from generic surface creation or editing 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 gives a concrete prerequisite: 'Pre-select the edge to adjust before calling.' However, it does not explain when to prefer this tool over alternatives like rhino_match_surface or rhino_blend_surface_edges, nor does it mention how the target edge is selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_match_surfaceC
Adjust a surface edge to match the continuity of a target surface.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title and no readOnly or destructive hints, so the description carries the full behavioral burden. It implies in-place modification by saying 'adjust', but it does not disclose whether the source surface is destructively modified, whether a matching edge must be pre-selected, or what happens to the target surface. This is too thin for a geometry-mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to the core meaning, and it is appropriately sized for the tool's modest parameter surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 that modifies geometry, the description is too sparse. It leaves out behavioral expectations, side effects, and any indication of how the continuity match is applied. The presence of an output schema helps with return values, but it does not make up for the missing usage and mutation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps 'surface edge' to the surface to modify and 'target surface' to the reference, but it adds no detail about the continuity scale or defaults. With schema description coverage reported as 0%, the description does not compensate for the missing parameter-level guidance, even though the nested schema itself contains some field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('adjust'), the object ('a surface edge'), and the goal ('match the continuity of a target surface'). It is not a tautology and clearly communicates the tool's purpose. It does not differentiate from the sibling rhino_match_srf, which likely wraps the same command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus related surface tools such as rhino_blend_surface_edges, rhino_merge_surfaces, or rhino_match_srf. It also does not mention prerequisites, exclusions, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_material_assignB
Assign an existing material to one or more objects.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, so the mutation aspect is covered. The description adds mild context by specifying the material must be 'existing' and that the operation applies to 'one or more objects,' implying batch behavior, but it does not disclose whether prior material assignments are replaced or what happens on invalid inputs.
Agents need to know what a tool does to the 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 concise sentence that states the action, resource, and scope with no redundant words. It earns its place entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 assignment tool, the description plus schema constraints and mutation annotation are mostly sufficient: doc_id is documented in the schema, object_ids constraints are present, and the description clarifies the operation's purpose. It would be more complete if it noted that the material must already be defined (beyond the word 'existing') or differentiated from sibling material tools, but nothing critical 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% for the top-level args, so the description must help interpret parameters. It does map to the key parameters: 'existing material' corresponds to material_name and 'one or more objects' to object_ids, but it does not explain doc_id or provide explicit parameter-level guidance beyond what the schema already offers for doc_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Assign') and identifies both the resource ('existing material') and target ('one or more objects'), clearly stating the action. However, it does not distinguish this tool from similarly named siblings like rhino_assign_material_to_object or rhino_set_object_material, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to prefer this tool over alternatives, and no exclusions or prerequisites are stated. With multiple material-related siblings (rhino_assign_material_to_object, rhino_set_object_material, rhino_layer_set_material), an agent cannot determine which one to select for a given task from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_material_createB
Create a material with diffuse colour, transparency, and glossiness.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a mutating operation via readOnlyHint false, and 'Create' matches that. However, the description adds no extra behavioral context such as duplicate-name handling, document targeting via doc_id, or whether the material remains unassigned after creation. It is not contradictory, but it provides no additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact, front-loaded sentence with no filler. Every word earns its place, and the key resource-verb pair appears immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 relatively simple creation tool with a detailed schema and output schema, the description is minimally adequate. But it relies on the schema for the required name, doc_id default, and value constraints, while leaving the relationship to material_assign and material_preset_create implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It maps three appearance concepts to parameters — diffuse, transparency, glossiness — but omits the required name parameter and the doc_id document-targeting parameter, and gives no interpretation of the 0-1 value ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create a material' plus the three key appearance fields. This clearly distinguishes it from sibling tools like material_assign or material_preset_create by focusing on the creation of a stand-alone material definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool over closely related siblings such as rhino_material_assign, rhino_layer_set_material, or rhino_material_preset_create. The description states the action but provides no conditions, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_material_preset_createA
Create a document material from a bundled physical preset.
Standalone uses rhino3dm's basic Material (diffuse / transparency / shine). Bridge mode also pushes the matching Rhino PBR render content + IOR for photoreal output.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description meaningfully discloses mode-dependent behavior beyond the annotations: standalone mode produces only a basic rhino3dm material, while Bridge mode adds PBR render content and IOR. This helps an agent predict output differences. It does not contradict the readOnlyHint=false annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. The second sentence adds only the useful mode distinction without filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core purpose and mode split are covered, and the schema handles parameter details and return structure. However, the description does not explain what triggers Bridge mode, nor does it mention that preset names come from rhino_material_preset_list as a prerequisite step. This leaves some contextual ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description itself does not elaborate on parameters, but the input schema already provides useful descriptions for doc_id, preset_name, and material_name, including defaults and the relationship to rhino_material_preset_list. The description adds little beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly identifies the action: creating a document material from a bundled physical preset. It is specific about the resource and operation, though it does not explicitly differentiate itself from sibling tools like rhino_material_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as rhino_material_create or rhino_material_preset_list. The mention of 'bundled physical preset' implies the use case, but the description does not state prerequisites, exclusions, or routing conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_material_preset_listARead-onlyIdempotent
List physical-material presets bundled with rhino-mcp.
Returns the full catalogue (or a single category subset) so the LLM
can pick a known-good name before calling ``rhino_material_preset_create``.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile with a lower bar for the description. The description adds value beyond that: presets are 'bundled with rhino-mcp' (built-in, known-good names) and the return shape is the full catalogue or a category subset. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: verb+resource scope is front-loaded, followed by return behavior and purpose tied to the create tool. 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 read-only, idempotent list tool with an output schema, the description covers what is listed, how the optional category filters it, and when to call it. The only parameter's valid values live in the schema, and annotations handle the safety profile. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The meaningful parameter, category, has a thorough schema description enumerating all eight valid values (stone, metal, glass, wood, plaster, fabric, polymer, landscape), so the schema does the heavy lifting. The description's 'full catalogue (or a single category subset)' mirrors that semantic without adding the value list, contributing marginal meaning. Together they are complete, but the description itself adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource: 'List physical-material presets bundled with rhino-mcp.' The description then clarifies scope by distinguishing full-catalogue vs. single-category-subset output, and frames it as a lookup step for rhino_material_preset_create. An agent can clearly tell this apart from the many material-related sibling tools (create, assign, layer_set_material).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the canonical use case: call this to 'pick a known-good name before calling rhino_material_preset_create.' This is clear contextual guidance for when the tool fits into a workflow. However, it does not name when-not conditions or alternatives (e.g., using rhino_material_create for fully custom materials), so it stops short of explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_materials_managerA
Open the Rendering / Materials panel.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. The verb 'Open' implies a non-destructive UI action, but the description does not explicitly mention side effects, whether a document must be open, or whether the panel is toggled or focused. Acceptable for a trivial panel opener, but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes to the action and target, and there is no redundant restating 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 zero-parameter UI opener with an output schema present, the description covers the essential invocation detail: what panel is opened. A note about prerequisites or non-destructive behavior could add context, but nothing critical is missing for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not required. The description correctly avoids inventing parameter-like options, meeting the 0-parameter baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Open') and a concrete UI destination ('Rendering / Materials panel'), which clearly identifies this as a panel-opening tool rather than a material creation/assignment or rendering tool. It is specific enough to distinguish from siblings like rhino_material_create and rhino_render_setup, though it does not explicitly frame the panel's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no exclusions, and no prerequisites. The intended use is loosely inferable from the verb and panel name, but an agent receives no explicit direction about when to reach for this over sibling rendering/material tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_merge_all_coplanar_facesA
Merge all coplanar faces of selected polysurfaces into single faces.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It states the operation and return type but fails to disclose that the tool modifies the document, whether changes are destructive or undoable, or what happens if no polysurfaces are selected. This is a significant 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?
The description is concise and front-loaded: the first sentence conveys the core action, and the Args/Returns lines are standard boilerplate. No redundant information or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an output schema, the core action is covered. However, the description omits behavioral context such as document modification, selection prerequisites beyond the word 'selected', and potential failure conditions, making it only partially 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?
There are zero parameters in the schema, so the baseline is 4. The description mentions a 'controller' argument that does not appear in the schema, which is mildly confusing, but no parameter documentation is actually needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Merge') and resource ('all coplanar faces of selected polysurfaces into single faces'), clearly identifying the operation. The word 'coplanar' distinguishes it from sibling tools like rhino_merge_all_faces and rhino_merge_surfaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when selected polysurfaces need coplanar faces merged. However, it provides no explicit guidance on when not to use it, no alternatives, and no exclusions, leaving comparison with related merge tools to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_merge_all_facesB
Merge all coplanar adjacent faces in selected polysurfaces.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of disclosing side effects and behavior. It only says 'merge' and does not clarify whether the operation modifies the selected polysurfaces in place, requires an existing selection, is undoable, or has other notable consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is a single, clear sentence that front-loads the core operation without unnecessary fluff. The added 'Args' line is arguably redundant and creates a schema mismatch, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward face-merging operation, the description conveys the essential operation and target objects. It lacks context about prerequisites, side effects, and selection requirements, and it does not clarify its relationship to the very similar sibling tool rhino_merge_all_coplanar_faces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameters that require documentation and the baseline is 4. However, the description's 'Args: controller: RhinoController instance' references an argument not present in the schema, creating confusion and reducing the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action, 'Merge all coplanar adjacent faces in selected polysurfaces,' identifying both the operation and the target geometry. It is understandable but does not distinguish itself from the nearly identical sibling tool rhino_merge_all_coplanar_faces, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in selected polysurfaces' implies the prerequisite that the user must select polysurfaces before invoking the tool. However, it gives no explicit when-to-use guidance, exclusions, or comparison with similar face/surface merging tools, so usage context is only partially conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_merge_edgeB
Merge selected adjacent edges of a surface.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool merges edges, which implies a mutating operation, but it does not mention reversibility, impact on the surface topology, failure modes, or any side effects. This is a meaningful gap for a geometry-modifying 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 core action is front-loaded in the first sentence and the description is short. The Args/Returns boilerplate is slightly generic but not excessive. It earns a high score for brevity, though the controller line is somewhat redundant given the empty 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 zero-parameter tool, the description is minimally sufficient: it names the action and target and mentions the return type. However, it lacks usage context, such as whether a selection must already exist, what types of edges qualify, and how failures are reported. The presence of an output schema reduces the need to describe return values, but behavioral context is still thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty, so there are no parameters to document; the baseline is 4. The description mentions a 'controller: RhinoController instance' in Args, but this is not represented in the schema, so it adds little practical semantic value beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Merge selected adjacent edges of a surface.' This clearly identifies an edge-level merge operation, which distinguishes it from sibling tools like rhino_merge_surfaces or rhino_merge_all_coplanar_faces. The phrase 'selected adjacent edges' also conveys the object scope and selection requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It implies the user must select adjacent edges, but it never explicitly says how selection is handled or what happens when the condition is not met.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_merge_surfacesC
Merge multiple surfaces into a single surface.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include only a title, with no readOnly or destructive hints. The description says 'merge' but does not disclose whether the input surfaces are consumed, whether the operation is reversible, how tolerance affects the result, or whether any model state is mutated. The full burden falls on the description, and it does not carry 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?
The description is a single clear sentence with no filler. It is appropriately brief for a simple tool, though it could have added a short usage note without becoming 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?
The description is minimal and leaves key selection and safety context unaddressed. With many surface-related siblings and no behavioral annotations, an agent cannot tell when this tool is the right choice or what side effects to expect. The output schema helps with return shape but not with decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-level meaning, but the input schema itself documents surface_ids as 'GUIDs of surfaces to merge' and tolerance as 'Merge tolerance,' with constraints like minItems: 2. The schema covers the basics, so the description does not need to repeat them, though it also does not clarify tolerance units or effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Merge multiple surfaces into a single surface.' It clearly conveys the core operation and result. However, it does not distinguish this from closely related sibling tools such as rhino_merge_all_faces, rhino_merge_all_coplanar_faces, rhino_join, or rhino_stitch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like join, stitch, or merge_all_faces. The description states the operation but gives no context about prerequisites, adjacency requirements, or conditions that would make this tool preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_boolean_differenceBDestructive
Boolean-difference meshes (a - b).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and not read-only. The description adds the 'a - b' operand ordering, which clarifies which meshes are subtracted from which, but it does not explain whether source meshes are consumed, modified, or 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 description is a single front-loaded sentence with no filler. It communicates the essential operation directly, though more behavioral and usage detail could be added without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple boolean operation, the description plus the output schema and destructive annotation cover the basics. However, it leaves gaps around when to use this tool, what happens to the input objects, and the meaning of optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It clarifies a_ids and b_ids via 'a - b', but it does not explain optional parameters like name, layer, or doc_id beyond what the bare schema field names imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation: subtracting b meshes from a meshes via boolean difference. It distinguishes itself from union/intersection mesh tools, though it does not differentiate from the similar sibling rhino_cmd_mesh_boolean_difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives like rhino_boolean_difference or rhino_cmd_mesh_boolean_difference. The description states what it does but not the conditions under which it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_boolean_intersectionB
Boolean intersection of selected closed meshes.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It hints at preconditions (closed, pre-selected meshes) but does not disclose that a boolean intersection is destructive — the original selected meshes are typically consumed/replaced by the resulting intersection mesh. Error behavior for open meshes or empty selections is also undisclosed, leaving a significant transparency 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?
The core sentence is a single, efficient, front-loaded statement: 'Boolean intersection of selected closed meshes.' Every meaningful word earns its place. The appended Args docstring is boilerplate that adds little value since the input schema is empty, but it is small enough not to be distracting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 0-parameter tool, the description correctly captures the essential hidden dependency: it operates on the current document selection of closed meshes. However, it omits the destructive consequence (originals replaced by the intersection result), which is critical operational context given there are no annotations. An output schema exists, so return-value details need not be described. Complete enough to attempt a call, but gaps remain around failure and 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?
The tool has 0 parameters and the schema is 100% covered (vacuously); per the baseline rule, descriptions of 0-param tools earn a 4. The description's Args section names the conventional controller argument, adding a small amount of context about how the tool is invoked, even though it is not a schema parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — 'Boolean intersection' — on a specific resource: 'selected closed meshes'. This clearly conveys the tool's function and the 'mesh' qualifier plus 'closed meshes' phrasing inherently distinguishes it from the NURBS-based rhino_boolean_intersection sibling. It does not explicitly name a sibling or contrast itself, so it stops just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected closed meshes' implies the usage context: the user must pre-select closed mesh objects and invoke the tool with no further arguments. However, there is no explicit when-to-use guidance, no mention of alternatives (e.g., rhino_boolean_intersection for breps, or boolean union/difference for other operations), and no exclusions. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_boolean_unionCDestructive
Boolean-union meshes.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the basic side-effect profile is known. However, the description adds no context beyond the operation itself—such as whether input meshes are modified, whether a new mesh is created, or how overlapping geometry is handled. With such a minimal description, the burden on the structured annotations is not supplemented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and contains no filler, but it is under-specified and essentially restates the tool name and title in different order. It is not concise in a meaningful way; it is terse to the point of being tautological.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 boolean operation requiring two sets of mesh IDs, an output schema, and destructive behavior, this description is far too incomplete. It provides no information about how to specify input meshes, what the operation produces, or any constraints or side effects. It is not viable for an agent to invoke this tool correctly based solely on this description.
Complex tools with many parameters or behaviors need more documentation. Simple 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 provides no information about any parameters. The crucial a_ids and b_ids inputs, layer, name, and doc_id are left entirely unexplained, leaving the agent to infer from the schema alone. A description needs to compensate for zero schema coverage, and this one does not.
Input schemas describe structure but not intent. Descriptions should explain 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 'Boolean-union meshes' uses a specific verb and resource, clearly indicating a mesh boolean union operation. It distinguishes from sibling boolean mesh operations like difference and intersection through the word 'union,' though it does not explicitly contrast with rhino_boolean_union or rhino_cmd_mesh_boolean_union.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as rhino_boolean_union for NURBS/Brep objects or the command variant rhino_cmd_mesh_boolean_union. There is no mention of prerequisites, selection context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_boxC
Add a quad mesh box with the given subdivisions.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, indicating this is a mutation, and the description's 'Add' is consistent with that. However, the description adds essentially no behavioral context beyond the annotations — it does not mention that a new object is created in the active document, how the doc_id/layer targeting works, or that corner/size are in document units.
Agents need to know what a tool does to the 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 well-front-loaded sentence with no filler. The verb and object appear first, and the subdivisions detail is appended meaningfully. It is appropriately short, though slightly more information could be packed in without bloating it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a sparse schema and no usage guidance, the description is incomplete. It does not explain how the box is oriented/placed, how subdivisions affect the mesh, or how this differs from structurally similar box-creation tools. The output schema partially compensates for return-value concerns, but the invocation context remains underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter-semantics burden, but it only hints at one aspect ('subdivisions' maps to divisions_x/y/z). It says nothing about the corner point, size dimensions, doc_id, layer, or name parameters, leaving the agent to infer most semantics from property names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add'), a distinct resource ('quad mesh box'), and a key detail ('with the given subdivisions'). Combined with the title 'Add Mesh Box' and the tool name, an agent can tell this creates a mesh primitive, distinguishing it from rhino_box (NURBS) and rhino_subd_box (SubD), though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The large sibling list includes closely related creation tools such as rhino_box, rhino_subd_box, rhino_mesh_from_brep, and rhino_mesh_from_surface, but the description never explains when a mesh box is the right choice instead of a solid or SubD box.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_from_brepC
Mesh a Brep (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false already signals mutation, and the description adds little behavioral context. It does not state whether a new mesh object is created, whether the source Brep is altered, what layers or names are used, or what 'bridge only' actually means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and front-loaded, but this is under-specification rather than effective conciseness. The unexplained parenthetical '(bridge only)' is not informative, and essential behavioral and usage context is absent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a conversion tool with multiple input fields and no meaningful parameter documentation, a single sentence is inadequate. It omits how the Brep is selected, what quality controls, and what side effects or outputs to expect; the output schema does not compensate for the missing input and behavior 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%, and the description names none of the schema parameters. It does not explain that object_id must reference a Brep or how quality, layer, name, and doc_id affect the result, so it fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description has a specific verb ('Mesh') and resource ('a Brep'), so the core operation is identifiable and is reinforced by the title. It partially distinguishes from siblings like rhino_mesh_from_surface and rhino_mesh_from_nurbs by naming Brep as the input type, though the parenthetical '(bridge only)' is cryptic and adds ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, exclusions, or alternative tools are mentioned. An agent cannot tell from the description whether to choose this over rhino_mesh_from_surface or rhino_mesh_from_nurbs, or what conditions make this tool appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_from_nurbsA
Convert selected NURBS surfaces / polysurfaces to a render mesh.
Args:
controller: RhinoController instance.
max_angle: Maximum angle between mesh normals (degrees).
max_aspect: Maximum aspect ratio of mesh faces (0 = ignore).
max_distance: Maximum distance from mesh edge to surface.
max_edge: Maximum mesh edge length (0 = ignore).
min_edge: Minimum mesh edge length.
min_initial_grid: Minimum initial grid quads per surface.
refine: Refine the mesh for better quality.
jagged_seams: Allow jagged seams between surfaces.
| Name | Required | Description | Default |
|---|---|---|---|
| refine | No | ||
| max_edge | No | ||
| min_edge | No | ||
| max_angle | No | ||
| max_aspect | No | ||
| jagged_seams | No | ||
| max_distance | No | ||
| min_initial_grid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states that conversion happens but does not disclose whether new mesh objects are created, whether the original surfaces are modified or deleted, whether selection is required, or any side effects. The parameter list gives mesh settings but not operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a single purpose sentence followed by a parameter list. Every line adds information, and the most important purpose statement is front-loaded. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The parameter semantics are complete and an output schema exists, so return values do not need explanation. However, the description omits behavioral effects, prerequisites beyond 'selected', and guidance on choosing this over similar mesh-creation tools. For a conversion operation with no annotations, this is a notable 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?
Although the schema has no descriptions, the description's Args block provides meaningful explanations for every schema parameter, including units ('degrees'), interpretation of zero values ('0 = ignore'), and specific roles like 'Minimum initial grid quads per surface'. This adds substantial value beyond the bare property 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 clearly states a specific action ('Convert'), resource ('selected NURBS surfaces / polysurfaces'), and result ('render mesh'). However, it does not explicitly distinguish itself from closely related siblings like rhino_mesh_from_surface or rhino_mesh_from_brep, which overlap in function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Convert selected NURBS surfaces / polysurfaces' implies the tool is used when the current selection contains NURBS geometry and a mesh is desired. There is no explicit when-to-use guidance, no mention of alternatives, and no clarification about which sibling to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_from_surfaceC
Mesh a surface (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false is present and consistent with a mesh-creation operation, so there is no contradiction. The description adds little beyond the annotation: it does not disclose side effects (whether a new mesh object is created while the source surface is preserved), the meaning or origin of the 'bridge only' constraint, or any failure modes when given a non-bridge surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded with the main action ('Mesh a surface'), with zero wasted words. However, the brevity borders on under-specification: the ambiguous parenthetical '(bridge only)' costs the reader more effort to interpret than it saves in length, and no structuring helps an agent parse the constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but critical context is missing. The central ambiguity — what 'bridge only' means and how it restricts valid inputs — is unaddressed, and no distinction is drawn from the closely related rhino_mesh_from_brep tool. An agent cannot reliably determine when to invoke this tool from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is effectively 0% for the description's purposes, and the description says nothing about any parameter — object_id, quality, name, layer, or doc_id. The schema itself documents quality ('0..1 (1 = finest)') and doc_id, but object_id is the required parameter and receives no explanatory text in either the schema or 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?
The description states a clear verb and resource ('Mesh a surface'), so it is not a pure tautology. However, the qualifier '(bridge only)' is unexplained — there is no definition of what a 'bridge' surface is — and it does not differentiate the tool from siblings like rhino_mesh_from_brep or rhino_mesh_from_nurbs, which perform similar meshing operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. The description gives no indication of when to choose this tool over rhino_mesh_from_brep, rhino_mesh_from_nurbs, or rhino_quad_remesh, and no exclusions or alternatives are named. The '(bridge only)' constraint implies a usage restriction but provides no way for an agent to determine whether a given surface qualifies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_repairB
Launch the MeshRepair wizard for selected meshes.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It only states that the wizard is launched and does not disclose whether this is an interactive UI process, whether existing meshes are modified, what happens if nothing is selected, or whether any result is returned. The wizard nature is implied but not elaborated.
Agents need to know what a tool does to the 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 in a single sentence, and the description is appropriately short. The 'Args: controller' block adds boilerplate that does not earn its place, preventing a full score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 launcher with an output schema, the description is minimally sufficient: it names the wizard and the object scope. However, it lacks useful context about interactive behavior, selection requirements, and how this tool relates to neighboring mesh-health, mesh-weld, and subd-repair tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no user parameters that need explanation. The 'Args: controller: RhinoController instance' line appears to be internal boilerplate rather than an MCP-exposed parameter, and it does not materially confuse the empty schema. A zero-parameter tool needs little semantic help from 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?
The description uses a specific action ('Launch') and a clear resource ('MeshRepair wizard') scoped to 'selected meshes,' making the tool's purpose immediately identifiable. It does not explicitly contrast with sibling tools such as rhino_report_mesh_health or rhino_repair_subd, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor does it mention prerequisites, whether mesh selection is mandatory, or whether this should complement other mesh-health or repair operations. The phrase 'for selected meshes' only implies a precondition instead of stating it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_splitB
Split a mesh with another mesh or surface.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses only the basic operation; it does not say whether the original mesh is modified, whether new objects are created, how the mesh/surface operands are chosen, or whether any undo/safety implications apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is short and front-loaded with the action. The Args block is unnecessary boilerplate but does not meaningfully hurt clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating mesh operation with zero annotations and a complex family of sibling split/boolean tools, the description omits selection requirements, output behavior, and edge cases. An agent knows what the tool does conceptually but not how to invoke it correctly in the current Rhino session.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema declares zero parameters, so there are no parameter semantics to document; baseline 4 applies. The 'Args: controller' line is a runtime detail rather than a user-facing parameter and does not add useful schema-level 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?
Description states a specific verb and resource ('Split a mesh with another mesh or surface'). It is clear what class of operation this is, though it does not differentiate from sibling tools like rhino_split, rhino_mesh_trim, or rhino_boolean_split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 about when to choose this tool over the many other split/trim/boolean siblings, and no mention of prerequisites such as pre-selecting the target mesh and cutter. The expected usage context must be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_to_nurbsB
Convert selected mesh objects to NURBS surfaces.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only names the operation and does not explain whether the original meshes are preserved, deleted, or hidden, what happens with no selection, or whether the conversion is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main sentence is concise and front-loaded, but the trailing 'Args: controller' boilerplate adds no value and is inconsistent with the empty input 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?
This is a simple zero-parameter conversion tool and an output schema is present, so the core intent is clear. Still, the behavior around the original meshes and selection requirements is not described, leaving notable gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no real parameters. The description still lists a 'controller' argument in its Args section, which is not present in the schema and creates ambiguity rather than adding meaningful parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Convert selected mesh objects to NURBS surfaces') with a clear resource and transformation. It differentiates the tool from related siblings like rhino_subd_to_nurbs and rhino_mesh_from_nurbs without needing to open their 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 phrase 'selected mesh objects' implies the tool operates on a current selection, which gives some usage context. However, it does not explicitly state when to prefer this over other conversion tools, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mesh_trimC
Trim a mesh with a cutting curve or surface.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the action without mentioning whether the operation modifies the mesh in place, returns a new mesh, requires a specific selection state, or has any destructive side effects. This is similar to the update_drive coding example where an unannotated mutation tool received a 2.
Agents need to know what a tool does to the 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 main sentence is concise and gets to the point quickly. However, the Args block adds noise and contains inaccurate information about a controller parameter that isn't in the schema, so every word doesn't earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and omits critical context for a mesh-trim operation: how the mesh and cutting geometry are selected, what happens to the original mesh, what the output format is despite the presence of an output schema, and any limitations with curves versus surfaces. An agent would likely need to inspect other tools or runtime state to use this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, yet description lists an 'Args: controller: RhinoController instance' block, which is not present in the schema. This is actively misleading because it suggests a parameter the tool does not accept via the schema. With 0 params the description should clarify that no arguments are expected, but instead it introduces a phantom parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Trim') and resource ('a mesh') with a specific method ('with a cutting curve or surface'), which is precise enough for an agent to understand the core operation. It does not explicitly name sibling tools like rhino_mesh_split or rhino_trim, so it falls short of the 5-level sibling differentiation requirement, but it is not vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rhino_mesh_split, rhino_trim, or boolean mesh operations. The description gives no context about selection prerequisites, when a curve versus surface is appropriate, or which sibling tools to prefer in different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_mirrorB
Mirror objects across a plane (copies by default).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the description is not expected to restate that this is a mutating operation. The phrase 'copies by default' adds useful behavioral context about the make_copy default. It does not disclose what happens when make_copy=false, such as whether the original is moved, replaced, or deleted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or redundancy. It front-loads the primary action and ends with the most important behavioral default, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 transformation tool, the description is minimally adequate: it gives the operation, the geometry reference, and the default copy behavior. The schema and output schema fill in plane structure and return details, but the description omits what happens when make_copy=false and provides no guidance on prerequisites or side effects. These gaps make it incomplete for an agent that must reason about non-default calls.
Complex tools with many parameters or behaviors need more documentation. Simple 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 reported as 0%, so the description must compensate. It maps well to key parameters: 'objects' to object_ids, 'across a plane' to plane, and 'copies by default' to make_copy. However, it does not explain object_ids selection semantics, doc_id targeting, or plane orientation beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: mirror objects across a plane. It names the specific verb, resource, and geometric constraint. However, it does not differentiate from the similar sibling rhino_cmd_mirror, so it stops short of fully distinguishing among alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool instead of sibling transformation tools like rhino_cmd_mirror, rhino_move, or rhino_orient. The only contextual hint is the default copy behavior, which does not help with selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_modify_offset_curveC
Offset a selected curve by a given distance.
Args:
controller: RhinoController instance.
distance: Offset distance.
both_sides: If True, offset to both sides of the curve.
cap: If True, add end caps (for open curves with BothSides=Yes).
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| cap | No | ||
| distance | No | ||
| both_sides | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full behavioral disclosure burden. It explains both_sides and cap behavior and states a dict return, but it never clarifies whether this creates a new offset curve, modifies the selected curve, or edits an existing offset object. It also lists a 'controller' argument that is not present in the input schema, adding confusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, and each schema parameter gets a concise explanation. The Returns line is generic and low-value, and the controller entry adds noise, but overall the text 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 mutation-oriented tool with no annotations, the description omits essential operational context: whether the operation creates or mutates geometry, whether a selection must already exist, and what the returned dict indicates about success or failure. Even with an output schema present, these gaps make the tool hard to invoke 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 descriptions cover 0% of parameters, so the description is the only source of parameter meaning. It usefully explains distance, both_sides, and cap, including the cap condition for open curves. However, it also documents a 'controller' parameter absent from the schema, which creates ambiguity about what the agent should actually provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Offset'), names the resource ('selected curve'), and states the core input ('given distance'). However, it does not distinguish this tool from the sibling rhino_offset_curve, which appears to serve the same purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus rhino_offset_curve, rhino_offset_surface, or other offset-related siblings. It also does not mention prerequisites such as having a curve selected or what happens if multiple curves are selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_moveC
Translate (or copy) the given objects by a vector.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, signaling mutation. The description says 'Translate (or copy)' but does not disclose that original objects are repositioned when make_copy is false, does not mention units or coordinate conventions, and provides no context about undo or document behavior. There is no contradiction with annotations, but the disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word contributes to identifying the core operation, so it is concise and well-structured, even though it is sparse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 nested parameters and many sibling transform tools, one sentence is not enough context. It does not explain effect on source objects, coordinate system, units, or when to prefer this over similar move/orient/flow tools. The output schema exists but does not compensate for the missing usage 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%, and the description does not compensate. Saying 'by a vector' adds only broad meaning; it does not explain the x/y/z component semantics, default z=0 behavior, or the relationship between object_ids and translation. The schema has some nested descriptions, but the tool description itself adds almost no parameter-level value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation as translating objects by a vector, with an optional copy behavior. It distinguishes from rotate/scale/mirror by naming 'Translate ... by a vector,' but it does not explicitly differentiate it from sibling tools like rhino_move_objects_to_layer or rhino_cmd_move.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Among a very large sibling set of transform and move tools, the description leaves selection entirely to inference and does not explain when copy mode should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_move_objects_to_layerA
Move currently selected objects to the specified layer.
Args:
layer_name: Target layer name.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. The description only says 'Move', which implies mutation, but it does not clarify whether the target layer must already exist, whether the layer is created automatically, what happens with no selection, or whether the operation is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the main action, and includes a clean Args section. Every word earns its place, and there is no unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, but behavioral context is missing: what happens if the layer does not exist, whether object selection is a hard prerequisite, and how errors are reported are not addressed. This is noticeable for a mutating tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for layer_name, and the description adds only 'Target layer name.' This is a minimal clarification that essentially restates the parameter name, but because it is a single, self-explanatory string parameter, the basic semantic guidance is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact action ('Move currently selected objects') and the destination ('to the specified layer'). The phrase 'currently selected' clearly distinguishes this from tools that take explicit object IDs, such as rhino_object_move_to_layer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when the tool should be used: when objects are currently selected and need to be moved to a specified layer. It does not explicitly name alternatives or say 'use this instead of X', but the precondition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_move_uvnC
Enter MoveUVN mode to move control points along U, V, N directions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'Enter MoveUVN mode' without disclosing side effects, whether it toggles a state, or how it interacts with existing selections. No behavioral details are provided, and there are no annotations to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the core action. It is appropriately sized for the tool's simplicity, though it could be more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks crucial context such as what 'MoveUVN mode' is, how the mode is entered, what the user needs to pre-select, or what the expected outcome is. It is too sparse for an agent to use 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?
There are no parameters in the schema, so the description adds no parameter-specific information. This matches the baseline for high schema coverage (vacuously 100%) with no parameter details in 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?
The description states a clear action (moving control points along U, V, N directions) but uses the jargon 'MoveUVN mode' without defining what that entails. It gives a basic purpose but lacks specificity about the exact behavior or scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. There is no mention of context, prerequisites, or conditions that would differentiate it from other control-point editing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_multi_pipeA
Create a multi-pipe from selected curves.
Args:
controller: RhinoController instance.
radius: Pipe radius at each curve.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly conveys that the tool creates a multi-pipe from selected curves and that radius affects each curve. It does not disclose units, whether original curves are modified, or behavior with zero or multiple selections, making the transparency adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the action, and uses a clean Args block that is easy to scan. The controller line is unnecessary and not reflected in the schema, but the overall text remains concise and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema, the description is mostly usable: an agent understands to create pipes from the current selection with a given radius. It lacks explicit notes on selection prerequisites, radius units, and alternatives, and with no annotations those gaps carry more weight.
Complex tools with many parameters or behaviors need more documentation. Simple 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 radius as 'Pipe radius at each curve,' but it omits default, units, and valid range. It also lists a 'controller' argument that does not appear in the input schema, which introduces a mismatch and weakens parameter clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action—'Create a multi-pipe'—and identifies the source geometry as 'selected curves,' making the tool's core purpose clear. It does not explicitly distinguish itself from sibling tools like rhino_pipe_from_curve or rhino_tube, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear precondition: curves must already be selected in Rhino, since no curve parameter exists in the schema. It also identifies radius as the adjustable setting. However, it does not mention alternatives or state when to prefer multi_pipe over pipe_from_curve or tube, so some routing 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.
rhino_named_viewsB
Manage named views: list, save, restore, or delete.
Args:
controller: RhinoController instance.
action: One of 'list', 'save', 'restore', 'delete'.
view_name: Name of the view (required for save/restore/delete).
Returns:
Dict with command result or list of named views.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list | |
| view_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full behavioral disclosure burden. It reveals the four action types, notes that view_name is required for save/restore/delete, and describes the return shape. However, it omits the default action (list), does not warn that 'delete' is destructive, and does not clarify whether 'save' creates or overwrites. The mention of a controller parameter not present in the schema adds ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the purpose, and uses a standard Args/Returns structure. Every sentence earns its place; no padding or repetition. It is appropriately sized for a two-parameter dispatcher tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with no annotations and minimal schema, the description covers the essential actions and parameter semantics. Yet it leaves gaps: the default action when action is omitted, error or validation behavior, and the controller parameter's provenance. These omissions could cause an agent to misinvoke the tool, though the core interface is understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters, and it does so meaningfully: action's allowed values are listed, and view_name's conditional requirement is stated. It also introduces the controller parameter, though without full clarity on its role. This compensates well for the otherwise bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manage named views' and enumerates the four operations (list, save, restore, delete), making the tool's purpose concrete. It distinguishes itself from single-purpose siblings like rhino_named_view_save by covering all management actions in one dispatcher. The verb 'manage' is slightly generic, but the action list resolves ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives such as rhino_named_view_save or rhino_view_set. It does not mention prerequisites, context, or when not to use it. The usage must be inferred entirely from the action list, leaving the agent without explicit routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_named_view_saveB
Save the current camera as a named view.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already signals mutation, and the description reinforces this by saying 'save.' It adds some context by specifying that the source is the current camera, but it does not disclose potential side effects like overwriting an existing named view with the same name. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise, front-loaded sentence with no filler. It efficiently communicates the core action and source without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple save operation and an output schema exists to describe return values. However, it omits potentially important behavior such as what happens if the named view already exists and does not clarify how doc_id can target a non-active document, leaving some gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explicitly mention parameters, but the required 'name' is inferable from 'named view.' The optional doc_id parameter is not addressed, though the schema provides a description for it. With schema description coverage at 0%, the description only partially compensates for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Save' with the resource 'current camera as a named view,' clearly stating what the tool does. It is consistent with the tool name and title, but it does not explicitly differentiate it from sibling view-related tools such as rhino_named_views or rhino_view_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like rhino_named_views, rhino_view_set, or rhino_view_capture_to_file. It only states the action, leaving the agent to infer the appropriate context and prerequisites such as having an active viewport.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_network_srfA
Build a surface through a network of intersecting curves.
Pre-select the network curves before calling.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It adds a useful precondition (pre-selection) and specifies the return shape ('status' and 'command' keys), but it does not explain side effects, failure behavior, or what 'command' means operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: the purpose, the required pre-selection, and the return contract are each stated in one concise line. There is 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 zero-parameter tool with an output schema, the description covers the essential invocation requirement and return shape. However, it leaves ambiguity about how the returned 'command' relates to execution, and it does not help an agent choose between this and similar surface creation tools like rhino_network_surface or rhino_edge_srf.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, and the rubric assigns a baseline of 4 in that case. The description still adds value by mentioning the controller parameter and its type, even though that parameter is not reflected in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Build') and resource ('surface through a network of intersecting curves'), making the core action clear. It does not explicitly distinguish itself from the sibling tool rhino_network_surface, so it misses the top score for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the key precondition: 'Pre-select the network curves before calling.' This provides actionable context for when and how to invoke the tool, though it does not discuss alternatives or explicitly say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_network_surfaceB
Build a surface from a network of crossing curves.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate readOnlyHint=false, and the description's 'Build a surface' aligns with that by signaling a document-modifying creation operation. However, the description adds no behavioral detail beyond the annotation and the operation itself: it does not mention whether input curves remain unchanged, how tolerances are handled, or what happens on failure. With annotations already covering the read-only distinction, the description contributes little behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It communicates the tool's core purpose efficiently and reads naturally. Every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally viable: it names the operation and its distinguishing input type, and the output schema likely covers return values. However, for a surface-creation tool with multiple sibling alternatives and a required U/V curve structure, it leaves gaps around curve-direction semantics, usage prerequisites, and comparison to similar tools. Overall, it is adequate but noticeably incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to explain parameter roles, but it only says 'network of crossing curves.' It does not clarify that u_curve_ids and v_curve_ids should be the two crossing sets of curves, nor does it explain the optional name/layer/doc_id parameters. The schema's property titles and minItems provide partial structure, but the description fails to add meaningful guidance beyond them.
Input schemas describe structure but not intent. Descriptions should explain 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 operation ('Build a surface') and a distinct input condition ('network of crossing curves'). This clearly differentiates it from siblings like rhino_loft, rhino_patch, and rhino_sweep1/2, which use different curve arrangements. An agent can identify this as the Network Surface operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'network of crossing curves' implies the use case: when two sets of curves cross each other in a grid-like arrangement. However, the description provides no explicit guidance about when not to use it or which alternative surface-creation tool to prefer, such as loft, sweep, or patch. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_new_documentB
Create a new Rhino document, optionally from a template.
Args:
controller: RhinoController instance.
template: Path to a .3dm template file. If empty, opens a blank document.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| template | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral effects itself. It does not mention that creating a new document changes the active document context or that unsaved work may be at risk. The only added behavioral detail is that it returns a dict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main action is front-loaded and the template explanation is compact. The extra controller line and vague Returns statement add some noise, but the overall structure is still concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a document-level tool with no annotations, the description is under-specified: it does not warn about losing unsaved work, clarify how the active document is affected, or distinguish when to use this instead of rhino_open. The output schema may cover the return value, but the missing side-effect context is significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds real meaning for the template parameter: it specifies a .3dm path and that an empty value creates a blank document. However, it also lists a 'controller' argument that is absent from the input schema, which is confusing and undermines the parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: 'Create a new Rhino document'. The optional template clause adds useful scope, and 'new' distinguishes it from sibling tools like rhino_open and rhino_open_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use this when a new blank or template-based document is needed. However, there is no explicit guidance on when not to use it or how it relates to alternatives like rhino_open, rhino_revert, or rhino_document_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_nurbs_curveB
Add a NURBS curve from a control polygon.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, and the 'Add' verb is consistent with that (no contradiction). The description adds the control-polygon construction trait, which is genuinely informative, but it never states that the curve approximates rather than passes through those points, nor anything about the target document or object placement.
Agents need to know what a tool does to the 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 eight-word sentence front-loaded with the verb 'Add'; no wasted words. It is appropriately sized for a simple creation tool, though it could still accommodate a sibling note without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the input schema documents all parameters well. Missing from the definition is the key usage disambiguation against rhino_interpolate_curve and the near-vs-through control point nuance, which an agent would need to choose and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the top-level parameter ('args') has no description in the schema (0% coverage signal), every nested property—degree, control_points ('Control polygon vertices.'), layer, doc_id—carries a meaningful description. The description's 'control polygon' phrasing is consistent with the schema but adds no new parameter meaning beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Add a NURBS curve from a control polygon') and the title reinforces it ('Add NURBS Curve from Control Points'). 'Control polygon' differentiates it from interpolation-based curve creation among the many siblings, though it does not explicitly name the closest alternative, rhino_interpolate_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. Given a large sibling family that includes rhino_interpolate_curve, rhino_freeform_curve, and rhino_rebuild_curve, the description leaves the agent to infer when control-polygon NURBS creation is the right choice versus interpolation or rebuilding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_object_deleteCDestructive
Delete the given objects from the document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint=true and readOnlyHint=false already convey that this mutates and destroys, so the description adds no new behavioral context. It does not disclose permanence, whether the operation can be undone via rhino_undo, or the 500-object limit. No contradiction with annotations, but no added value beyond them either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the verb front-loaded and no wasted words. It could be slightly longer to carry more semantic value, but as written it is appropriately compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with an output schema and annotations that already flag the destructive behavior, the description is minimally adequate. However, it omits the active-document targeting behavior of doc_id and relies entirely on the schema to convey that objects are addressed by ID, which an agent must infer from the parameter name.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries the burden of explaining parameters, but it only loosely maps 'given objects' to object_ids. It does not explain the object_ids format, the doc_id default of 'active', the 1-500 item constraint, or the required nature of object_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 states a specific verb ('Delete') and resource ('objects from the document'), making the core action clear. The phrase 'given objects' implies objects are explicitly supplied by ID, which distinguishes it in spirit from the sibling rhino_delete_selected, though it does not name that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like rhino_delete_selected or rhino_object_move_to_layer. The description provides no when-to-use context, no exclusions, and no mention of preconditions such as object_ids being required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_object_infoARead-only
Get detailed info about a single object (geometry type, layer, bbox, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation and the word 'Get' strongly imply that the tool has no side effects. The description does not contradict this, though it does not explicitly state that the object is not modified. Since the annotation already provides the safety signal, the missing explicit statement is not a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundant words or unnecessary details. It clearly communicates the core functionality in a concise manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for basic understanding of the tool's purpose, but it omits details about the returned information structure, possible error conditions, and how this tool differs from similarly named sibling tools. Given the simple single-object nature, the description is adequate but not fully complete in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description adds little about parameter semantics. While the schema shows a default for doc_id and an object_id parameter, the description does not explain how object_id is specified or how it interacts with doc_id. The object_id parameter itself lacks a descriptive explanation, and the description's phrase 'single object' only partially covers 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 ('Get') and a clear resource ('detailed info about a single object'), with concrete examples of the kind of information returned. This leaves no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given for when to use this tool versus alternatives such as rhino_get_object_info or rhino_object_properties_dialog. The description does not clarify selection methods, required identifiers, or typical usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_object_move_to_layerB
Reassign one or more objects to a different layer (creating it if absent).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already signals mutation, so the description does not need to restate it. The description adds one useful non-obvious behavior: the target layer is created if absent. However, it does not disclose other relevant behaviors such as whether objects are removed from their previous layer, whether hidden/locked objects are affected, whether the layer must be visible, or what the return value contains. The added context is limited but present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence, front-loads the main action ('Reassign objects to layer'), and includes a valuable parenthetical side-effect. It is not bloated, though it could have used the brevity to also mention the tool's relation to near-identical siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 minimal params (1 wrapper arg), an output schema, and readOnlyHint=false, the description covers the core operation but misses critical disambiguation from the near-duplicate siblings rhino_move_objects_to_layer and rhino_set_object_layer. It also does not explain the return value or whether object_ids refers to IDs obtained from a selector. It is minimally viable for a simple mutation but not complete in this highly crowded tool list.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries the responsibility of explaining parameters, but it names neither 'object_ids' nor 'layer' in the description. The phrase 'one or more objects' and 'a different layer' loosely map to the two required parameters, but the agent gets no explicit parameter-level semantics, no mention of doc_id, and no clarification of the object_ids format. Existing schema descriptions only cover doc_id, not the main parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Reassign') and clearly identifies the resource ('one or more objects') and the target ('a different layer'), with an added side-effect note ('creating it if absent'). It is clear what the tool does, though it does not explicitly differentiate itself from the sibling rhino_move_objects_to_layer or rhino_set_object_layer, which have nearly the same name/function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the highly similar siblings rhino_move_objects_to_layer and rhino_set_object_layer. The description implies batch object-to-layer reassignment, but it does not state whether this replaces those tools, whether the layer must already exist (only says 'creating it if absent'), or which contexts it is preferred in.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_object_properties_dialogB
Open the Object Properties panel for the selected object.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing side effects and prerequisites. It only says the panel is opened and does not explain behavior when no object is selected, whether the panel is interactive, or whether any document state changes. There is no contradiction with annotations, but the disclosure is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant wording. It conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so the description does not need to explain return values. However, it leaves open questions about selection prerequisites and no-op behavior, and it offers no comparison to similar inspection tools, leaving the definition minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty, so there are no parameter semantics for the description to clarify. A baseline of 4 is appropriate since nothing is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Open') and the target resource ('Object Properties panel for the selected object'), so an agent can understand what the tool does. It does not explicitly call out a sibling or differentiate from tools like rhino_object_info, but the panel-specific wording provides adequate 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?
There is no guidance about when to use this tool versus alternative inspection/property tools, nor about prerequisites such as whether an object must be selected. The phrase 'for the selected object' only weakly implies a selection requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_object_quantityBRead-only
Per-object measurement table — one row per object_id with the requested fields.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint: true annotation already covers the safety profile, and the description adds the output-shape behavior (one row per object_id). It doesn't disclose edge-case behavior such as handling of missing object_ids or empty fields arrays, but for a read-only query with an output schema present, this is acceptable.
Agents need to know what a tool does to the 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 zero filler. It states the core concept first and the output structure second. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query tool with readOnlyHint set and an output schema available, the description covers the essential calling contract. The main missing piece is the vocabulary of valid field values, but the schema's own description ('Per-object measurements to include') plus sibling measurement tools partially mitigate this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It does add meaning by tying object_ids to output rows and fields to the requested columns, which maps the parameters to observable behavior. However, it never documents what valid field values are (e.g., area, volume, length) or what happens when fields is omitted, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific output concept — a per-object measurement table with one row per object_id and the requested fields. This is specific enough to distinguish it from single-object tools like rhino_object_info and from single-measurement tools like rhino_area or rhino_volume, though it never names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. With hundreds of siblings including rhino_area, rhino_volume, rhino_object_info, and rhino_count_objects, the description provides no selection criteria, exclusions, or alternative routing — the agent must infer when a per-object measurement table is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_object_selectB
Select objects by ID and/or attribute filters.
Filter fields combine with AND semantics. ``object_ids`` short-circuits
the other filters when provided. Standalone mode marks matches with the
``rhino_mcp_selected`` user-string (since rhino3dm has no selection
state); bridge mode delegates to Rhino's native selection.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, the description discloses critical behavior: AND-combination of filters, object_ids short-circuiting, and the key implementation split between standalone mode (tagging with the rhino_mcp_selected user-string) and bridge mode (native Rhino selection). This tells the agent that selections in standalone mode are not native Rhino selection state, which is exactly the kind of non-obvious behavioral context annotations cannot convey. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the core purpose front-loaded, followed by filter semantics and mode behavior. The parenthetical explanation is slightly verbose and the mode details are partially duplicated in the nested schema description, but every sentence earns its place for agent consumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers mode behavior and filter semantics well. It omits the default deselect_first=true side effect (existing selection is cleared) and provides no routing guidance against the large family of rhino_sel_by_* siblings, leaving meaningful gaps for an agent deciding to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds real parameter-interaction semantics — AND combination and object_ids short-circuiting — that the input schema does not state. However, the stated schema coverage is 0% (top-level args wrapper), and while the nested $def actually documents all eight properties well, the description itself does not enumerate or clarify individual filter parameters or their constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Select objects by ID and/or attribute filters" states a specific verb, resource, and mechanism, making the tool's purpose immediately clear. It functionally distinguishes itself from single-criterion siblings like rhino_sel_by_color or rhino_sel_by_name by covering ID plus multiple attribute filters, though it never names these 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?
The description explains filter semantics and implementation modes but gives no guidance on when to choose this tool over the many selection siblings (rhino_sel_by_type, rhino_sel_by_name, rhino_sel_layer, etc.). No exclusions, prerequisites, or alternative-routing hints are provided, so the agent must infer when this generic selection tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_offset_curveA
Offset the currently selected curve by a specified distance.
The curve must be pre-selected before calling this function.
Args:
controller: RhinoController instance.
distance: Perpendicular offset distance.
through_point: Optional 'x,y,z' string to offset through a point
instead of using *distance*.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No | ||
| through_point | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses the core operation, the selection precondition, the through-point alternative, and the return dict keys. However, it does not state whether the original curve is kept or deleted, what happens when no curve is selected, or error/status behavior beyond the bare keys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well organized with Args and Returns sections. Every sentence contributes meaning, though documenting 'controller' without it appearing in the schema is a small structural inconsistency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with no annotations, the description covers the operation, prerequisites, parameter semantics, and return structure. Still, it lacks failure behavior, unit expectations, and guidance about selecting this tool over related offset/modify alternatives, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains distance as 'Perpendicular offset distance' and through_point as an optional 'x,y,z' string alternative, which adds real meaning beyond the schema. The mention of a controller parameter not present in the input schema creates minor confusion.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Offset the currently selected curve by a specified distance.' The 'curve' resource clearly distinguishes it from sibling tools like rhino_offset_surface or rhino_offset_mesh, and mentions the selection prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear and important usage context: the curve must be pre-selected before calling. It does not, however, explicitly compare with alternatives such as rhino_offset_surface or rhino_modify_offset_curve, 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.
rhino_offset_meshB
Offset selected mesh faces by a given distance.
Args:
controller: RhinoController instance.
distance: Offset distance (along face normals).
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds the useful detail that offsetting happens 'along face normals,' but it does not state whether the operation creates a new mesh, modifies the existing one, requires a selection, or how positive/negative distances behave. Important side-effect information is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core operation stated in the first sentence. The Args block is mostly useful, though the controller line adds slight noise since that parameter is not present in the schema. Overall, it is 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?
For a geometry-mutating tool with no annotations and no schema-level descriptions, this is underspecified. An agent cannot tell whether face selection is mandatory, how to perform the selection, what the resulting object is, or what failure conditions look like. The presence of an output schema reduces the need to document return values, but the operational gaps remain significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a bare 'distance' integer with a default, so the description adds meaning by clarifying that the offset is along face normals. However, it does not explain units, sign convention, or the fact that the docstring mentions a 'controller' argument that is absent from the input schema, which may confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Offset selected mesh faces by a given distance.' This makes the tool's purpose immediately obvious and distinguishes it from sibling offset tools like rhino_offset_surface, rhino_offset_curve, and rhino_offset_subd.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected mesh faces' implies that the user must have a selection before calling, but the description gives no explicit when-to-use guidance and does not mention alternatives or exclusion conditions. An agent must infer the usage context from the tool name and sibling list rather than from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_offset_srfA
Offset a surface by a specified distance, optionally creating a solid.
Pre-select the surface before calling.
Args:
controller: RhinoController instance.
distance: Offset distance (positive = outward along normals).
solid: If True, caps the sides to create a closed solid.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| solid | No | ||
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. It usefully explains that distance is positive outward along normals, solid caps sides, and the return is a status/command dict. It does not disclose whether the original surface is preserved, whether the command can fail, or what happens if no surface is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the main purpose stated first and separate Args/Returns sections. It is mostly efficient, though 'optionally creating a solid' is somewhat repeated in the solid parameter explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with an output schema and no annotations, the description covers the operation, the key prerequisite, parameter semantics, and the return shape. It is slightly incomplete because it does not explain how it differs from the similarly named rhino_offset_surface sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining both parameters: distance's positive direction and solid's capping behavior. It also mentions a controller argument that is not in the schema, which is a minor mismatch but does not obscure the meaning of the two actual schema parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific operation and resource: 'Offset a surface by a specified distance, optionally creating a solid.' This distinguishes it from curve, mesh, and SubD offset tools, though it does not explicitly differentiate it from the near-duplicate sibling rhino_offset_surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 one important prerequisite: 'Pre-select the surface before calling.' However, it does not explain when to use this tool versus rhino_offset_surface or rhino_cmd_offset_surface, nor does it state any exclusions or alternative selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_offset_subdB
Offset a SubD object by a given distance, optionally creating a solid.
Args:
controller: RhinoController instance.
distance: Offset distance.
solid: Create a solid (closed) offset.
| Name | Required | Description | Default |
|---|---|---|---|
| solid | No | ||
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It does not state whether the offset modifies the original SubD in place or creates a new object, what happens if no SubD is selected, or whether the solid option changes the geometry topology. The Args note that solid creates a 'closed' offset adds a little context but the mutation behavior is undisclosed.
Agents need to know what a tool does to the 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 main description is a single efficient, front-loaded sentence that conveys the core operation immediately. The Args block is compact, though it slightly duplicates schema information and includes a 'controller' parameter not present in the input schema, which adds minor confusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be explained. However, for a geometry-modifying tool with no annotations, the description omits critical context: how the target SubD is identified (selection state via the controller), whether the original object is preserved, and what distance units apply. An agent could not safely invoke this tool without this information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args block does explain both parameters: distance as offset distance and solid as creating a solid (closed) offset, which adds meaning beyond the bare schema titles. However, the explanations lack depth (no units for distance, no elaboration on the closed-offset behavior), so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (offset) and resource (SubD object), and clearly differentiates from sibling tools like rhino_offset_surface, rhino_offset_mesh, and rhino_offset_curve by specifying the SubD type. The optional solid creation is also mentioned, giving an agent a precise understanding of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. The description does not state the prerequisite that a SubD object must be selected, nor does it contrast with alternative offset tools (e.g., use rhino_offset_surface for NURBS surfaces, rhino_offset_mesh for meshes). Usage context is only implied by the name and operation type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_offset_surfaceB
Offset a surface by distance along its normal.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the description adds the useful directional detail 'along its normal'. However, it does not disclose whether the operation creates a new surface or modifies the existing one, nor how tolerance affects the result, which is important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is efficient but perhaps too terse, omitting details that would make the tool more usable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutating operation with only readOnlyHint=false, the description lacks key context: whether a new object is created, sign/direction conventions for negative distance, and how it differs from the similar sibling rhino_offset_srf. The output schema helps, but important gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly maps 'distance' and 'surface' to the required parameters distance and surface_id. But it adds no meaning for tolerance, name, layer, or doc_id, and with 0% schema description coverage, the optional but relevant tolerance parameter remains 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?
The description clearly states the operation (offset), the target resource (surface), and the method (by distance along its normal). This distinguishes it from sibling tools like rhino_offset_curve or rhino_offset_mesh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as rhino_offset_srf or rhino_offset_mesh. There are no prerequisites, exclusions, or context about when this is the appropriate surface-offset tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_openC
Open a .3dm file and bind it to a doc_id.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the description carries some burden for explaining side effects. It mentions binding to a doc_id but does not disclose whether opening replaces the current document, whether unsaved changes could be lost, or what happens if the file is invalid or already bound.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler words. Every word contributes to the core action and binding 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?
For an operation that can mutate the active Rhino document state, the description is too thin. It fails to explain the doc_id lifecycle, potential replacement of the current document, or how this tool differs from rhino_open_file. The presence of an output schema helps with return values, but not with these contextual risks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description names the file type (.3dm) and the doc_id binding concept, which partially aligns with the schema parameters. However, it does not explain the required path parameter or the auto-generation of doc_id beyond what the input schema already states. The schema descriptions do most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Open a .3dm file') and the binding side effect ('bind it to a doc_id'). It identifies the specific resource type and the doc_id association, though it does not distinguish itself from the similarly named sibling rhino_open_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_open_file, rhino_import, or gh_open_file. There are no stated conditions, prerequisites, or exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_open_fileC
Open an existing Rhino file.
Args:
controller: RhinoController instance.
file_path: Absolute path to the .3dm file to open.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that opening a file may replace the current document, discard unsaved changes, or fail on missing/invalid paths. The return is only vaguely described as a 'Dict with command result'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with a clear opening statement and labeled Args/Returns sections. The stray controller parameter adds minor noise but does not significantly harm readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter operation, the description covers the purpose, the key parameter, and the return type, and an output schema exists. However, it lacks alternative routing and side-effect disclosure, so it is 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 description adds useful meaning for file_path by specifying it must be an absolute path to a .3dm file, which compensates for the 0% schema coverage. However, it also lists a 'controller' argument that is not present in the input schema, potentially misleading the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Open') and resource ('existing Rhino file'), and identifies the .3dm extension. It is clear in isolation, though it does not differentiate from sibling tools like rhino_open or gh_open_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as rhino_open, gh_open_file, rhino_import, or rhino_new_document. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_orientA
Orient objects from one plane to another (PlaneToPlane transform).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only indicate readOnlyHint=false, and the description adds the core behavioral fact that this is a PlaneToPlane transform, which is useful but not rich. It does not disclose that make_copy defaults to false (meaning objects are transformed in place) or describe any side effects, limits, or coordinate-system expectations, leaving the agent to infer those from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler, and the action is front-loaded. It earns its place, though the extreme brevity leaves it with little structure or illustrative detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values do not need to be described, and the core plane-to-plane operation is clear. However, the description omits important call context such as the in-place-versus-copy behavior (make_copy), doc_id handling, and the fact that object_ids must identify the source objects, so an agent must dig into the schema to call the tool safely and intentionally.
Complex tools with many parameters or behaviors need more documentation. Simple 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 should compensate, but it only loosely maps to from_plane/to_plane and object_ids. It adds no meaning for make_copy, doc_id, or the plane axis requirements, so the agent must rely heavily on field names and the nested PlaneModel definitions rather than on the tool 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 uses a specific action ('orient'), a target resource ('objects'), and a precise scope: 'from one plane to another (PlaneToPlane transform)'. This clearly differentiates it from related orient tools such as rhino_orient_3pt or rhino_orient_on_crv by naming the plane-to-plane method, even though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from one plane to another' provides a clear usage context: use this tool when the source and destination planes are known and you need a plane-to-plane reorientation. However, it does not explicitly mention when not to use it or name alternatives such as rhino_orient_3pt or rhino_orient_on_crv, 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.
rhino_orient_3ptB
Orient selected objects using three reference points (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'interactive' and a 'command result' dict, but does not explain whether objects are moved or copied, how the three points are interpreted, whether selection is required beforehand, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is concise and front-loaded: 'Orient selected objects using three reference points (interactive).' The Args and Returns boilerplate is minimal but adds little value, especially since there are no schema parameters and the return type is generic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is underspecified for a transformation tool with no annotations. An agent cannot determine the roles of the three reference points, whether the operation is destructive or creates copies, or what interactive steps are expected, and there is no differentiation from the closely related rhino_orient sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero schema parameters, and schema description coverage is 100%, so there is little for the description to add. The mention of a RhinoController instance in the docstring is a minor extra that is not part of the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the verb ('orient'), the target ('selected objects'), and the method ('using three reference points'), so an agent can understand the core purpose. However, it does not distinguish itself from sibling tools like rhino_orient or rhino_orient_on_crv/rhino_orient_on_srf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context: it is for orienting selected objects via three reference points and is explicitly 'interactive'. However, it provides no when-not-to-use guidance or comparison with alternative orient tools such as rhino_orient, rhino_orient_on_crv, or rhino_orient_on_srf.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_orient_on_crvC
Orient selected objects along a curve (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not state whether the operation moves or copies objects, whether it is destructive, how orientation is computed, or what 'interactive' means in practice. This is a significant transparency gap for a transformation 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 main sentence is front-loaded and concise. However, the Args and Returns lines are generic boilerplate ('Dict with command result') that add no decision value, so the description is not as tight as it could 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?
Even with an output schema and no parameters, the description does not explain what the user must do during interaction, whether original geometry is preserved or modified, or how this differs from closely related orient/flow/array tools. The operation remains opaque beyond its basic label.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no user parameters to explain, giving a baseline of 4. The docstring's 'controller: RhinoController instance' line is boilerplate and not reflected in the schema, but it does not describe a real callable parameter and therefore neither clarifies nor severely harms parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: 'Orient selected objects along a curve', which clearly identifies what the tool does. The parenthetical 'interactive' adds workflow context, and 'along a curve' distinguishes it from surface-oriented siblings, though it does not name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is given relative to similar tools like rhino_orient_on_srf, rhino_flow_along_curve, or rhino_replicate_along_curve. 'Interactive' hints at a manual workflow, but prerequisites such as pre-selecting objects or picking a curve are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_orient_on_srfB
Orient selected objects on a surface (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior on its own. It only mentions that the operation is 'interactive' and that it returns a dict with command results. It does not state that the tool modifies object transforms, how selection works, what user interaction is required, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, with the core purpose front-loaded in the first sentence. The Args/Returns sections are minimal and mostly redundant, but they do not add significant noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is an interactive transform tool with no annotations, the description is too thin. It omits prerequisites, what interaction the user must perform, and whether the operation mutates selected objects. The presence of an output schema reduces the need to describe return values, but key behavioral context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is little parameter semantics to document. The description mentions a 'controller: RhinoController instance' arg, which is not reflected in the schema, but since there are no actual parameters, the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Orient selected objects on a surface.' The parenthetical '(interactive)' adds a distinguishing nuance, and the surface target is clear. However, it does not explicitly differentiate from similar siblings like rhino_orient_on_crv or rhino_orient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_orient, rhino_orient_on_crv, or other transform tools. The '(interactive)' hint is the only contextual clue, and no exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_origin_setA
Set the model base point.
``mode='reference'`` stores the point as metadata only — useful for
geo-referencing without disturbing existing geometry. ``mode='translate'``
shifts every object so the supplied point becomes the new (0,0,0).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the important behavioral split: reference mode stores metadata only, while translate mode shifts every object so the point becomes the new (0,0,0). Because readOnlyHint is false, this behavioral detail matters and is not merely repeating the annotation. It does not mention undoability or doc-level side effects, but the core side effects are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with each sentence adding a distinct piece of information. The highlighted mode literals make the two behaviors scannable, and there is no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema, the description covers the main agent-relevant context: what the tool does, the two modes, and the key behavioral consequence of each. It does not explain document targeting or prerequisites, but those are minor given the schema documents doc_id and default values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for the mode parameter by explaining its consequences and a use case (geo-referencing). However, with the context signal reporting 0% schema description coverage, the description does not compensate for the `args` wrapper, `doc_id`, or the coordinate-structure expectations; it relies on the schema for those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set the model base point.' It then distinguishes two modes by their effect, so an agent understands exactly what operation is offered. It is not a tautology and is clearly distinct from sibling tools like rhino_move or rhino_set_cplane.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mode guidance gives concrete selection criteria: use 'reference' for geo-referencing without moving geometry, and 'translate' when the supplied point should become the new origin. It does not explicitly name alternative tools or say when not to use the tool, but for this operation the mode-level guidance is the actionable decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_pack_texturesA
Pack all external textures into the document for portability.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys the primary action (packing textures) and its intended benefit (portability), but does not disclose potential side effects such as file size increase, irreversible embedding, or changes to external references. Without annotations, this lack of detail leaves some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's function without extraneous detail. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters and the description fully explains its purpose, the description is complete for an agent to decide whether to invoke it. Any return value is not critical to understanding the action, and the output schema exists but does not require explanation per the rubric.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so there is nothing for the description to clarify about inputs. The description is fully adequate in this regard.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: packing external textures into the document for portability. It uses a specific verb and resource, making its function immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or contexts where it is appropriate. Since there are no annotations addressing usage, the description leaves the agent without clear direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_panC
Pan the active viewport.
Args:
dx: Horizontal pan amount.
dy: Vertical pan amount.
| Name | Required | Description | Default |
|---|---|---|---|
| dx | No | ||
| dy | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It only says 'Pan the active viewport' without disclosing units, coordinate system, whether the pan is relative, side effects, or behavior when no viewport is active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with no redundant filler. The Args section is minimal but directly labels the two parameters, making it efficient even if under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the tool description omits critical invocation context: units for dx/dy and whether the pan is relative to the current view. An agent cannot reliably translate a user request like 'pan right 10 units' into correct numeric arguments.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It labels dx and dy as 'Horizontal pan amount' and 'Vertical pan amount', which adds minimal direction meaning, but it does not define units, sign conventions, or what an amount represents (pixels, model units, percentage).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Pan') and a specific resource ('the active viewport'). This clearly sets it apart from siblings like rhino_zoom_extent or rhino_view_set, as no sibling targets panning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives, no mention of viewport prerequisites, and no exclusions. The intended use is only implied by the name and first line.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_panel_curvature_classifyBRead-only
Classify each UxV panel by curvature class (planar / single_* / synclastic / anticlastic).
Standalone uses a 4-corner normal heuristic (no full Gaussian K).
Bridge mode reports true Gaussian + mean curvature per cell.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety, and the description adds genuinely useful behavior beyond it: standalone mode uses a 4-corner normal heuristic without full Gaussian K, while bridge mode reports true Gaussian and mean curvature. This caveat is especially valuable because it warns the agent not to over-trust standalone 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?
The description is compact and information-dense: purpose, class taxonomy, and mode-specific behavior are all covered in a few lines. The verb and resource are front-loaded, and there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover the safety profile, an output schema exists, and the description covers purpose, classification categories, and the key algorithmic difference between modes. The only notable gap is that it does not explain what activates bridge mode, but this is minor for a read-only classifier with a structured input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given the context signal of 0% schema description coverage, the tool description was expected to compensate for parameter semantics, but it does not mention count_u, count_v, planar_tolerance, single_curve_tolerance, or surface_id. Some schema fields have built-in descriptions and names are partially self-explanatory, but the description itself adds no parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('classify'), a target ('each UxV panel'), and the expected output classes (planar / single_* / synclastic / anticlastic). It is clear and distinguishable in intent from generic curvature tools, though it does not explicitly name any sibling 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?
The description explains standalone vs bridge mode behavior, but it gives no guidance on when to prefer this tool over alternatives such as rhino_panel_planarity, rhino_curvature_analysis, or rhino_surface_curvature_at. No when-to-use or when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_panel_framesCRead-only
Generate oriented frames (planes) at panel centres for construction.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint: true indicates the tool should not modify the document, but the description 'Generate oriented frames' implies creation of new geometry, which is a potential contradiction. The description does not clarify whether it creates objects or returns 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 a single concise sentence, which is efficient and easy to parse. However, it sacrifices detail for brevity, providing only a high-level purpose without structure or elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks essential context: it does not explain what the output is (e.g., planes as geometry or data), whether it modifies the model, what inputs are needed, or how it relates to other panel tools. This makes it incomplete for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has parameters (object_id, u_count, v_count, offset) but none are described, and the description makes no mention of them. Schema description coverage is 0%, leaving the agent without any understanding of required 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?
The description clearly states the tool's action ('Generate oriented frames (planes)') and its purpose ('at panel centres for construction'). It is specific enough to distinguish from generic modeling tools, though it could more explicitly reference the input surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus sibling tools like rhino_panel_planarity or rhino_panel_curvature_classify. No alternative tools are mentioned, and no usage conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_panelize_surfaceC
Subdivide a surface into panels (quad, triangle, or diamond).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title, so the description carries the full behavioral burden. It does not disclose whether the original surface is modified, whether new panel objects are created, what happens to layers, or any side effects. 'Subdivide' implies a construction action but leaves the operational consequences unclear.
Agents need to know what a tool does to the 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 clear, front-loaded sentence with no filler. It is appropriately terse, though it could have used the saved space to add usage or behavioral guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no behavioral annotations, an output schema, and a large sibling set containing several panel-related tools, this one-sentence description is incomplete. It lacks side-effect information, input compatibility notes, and differentiation from similar tools. The output schema may cover return values, so that absence is not penalized.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents object_id, u_count, v_count, panel_type, and layer with descriptions. The description's mention of panel types largely repeats the schema's panel_type description, adding no deeper meaning about valid values, constraints, or relationships between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Subdivide a surface into panels') and names the supported panel types (quad, triangle, diamond), making the tool's core purpose clear. However, it does not differentiate this tool from sibling panel-related tools like rhino_uv_grid_panels or rhino_panel_frames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no exclusions. The phrase 'surface' implies the input type, but the description does not help an agent decide between this and other paneling or surface subdivision tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_panel_planarityARead-only
Per-panel planarity report on a UxV grid sampled from a surface.
Each cell's planarity error = distance of the 4th corner from the
plane fitted through the first three. Cells whose error > tolerance
are flagged. The returned ``stats`` block summarises max / mean /
non-planar count for high-level reporting.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation covers the non-mutating nature, and the description adds meaningful behavior: the exact planarity error definition, tolerance-based flagging, and the returned stats block. It does not describe all edge-case behavior, but it goes well beyond the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact at three sentences, front-loads the purpose, and avoids filler. Each sentence contributes either the metric definition, the flagging rule, or the output summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema exists and the operation is read-only, the description covers the core inputs, algorithm, threshold behavior, and summary output. It does not need to re-explain return values; it is complete enough for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies the meaning of the grid and tolerance by describing the UxV sampling and error threshold, but it never names count_u, count_v, surface_id, or doc_id. Since schema coverage is low, the description partially compensates for the parameter semantics but leaves explicit mapping to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: a per-panel planarity report on a UxV grid sampled from a surface. It clearly explains what the tool computes, but it does not contrast itself with closely related analysis tools such as rhino_panel_curvature_classify or rhino_surface_developable_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the intended use (assessing panel planarity and producing a high-level stats summary), but it never states when to choose this tool over alternatives or when not to use it. There are no explicit exclusions or sibling references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_paraboloidA
Create a paraboloid surface in Rhino using the Paraboloid command.
Rhino prompts: focus/apex point -> radius at base -> height.
Args:
controller: RhinoController instance.
x, y, z: Apex (tip) of the paraboloid.
radius: Radius of the open base circle.
height: Height from apex to base.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| height | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states that the tool creates a surface, names the underlying Rhino command, and documents the return dictionary, which is useful. It does not discuss what happens in the active Rhino document, coordinate-system assumptions, or failure behavior, so it is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into short labeled sections (purpose, prompt sequence, args, returns) and contains little filler. The slight redundancy between 'focus/apex point' and 'apex (tip)' and the inclusion of the schema-mismatched controller argument keep it from being a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no annotations and no schema descriptions, the description covers the key inputs and return shape, but it leaves out units, coordinate-system behavior, and the discrepancy with the controller parameter. The output schema mitigates some return-value ambiguity, but the gaps still matter for reliable 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?
With 0% schema description coverage, the description has to explain the parameters; it defines x/y/z as the apex, radius as the base radius, and height as the apex-to-base distance. However, it also lists a 'controller' argument that is absent from the input schema, and it omits units and orientation, which undermines completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a paraboloid surface in Rhino using the Paraboloid command.' Because no sibling tool creates a paraboloid and the command name is explicit, an agent can distinguish this from the other primitive-creation siblings 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 the expected Rhino prompt sequence ('focus/apex point -> radius at base -> height'), which tells the agent how the command consumes inputs. However, it does not explicitly state when to choose this tool over alternatives such as cone, sphere, or cylinder, nor are there prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_patchC
Patch a region defined by boundary curves.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, meaning the tool is not read-only, which aligns with a mutation operation. The description adds little beyond that—it doesn't mention that the tool creates a new surface, whether input curves are preserved, or what happens to the boundary curves. The description is not contradictory but is minimally informative about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence is concise and front-loaded, but it's under-specified. It doesn't earn its place by conveying enough information. It is not verbose, but it misses key usage details that an agent needs to invoke 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?
For a surface-patching tool with no output schema details in the description and no param explanations, the description is inadequate. There is no mention of required curve conditions, how span_count affects the result, or what the tool returns. The description is too thin relative to the complexity of Rhino surface operations and the large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters, but it only mentions 'boundary curves' without mapping to the boundary_curve_ids parameter. It gives no hint about span_count, name, layer, or doc_id. The schema itself has fields with some descriptions (like doc_id) but boundary_curve_ids and span_count lack explanatory text, and the tool description doesn't compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Patch a region defined by boundary curves,' which states the verb and resource, but the term 'patch' is domain-specific and could be confused with other surface-creation operations like rhinocmd_patch or rhino_plane_surface. It lacks detail on what kind of object is created or how it relates to siblings. The title 'Patch Surface' is absent from the description, so there is no explicit statement of the result being a surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like rhino_plane_surface, rhino_loft, rhino_network_surface, or rhino_cmd_patch. It doesn't mention prerequisites such as closed boundary curves or whether the boundary curves must be coplanar. An agent would have to infer usage from the name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_perspective_angleA
Set the perspective viewport camera lens angle.
Args:
angle: Lens angle in degrees (e.g. 45, 60).
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly states the action and the target ('perspective viewport camera lens angle'), but it does not say whether it applies to the active viewport only, whether values are clamped, or whether a perspective viewport is required. This is a simple setter, so the basic behavior is reasonably clear, but some edge behavior is undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the verb and resource, and every sentence adds value. The args note is simple and directly explains the only parameter without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter setter, the description is mostly complete: it names the target, the parameter, units, and examples. It lacks minor but useful context like whether this affects the active viewport or whether it will switch the view to perspective, which is why it does not receive 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 does: it explains that angle is the 'Lens angle in degrees' and gives examples (45, 60), adding meaning beyond the raw integer type and default value. It could add a valid range or clarify constraints, but it is helpful enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Set the perspective viewport camera lens angle.' This clearly identifies what the tool does and its target object. However, it does not explicitly differentiate from siblings like rhino_camera_set or rhino_view_set, 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 guidance is given about when to use this tool versus alternatives. An agent is not told to use this only for lens angle adjustments while using rhino_camera_set for other camera properties, nor are any exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_pipe_from_curveA
Create a pipe solid around a previously created (or selected) curve.
The function first runs *curve_select_cmd* to select the rail curve,
then runs the Pipe command with the given radius and cap style.
Args:
controller: RhinoController instance.
curve_select_cmd: Rhino command used to select the curve before
piping (default: '_SelLast' selects the most
recently created object).
radius: Pipe outer radius.
cap: If True, caps the pipe ends (solid); otherwise
leaves them open.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| cap | No | ||
| radius | No | ||
| curve_select_cmd | No | _SelLast |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 it does disclose meaningful behavior: it runs curve_select_cmd first, then Pipe with the given radius and cap style, and it explains that cap=True yields a solid while False leaves ends open. This is useful, but it omits other behavioral traits an agent might need, such as units for radius, error behavior when no curve exists, or whether the source curve is retained or consumed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well organized: a one-sentence purpose, a short explanation of the execution flow, a compact Args block, and a Returns line. Each section earns its place without redundancy, though the multi-line formatting is slightly heavier than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 moderate-complexity creation tool with an output schema already describing the return dict, the description covers the main workflow, parameters, and the cap behavior. It is reasonably complete for selecting and invoking the tool, with only minor omissions around radius units and failure handling when no curve is available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it defines curve_select_cmd as the selection command with the default explained, radius as the pipe outer radius, and cap as the solid/end-capping toggle. One minor gap is that 'controller' is documented in Args but does not appear in the input schema, which could confuse an agent about what to pass.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a pipe solid around a previously created (or selected) curve.' It clearly states the operation, the input requirement, and the two-stage execution (select curve, run Pipe). This distinguishes it from siblings like rhino_extrude_curve or rhino_tube without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the prerequisite context: a curve must already exist or be selected, and it notes the default _SelLast targets the most recently created object. This effectively tells the agent when to call the tool (after creating a curve). It does not explicitly name alternatives or exclusion conditions, but the sequencing guidance is clear enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_place_gridA
Replicate a source object on a count_x x count_y grid with given spacing.
Returns the new object IDs in row-major (x outer, y inner) order. The
source is preserved; when ``skip_origin`` is True the (0,0) cell is
left untouched and the source itself fills it.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the behavioral burden. It adds genuinely useful context: new object IDs are returned in row-major order, the source is preserved, and skip_origin=True leaves the (0,0) cell to the original source. These details go well beyond the annotation, though it omits edge behaviors like what happens when skip_origin is False beyond the schema's own note.
Agents need to know what a tool does to the 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 core action is front-loaded, followed by return-order and source-preservation semantics. Every clause earns its place; only minor docstring whitespace padding prevents a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameter-heavy creation tool, the description covers the key non-obvious behavior: exact return ordering, source non-destruction, and origin-cell handling, which pairs well with the richly documented schema. It lacks only usage differentiation from array siblings and any note about grid orientation or failure modes, but these are minor given the schema depth.
Complex tools with many parameters or behaviors need more documentation. 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 top-level args parameter has no schema description (0% coverage), but the nested $defs document every property (count_x, spacing_y, base_point, skip_origin, etc.) thoroughly. The description adds semantic context — row-major ordering of returned IDs and source preservation at the origin — which helps interpret results, but it largely restates what the nested schema already conveys for skip_origin.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Replicate a source object on a count_x x count_y grid with given spacing.' This clearly identifies the operation and the grid structure it produces. However, it does not differentiate from closely related siblings like rhino_array_rectangular or rhino_array_on_curve, which an agent might 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?
No guidance is given on when to use this tool versus the many array/replicate siblings (rhino_array_rectangular, rhino_array_linear, rhino_replicate_along_curve, etc.). The description implies usage through its action statement, but provides no exclusions or alternative-routing hints, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_planar_srfA
Fill planar closed curves with a planar surface.
Pre-select the boundary curves before calling.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey side effects. It states that the tool creates a planar surface from selected curves, which implies a non-destructive creation action. However, it does not explicitly mention what happens to the selection, whether the operation is undoable, or any other behavioral details, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It states the purpose in one sentence and the key prerequisite in another, with no redundant information or filler. The return type is also clearly specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough information to understand what the tool does and how to prepare for it, including the return format. It does not mention alternatives or edge cases, but for a straightforward creation command, this is largely sufficient. A small deduction for not explicitly stating when to use this over other surface tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to describe. The mention of 'controller: RhinoController instance' appears to be a standard context object rather than a user-supplied parameter, and since the schema shows no parameters, the description is fully sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Fill), the resource (planar closed curves), and the result (a planar surface). It also specifies a prerequisite ('Pre-select the boundary curves'), which further clarifies the intended use case and distinguishes it from other surface creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a practical prerequisite ('Pre-select the boundary curves before calling') but does not explicitly mention when to use this tool versus alternative surface-creation commands (e.g., rhino_plane_surface or rhino_edge_srf). This leaves the user to infer the appropriate context from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_plane_surfaceB
Add a finite plane (rectangular trim) on the given plane.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false indicates a mutating operation, and the description's 'Add' is consistent with that. The description adds some behavioral detail by specifying a finite rectangular trim rather than an infinite plane, but it does not explain side effects like document object creation, layer assignment behavior, or whether the plane is centered on the origin.
Agents need to know what a tool does to the 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 focused sentence with no filler or repetition. It front-loads the primary action ('Add') and immediately identifies the object type, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a fairly simple creation tool with an output schema present, so the description does not need to explain return values. However, it omits usage guidance, dimension semantics, and any caveats about plane validity or axis orthogonality, leaving an agent with gaps that must be filled by schema 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 needs to compensate for the undocumented parameters. It mentions 'given plane' but does not explain width, height, name, layer, doc_id, or the relationship between the plane axes and the resulting surface. The nested schema has some property descriptions, but the description itself adds minimal parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add a finite plane (rectangular trim)'. The parenthetical clarifies the geometric result, which helps distinguish it from pure curve/subdivision surfaces. It does not explicitly differentiate from sibling tools like rhino_cmd_plane_surface, but the action and resource are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_cmd_plane_surface, rhino_patch, or rhino_subd_plane. There are no context cues, prerequisites, or exclusions provided, so an agent must rely on the tool name and general heuristics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_pointC
Add a single point to the document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds no extra behavioral context, such as side effects on the document, error conditions, or required state. It merely restates the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundant words. It is well-structured and immediately conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is minimal and does not explain expected inputs, return values, or typical usage scenarios. Given the complexity of the nested point structure, the description is too sparse to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description provides no information about the 'point' parameter, its structure, or the optional name, layer, and doc_id. Users must rely solely on the schema field names, which are insufficient for correct usage.
Input schemas describe structure but not intent. Descriptions should explain 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 'Add a single point to the document.' clearly states the tool's function and distinguishes it from related tools like rhino_add_point_cloud by specifying 'single point'. The verb 'Add' and resource 'point' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not mention when to use this tool versus alternatives (e.g., rhino_add_point_cloud, rhino_add_control_point). No conditions or exclusions are provided, leaving the choice to the user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_point_deviationA
Analyse the deviation between point clouds and a reference surface.
Objects must be selected before calling; the command runs interactively.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose important traits: the need for preselected objects and interactive execution. However, it does not explicitly state whether the operation is read-only, whether it modifies the document, or what side effects the interactive session may have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: purpose first, then prerequisites, then args/returns. It contains no filler, though the 'Args' and 'Returns' lines are generic boilerplate that add limited value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description covers the essential operational context: what the tool analyzes, the need for preselected objects, and its interactive nature. It does not explain tolerance settings or output metrics, but the empty input schema and presence of an output schema reduce the burden on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameters requiring documentation; the zero-parameter baseline is 4. The 'Args: controller' line appears to reference a framework-injected controller rather than an agent-supplied parameter, so it does not add meaningful parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Analyse the deviation between point clouds and a reference surface.' This clearly identifies what the tool does and makes it distinguishable from sibling analysis tools. However, it does not explicitly name or contrast itself with sibling alternatives, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit preconditions: 'Objects must be selected before calling' and notes that 'the command runs interactively.' This provides useful when-to-call context, but it does not discuss when to choose this tool over alternative analysis tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_points_offA
Turn off control point display for selected objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly conveys the visual state change and the scope of effect, and 'display' implies no geometric modification. It does not cover edge cases like no selection or error behavior, but for a simple display toggle this is reasonable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler or redundancy. The action, target, and scope are all front-loaded and clearly expressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has no parameters, and an output schema exists, so the description does not need to explain return values. It covers the core behavior well, though it could strengthen completeness by explicitly noting that objects must be selected beforehand and what happens if none are selected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds useful context by indicating that the tool operates on the current selection rather than requiring any parameter 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?
The description states a clear action ('Turn off control point display') and identifies the scope ('selected objects'). It unambiguously names the affected resource and can be distinguished from siblings like rhino_points_on or rhino_remove_control_point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide when-to-use guidance, exclusions, or alternatives. It does not differentiate rhino_points_off from related tools such as rhino_edit_points_off or rhino_points_on, so the agent must rely entirely on the name and general context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_points_onA
Turn on control point display for selected objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the primary effect (turn on control points) but with no annotations, it does not disclose side effects, limitations (e.g., unsupported object types), or behavior when nothing is selected. It is adequate but not deeply transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, short sentence fully conveys the action and target. No unnecessary words or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless command with an output schema, the description is mostly complete: it names the target and effect. It does not mention output or error conditions, but these are likely trivial for this tool, so this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is effectively complete. The description adds no parameter-specific semantics, leaving the dimension at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Turn on') and clearly identifies the resource ('control point display') and scope ('selected objects'). It is unambiguous and naturally distinguished from siblings like rhino_points_off.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context that the action applies to selected objects, which tells the agent when this tool is appropriate. Does not explicitly mention alternatives or exclusions, but for a simple toggle command the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_points_solid_onB
Enable solid point display for solid/closed objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It only says 'Enable solid point display,' which conveys a basic non-destructive display action but does not mention selection requirements, persistence, toggling semantics, or any side effects. This leaves important behavioral context undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the action and the applicable object type efficiently, which is appropriate for a zero-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?
For a simple no-parameter display toggle, the description covers the core operation and an output schema exists to handle return values. However, the presence of near-duplicate siblings and the lack of any note about object selection or when this differs from rhino_points_on leave some contextual ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema description coverage is 100%, so the description does not need to explain any parameters. The tool's focus on enabling a display mode is sufficient given there is nothing to configure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: enabling solid point display for solid/closed objects. It is clear about what the tool does, but it does not differentiate itself from the similarly named sibling 'rhino_solid_pt_on', which appears to represent nearly the same operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for solid/closed objects' implies when the tool should be used, distinguishing it from generic point display tools like rhino_points_on. However, no explicit guidance or exclusions are provided regarding alternatives such as rhino_solid_pt_on or rhino_points_solid_on's relationship to other display toggles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_polygonC
Add a regular polygon (inscribed or circumscribed) on the XY plane.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any side effects beyond the basic add operation; the readOnlyHint annotation only indicates a mutation, but no additional behavioral details are given.
Agents need to know what a tool does to the 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, clear sentence with no unnecessary words, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about the expected input geometry or any prerequisites; with no parameter explanations in the schema, the tool is not fully self-contained for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning to the parameters beyond what is already in the schema; with 0% schema coverage per context, it fails to compensate by explaining center, radius, sides, or inscribed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a regular polygon, specifying it can be inscribed or circumscribed and is placed on the XY plane, which distinguishes it from other curve and surface creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like rhino_polyline or rhino_circle; there are no usage conditions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_polylineB
Add a polyline through the given points; optionally closed.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the annotations (readOnlyHint=false implies a mutating create operation, matching 'Add'). It adds the small behavioral detail that the resulting geometry is optionally closed, but discloses nothing else — no mention of layer auto-creation side effects, document targeting via doc_id, or behavior with fewer than two points. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is ten words, front-loaded with the verb and object, and contains zero filler. Every word earns its place, and 'optionally closed' is a meaningful qualifier rather than redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with a well-documented nested schema, an output schema, and annotations covering the read/write nature, the description is minimally adequate. However, it omits any differentiation from the many sibling creation tools and any notes about error conditions (e.g., fewer than 2 points), so an agent would need to rely entirely on the schema 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?
The schema itself carries detailed descriptions for all nested properties (points as 'Ordered vertex list', minItems 2, x/y/z in document units, layer 'created if absent'), so the description's burden is light. The description names the two essential inputs (points and closed) but does not explain the point structure or the args wrapper, so it only partially compensates for the reported 0% schema description coverage at the top level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') plus a concrete resource ('a polyline') and an explicit construction method ('through the given points; optionally closed'). It clearly conveys the core operation, though it does not name or differentiate from closely related siblings like rhino_line, rhino_polygon, or rhino_interpolate_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The siblings list contains many similar curve/polyline creation tools (rhino_line, rhino_polygon, rhino_interpolate_curve, rhino_cmd_polyline), and the description gives no criteria for choosing this tool over them, leaving the agent to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_probe_intersectionBRead-onlyIdempotent
Cast a ray and report intersection points against Breps/Extrusions.
Returns ``hits`` sorted by distance from the ray origin. Bridge-only —
rhino3dm has no ray-shoot primitive.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and idempotentHint already present, the description adds useful behavior beyond the annotations: hits are sorted by distance from the ray origin, and the tool only targets Breps/Extrusions. This gives the agent a clearer model of the operation without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the action, followed by the key result-ordering behavior and a brief implementation note. Every sentence carries useful 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 read-only probe with an output schema and readOnly/idempotent annotations, the description covers the essential mechanics: ray casting, target geometry, and sorted results. It leaves filtering and cap details to the schema, which is acceptable given the available structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only obliquely references `ray_origin` and the default target set (`Breps/Extrusions`). It does not explain `doc_id`, `max_hits`, `object_ids`, or the behavior of `ray_direction`, and with schema description coverage reported at 0%, the description fails to compensate for the parameter documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: cast a ray and report intersection points against Breps/Extrusions. This makes the tool's core function unmistakable and distinguishes it from the many creation/modification tools in the sibling list, though it does not explicitly name an alternative probe 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?
There is no guidance on when to use this tool versus alternatives such as surface closest-point, section, or contour probing. The 'Bridge-only' note explains an implementation limitation but does not help an agent choose between this tool and other geometric query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_project_to_cplaneA
Project selected objects onto the active construction plane.
Original objects are not kept.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure, and it does disclose the most critical trait: 'Original objects are not kept.' This signals destructive behavior clearly. It also references the active construction plane, which is an important contextual dependency, though it does not mention undo behavior or what happens if nothing is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core description is only two sentences and front-loads the operation and the destructive outcome. The trailing 'Args' and 'Returns' lines are generic boilerplate but do not significantly bloat the definition, so it remains concise and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description covers what it does, where it operates, and the critical side effect. It could be more explicit about requiring an active selection and about how the active plane is determined, but those are reasonably implied by 'selected objects' and 'active construction plane.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description is not required to document parameter details. The 'Args: controller: RhinoController instance' line is somewhat boilerplate and not reflected in the schema, but since there are no actual user-supplied parameters, this does not create a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Project'), a clear resource ('selected objects'), and a precise target ('the active construction plane'). It is immediately distinguishable from siblings like rhino_set_cplane (which sets the plane) and rhino_shadow_project (which projects shadows), so an agent can tell what this tool does without opening other definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus alternatives, nor any mention of prerequisites such as ensuring objects are selected or setting the desired construction plane first. The phrasing 'selected objects' and 'active construction plane' implies state dependencies, but the description does not spell them out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_purgeB
Purge unused document objects to reduce file size.
Args:
controller: RhinoController instance.
purge_unused_layers: Remove layers with no geometry (default True).
purge_unused_blocks: Remove unreferenced block definitions (default True).
purge_unused_materials: Remove unreferenced materials (default True).
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| purge_unused_blocks | No | ||
| purge_unused_layers | No | ||
| purge_unused_materials | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose that it removes layers with no geometry, unreferenced block definitions, and unreferenced materials, which signals destructive cleanup. However, it does not explicitly warn that purging is permanent or potentially irreversible for user-created definitions that happen to be unreferenced.
Agents need to know what a tool does to the 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 one-sentence summary is front-loaded and the parameter list is compact. However, it repeats default values already present in the schema, includes the extraneous controller argument, and the Returns line duplicates what the output schema already communicates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 purge operation with no annotations, the description should explicitly mention permanence and warn that unreferenced content will be removed. It also lacks any pointer to the layer-only alternative. It covers the core parameters and purpose, but not the full safety context needed for confident 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%, but the description compensates by explaining each boolean parameter in plain language and clarifying what 'unused' means for each category. It loses some credit because it also lists a 'controller' argument that is not present in the input schema, which could confuse the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete operation: purge unused document objects to reduce file size, and enumerates the affected categories (layers, blocks, materials). This is clear and specific, but it does not distinguish itself from sibling rhino_layer_purge_unused, which could be redundant for layer-only purging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one clear use context: reducing file size by removing unused document objects. However, it does not say when to prefer this tool over rhino_layer_purge_unused or object deletion, and it provides no prerequisites or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_push_pullB
Push or pull a selected sub-face of a solid by a given distance.
Args:
controller: RhinoController instance.
distance: Push/pull distance (positive = outward, negative = inward).
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, but it only states the abstract push/pull action and signed distance. It does not disclose that this is a mutating edit, that geometry is changed in place, whether it is reversible, or what input selection state is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the operation, and easy to scan. It loses a point because the Args block is inconsistent with the actual input schema, containing 'controller' while only 'distance' is exposed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, this is incomplete: it lacks explicit selection requirements, the effect on the original solid, and any note that the operation modifies existing geometry. The output schema helps with return values, but the behavioral context is too sparse for an agent to use this 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?
The schema provides only the integer 'distance', and the description adds key meaning: positive moves outward, negative inward. However, it also documents a 'controller' argument not present in the schema, which is potentially confusing.
Input schemas describe structure but not intent. Descriptions should explain 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 ('push or pull'), a precise target ('selected sub-face of a solid'), and a quantifier ('by a given distance'). This clearly distinguishes it from generic transform tools like rhino_move and solid-edit tools like rhino_shell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for when to choose this tool over alternatives, nor any exclusions or workflow prerequisites. It implies a selected sub-face but does not state that a selection must be made before calling or how to prepare the model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_pyramidB
Create a regular pyramid in Rhino.
Args:
controller: RhinoController instance.
x, y, z: Center of the base polygon.
sides: Number of sides for the base polygon (>= 3).
radius: Circumradius of the base polygon.
height: Height of the pyramid apex above the base.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| sides | No | ||
| height | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It does disclose the core side effect (creating a pyramid), and it mentions the return shape as a dict with 'status' and 'command' keys, which adds useful behavior beyond the schema. However, it does not explain what the status/command values mean, whether an active Rhino document is required, or any failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact docstring with purpose first, then arguments, then returns, making it easy to scan. The only notable redundancy is the unexplained 'controller' argument, which is not part of the input schema and adds noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parametric creation tool, the description covers the essential inputs and the return format. However, it lacks guidance about selecting this tool versus similar solid-creation siblings, and it does not clarify the meaning of 'status' and 'command' or any environment prerequisites, which leaves some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by defining every schema parameter: x/y/z as center, sides with a '>= 3' constraint, radius as circumradius, and height as apex height above the base. It loses a point because it also lists 'controller: RhinoController instance' even though controller is not present in the input schema, which could confuse an agent about the actual call signature.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Create a regular pyramid in Rhino,' so an agent can tell it creates a pyramid rather than a sphere or box. It does not explicitly distinguish itself from related primitive creation tools like rhino_cone or rhino_cylinder, so it misses the top score for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose this tool over alternatives such as rhino_cone, rhino_polygon, or rhino_box. There are no conditions, exclusions, or references to sibling tools, so an agent must infer usage entirely from the tool name and brief purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_quadrangulate_meshC
Convert triangular faces in selected meshes to quads where possible.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining behavior. It notes 'where possible,' which signals best-effort behavior, but it does not disclose whether selected meshes are modified in place, whether unselected meshes are affected, whether a new object is created, or what happens when no meshes are selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is appropriately short and front-loaded, but the second 'Args:' line is redundant and contradictory to the empty schema. Not every sentence earns its place; the extra line actively harms clarity by referencing a non-existent 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 mesh-editing tool with no annotations and no input schema, the description should disclose whether the operation is destructive, whether it requires a prior selection, and what the result will be. The output schema may cover return values, but the absence of selection and mutation semantics leaves an agent uncertain about how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, which is the baseline for a high score, but the description's 'Args: controller: RhinoController instance' introduces a parameter that does not exist in the schema. This creates inconsistency and could mislead an agent into expecting a controller argument. The description therefore adds confusion instead of meaningful parameter 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 explicitly states a specific action ('Convert triangular faces in selected meshes to quads') and the resource ('selected meshes'). It distinguishes itself from nearby siblings like rhino_triangulate_mesh and rhino_quad_remesh by clearly defining its operation and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_quad_remesh or rhino_reduce_mesh. It implies the tool acts on selected meshes, but there are no explicit conditions, prerequisites, or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_quad_remeshB
Remesh selected objects into a uniform quad mesh.
Args:
controller: RhinoController instance.
target_quad_count: Target number of quad faces.
adaptive_size: Adaptive size percentage (0–100).
detect_hard_edges: Preserve hard edges during remeshing.
| Name | Required | Description | Default |
|---|---|---|---|
| adaptive_size | No | ||
| detect_hard_edges | No | ||
| target_quad_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It says 'Remesh selected objects' but does not state whether the original geometry is modified in place, whether a new object is created, what happens if nothing is selected, or whether the operation is reversible. This is a meaningful gap for a mutation-type 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 main action is front-loaded in one clear sentence, followed by a compact parameter list. No filler or redundant restatement of the tool name appears, although the 'Args' formatting is somewhat mechanical and 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?
Given no annotations and a large sibling toolset, the description lacks key contextual details: when to prefer this tool over quadrangulate/triangulate/rebuild mesh, whether selection is mandatory, and what happens to the original objects. The parameter documentation is adequate, but the operational context is incomplete for an agent to safely invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides concise meanings for all three schema parameters: target count, adaptive size percentage, and hard-edge preservation. The extra 'controller' arg is not in the schema, which is slightly confusing, but the provided parameter definitions add real value beyond the bare schema types 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 specific verb ('Remesh'), resource ('selected objects'), and outcome ('uniform quad mesh'), so an agent can tell this is a quad-mesh generation operation. However, it does not differentiate from the very similar sibling rhino_quadrangulate_mesh, which likely targets the same outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 that objects must be selected, but gives no explicit when-to-use guidance, no exclusions, and no alternatives. With several mesh-remeshing siblings available, an agent receives no help deciding between this tool and rhino_quadrangulate_mesh or rhino_triangulate_mesh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_radiusA
Measure the radius of a selected arc or circle (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes that the tool is 'interactive' and operates on a 'selected' arc or circle, which conveys that a selection is required and that the user may need to interact with Rhino. Since no annotations are present, the description carries the full burden, and it does not explicitly state whether the tool modifies the document or what happens if no valid arc/circle is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core purpose in the first line. The Args/Returns boilerplate is mostly unnecessary but does not add significant noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter measurement tool with an output schema, the description covers the essential operational context: what is measured, the object types involved, and that the interaction is interactive. It could add more detail about selection behavior or result contents, but the core invocation requirements are understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is little to document. However, the description's docstring references a 'controller: RhinoController instance' argument that is not reflected in the schema, which is a minor mismatch and could confuse an agent about what arguments are expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Measure') and resource ('radius of a selected arc or circle'), which makes the tool's purpose immediately understandable. It does not explicitly contrast itself with sibling measurement tools, but the radius-specific resource is distinct enough that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tool's use case is implied: use it when you need the radius of an arc or circle. However, it provides no explicit guidance on when to prefer this tool over alternatives like rhino_curve_length or rhino_distance, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rail_revolveA
Rail-revolve: revolve a profile along a rail path curve.
Pre-select the profile curve and rail curve before calling.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the operation, the pre-selection requirement, and the return keys, but it omits behavioral details such as whether source curves are consumed, whether an axis is needed, or what failure/status cases look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core definition and prerequisite. The 'Args: controller' line is unnecessary and not schema-backed, which prevents a perfect conciseness score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the main operation, required selection, and return shape, but leaves gaps: no mention of an axis if the underlying rail-revolve operation requires one, no explanation of 'status'/'command' values, and no guidance about selection state or failure behavior. This is acceptable 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 input schema has zero properties, and the 'Pre-select' sentence correctly explains how inputs are supplied. However, the description also lists 'Args: controller: RhinoController instance,' which is not present in the schema and could mislead an agent into passing a controller argument that the schema does not define.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('revolve a profile along a rail path curve') and identifies the two key inputs. It is clear but does not explicitly differentiate from closely related siblings such as rhino_revolve or rhino_sweep1.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states the required prerequisite: 'Pre-select the profile curve and rail curve before calling.' This is actionable usage guidance, though it does not mention when to choose this tool over alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rebuildC
Rebuild selected curves or surfaces with specified point count and degree.
Args:
controller: RhinoController instance.
point_count: Number of control points.
degree: NURBS degree.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| degree | No | ||
| point_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates that the tool rebuilds with point count and degree, and does not disclose whether the operation modifies objects in place, is destructive, requires undo consideration, or how failures are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the overall docstring is compact. However, the Args/Returns sections partly duplicate schema information, and the 'controller' line adds noise since it does not correspond to an actual input 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 no annotations and a broad name among many rebuild-related siblings, the description lacks prerequisites, selection behavior, and parameter constraints. The output schema may clarify return values, but the missing operational context is significant for correct tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives only terse definitions ('Number of control points', 'NURBS degree') and omits constraints such as valid ranges, minimum point counts, or the relationship between degree and point_count. It also mentions a 'controller' argument that is not present in the input schema, which could confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool rebuilds selected curves or surfaces with a specified point count and degree, providing a clear verb, resource, and scope. It is distinguishable from sibling tools like rhino_rebuild_curve and rhino_rebuild_surface by its generic 'selected curves or surfaces' scope, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus more specific siblings such as rhino_rebuild_curve or rhino_rebuild_surface. The description implies operation on selected objects but does not state that a selection must first exist, how selection is performed, or what happens if nothing is selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rebuild_curveB
Rebuild an existing curve with a new point count and degree.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already indicates a mutation, so the description adds little behavioral context beyond that. It does not disclose whether the original curve is modified in place, whether a new object is returned, whether the operation is destructive, or what side effects the agent should expect.
Agents need to know what a tool does to the 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-formed sentence with no filler. It front-loads the verb and resource, then precisely names the two modifying parameters. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool shape, the input schema, and the presence of an output schema, the description is minimally adequate for invoking the tool correctly. It falls short, though, on usage guidance and on clarifying whether the rebuild replaces the existing curve or creates a new object, which matters for an agent managing object IDs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps 'point count and degree' to the point_count and degree parameters, adding some meaning beyond their bare schema names. However, it does not mention the required object_id, doc_id, name, or layer, leaving the schema to carry most parameter semantics. With schema description coverage reported as 0%, 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 clearly states a specific action ('Rebuild') on a specific resource ('an existing curve') and names the key parameters ('point count and degree'). It is unambiguous against surface-related siblings like rhino_rebuild_surface, though it does not explicitly distinguish itself from close siblings such as rhino_cmd_rebuild_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool instead of alternatives, no exclusions, and no mention of related tools like rhino_rebuild_surface or rhino_cmd_rebuild_curve. An agent must infer usage purely from the tool name and generic wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rebuild_meshC
Rebuild selected meshes to clean up topology.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Rebuild selected meshes' implies a mutating operation, but it does not state whether the original mesh is replaced, whether a new object is created, what settings are used, or whether the operation is reversible. This is insufficient for a tool that modifies geometry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core description is concise and front-loaded: 'Rebuild selected meshes to clean up topology.' However, the 'Args: controller: RhinoController instance.' section is boilerplate that adds no agent-facing value and is inconsistent with the empty schema, making the structure less clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mesh-modification tool with no annotations and no parameter schema to clarify behavior. The description does not explain what 'selected' means, what topological cleanup entails, what the output is, or how it differs from related mesh-editing tools. Even with an output schema present, the description is too thin for an agent to call this tool 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?
The schema has zero properties, so the baseline is 4; the description need not document parameters. It does mention a 'controller' argument in prose, but since that is not part of the input schema and likely an internal detail, it is not harmful enough to lower the score significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Rebuild selected meshes') and states the intent ('clean up topology'), which clearly conveys the action. However, it does not distinguish itself from sibling tools like rhino_reduce_mesh or rhino_quad_remesh, so the purpose is clear but not differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as rhino_reduce_mesh, rhino_mesh_repair, or rhino_quad_remesh. The phrase 'selected meshes' implies it operates on a current selection, but there is no explanation of prerequisites or selection behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rebuild_surfaceC
Rebuild a surface with new point counts and degrees in U/V.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title with no readOnlyHint or destructiveHint, so the description must carry the behavioral burden. It does not disclose that rebuilding replaces the surface's control point structure in place, that the original geometry is altered, or that changes are constrained by the degree/point-count relationship. No contradiction with annotations, but nothing beyond the literal meaning of 'rebuild' is revealed.
Agents need to know what a tool does to the 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 13-word single sentence that front-loads the verb and resource with zero filler. Every word earns its place, and the structure makes the core operation immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, but this is a mutating surface operation with five parameters, defaults, and ranges plus several similarly named siblings. The definition omits when to prefer it, that the surface is modified in place, and parameter interplay such as point counts needing to exceed degrees. With annotations carrying no safety profile, this is under-specified for reliable selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The nested schema actually documents four of the five real parameters (degree_u, degree_v, point_count_u, point_count_v) with concise descriptions; only object_id lacks schema meaning. Although the context signal reports 0% coverage, that appears to count only the top-level args wrapper. The description reinforces the U/V point-count and degree semantics but doesn't clarify that object_id is the surface to be rebuilt.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Rebuild'), a resource ('a surface'), and precise scope ('new point counts and degrees in U/V'). This implicitly distinguishes it from curve and mesh rebuild siblings. However, it doesn't explicitly differentiate from the closely named rhino_rebuild_uv or rhino_rebuild, leaving partial sibling ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus rhino_rebuild_curve, rhino_rebuild_uv, or rhino_rebuild. No prerequisites are mentioned (e.g., the target must be a NURBS surface, not a polysurface or SubD). An agent must infer applicability from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rebuild_uvC
Rebuild a surface in U and V directions independently.
Args:
controller: RhinoController instance.
u_count: Control-point count in U direction.
v_count: Control-point count in V direction.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| u_count | No | ||
| v_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully carry behavioral disclosure. It does not say whether the surface is modified in place or a new one is returned, which object is affected, or that rebuilding is destructive to the original control-point configuration. The phrase 'in U and V directions independently' is the only real behavioral content, and the description references a 'controller' argument absent from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a clear one-line summary precedes short Args and Returns sections. There is no wasted prose, though 'Returns: Dict with command result' is nearly vacuous and contributes little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a geometric mutation tool with no annotations, too much is missing: what object is rebuilt, whether the operation mutates or returns a new surface, how it differs from rhino_rebuild_surface, and the effect of default counts. The output schema covers the return shape, but the operational context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must supply parameter meaning, and it does clarify that u_count and v_count are control-point counts per direction. However, it documents a 'controller' parameter that does not exist in the input schema, which can mislead an agent, and it leaves the default values (10, 10) and their significance 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?
The description states a specific verb and resource: 'Rebuild a surface in U and V directions independently.' This makes the operation identifiable even among many siblings, but it does not explicitly differentiate itself from rhino_rebuild_surface, which is nearly identical in name and function, so the distinction is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus rhino_rebuild_surface, rhino_rebuild_curve, or rhino_rebuild. The description doesn't state prerequisites (e.g., a selected surface), when U/V-independent rebuilding is the right choice, or what happens when both params use their defaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rectangleB
Add a rectangle as a closed polyline on the XY plane.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the write-safety signal (readOnlyHint=false), so the bar is lower. The description adds genuine behavior beyond that: the result is disclosed as 'a closed polyline' rather than a native rectangle curve or surface, and the XY-plane claim implies that corner z is ignored. It does not mention side effects like auto-creating missing layers, but those are documented 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?
A single sentence with zero filler; the verb is front-loaded and the two qualifiers ('closed polyline', 'XY plane') are the highest-value facts an agent needs. Every word earns its place, and no information is buried or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a nested 6-field input, an output schema, and over 100 siblings, one sentence is lean but workable because the schema and annotations carry much of the load. The real gaps are the ambiguity about whether a non-zero z on the corner is honored or ignored, and the absence of any routing guidance versus rhino_cmd_rectangle. These are clear, fixable omissions rather than fatal ones.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description names no parameters, so it adds zero meaning beyond the input schema; with schema description coverage at 0%, it does not compensate as required. The only indirect signal is 'on the XY plane,' which hints that the corner's z value is irrelevant. The nested schema's own per-field descriptions (e.g., 'Lower-left corner (in plane)', 'Width along plane X') mitigate real-world harm, but they come from the schema, not the tool 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 ('Add'), a specific resource ('a rectangle'), and two decision-critical qualifiers: the result is 'a closed polyline' and it is placed 'on the XY plane.' This distinguishes it from rhino_box (3D) and surface-creation tools. However, it does not explicitly differentiate from the near-twin sibling rhino_cmd_rectangle, so it falls short of full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given; the description never mentions alternatives, exclusions, or selection criteria. Among the siblings, rhino_cmd_rectangle appears to be the command-driven counterpart, but an agent is given no basis for choosing between them. The XY-plane qualifier only weakly implies 2D use and does not count as real routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_redoC
Redo the last undone operation(s) in the Rhino document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations do not include readOnlyHint or destructiveHint, so the description carries the full behavioral burden. It merely restates that the tool redoes operations, but does not disclose what redoing entails for document state, what happens when there is nothing to redo, whether the operation is reversible, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler or redundant content. It is appropriately short for a simple tool, though it sacrifices useful behavioral detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter redo command, the description gives enough to attempt a basic call, and an output schema exists. However, it lacks important context such as what happens when the undo stack is empty, how the steps parameter behaves, and how this differs from the similarly named rhino_cmd_redo sibling.
Complex tools with many parameters or behaviors need more documentation. Simple 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 reported as 0%, and the description does not compensate by explaining the 'steps' parameter. The plural 'operation(s)' hints at multiple operations, but does not clarify the parameter's role, default, range, or effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Redo') and identifies the resource ('last undone operation(s) in the Rhino document'), making the core purpose clear. It is not a tautology, but it does not differentiate itself from the sibling rhino_cmd_redo, which has the same apparent purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_undo or rhino_cmd_redo. The phrase 'last undone operation(s)' implies it should follow an undo, but no conditions, exclusions, or comparisons to sibling tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_reduce_meshBDestructive
Reduce a mesh to a target face count.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is established without the description. The description adds no context about whether the original mesh is replaced in place, whether a new object is created, or how reduction affects mesh quality, but those gaps are partially mitigated by the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Eight words in a single sentence with the verb front-loaded. Every word conveys information; there is no filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and annotations, the description omits sibling differentiation and any note that object_id must identify a mesh, and it does not state whether the operation mutates the original object. For a destructive mesh operation with several near-siblings, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description needed to compensate but only clarifies target_face_count (the desired resulting count rather than a delta or percentage). The required object_id parameter is left undocumented and unexplained, so the agent gets no help determining which object the reduction applies to.
Input schemas describe structure but not intent. Descriptions should explain 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 ('reduce'), a resource ('a mesh'), and a measurable outcome ('target face count'), so an agent can tell what operation this performs. However, it does not differentiate it from closely related siblings such as rhino_rebuild_mesh, rhino_quad_remesh, or rhino_cmd_reduce_mesh, which all alter mesh structure or resolution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the many related mesh tools (rhino_rebuild_mesh, rhino_triangulate_mesh, rhino_quad_remesh, rhino_cmd_reduce_mesh). There is no use-case context, no prerequisite that object_id must reference a mesh, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_refit_trimB
Refit the trim curves of selected surfaces.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full disclosure burden. It implies a modifying operation on selected surfaces but does not state side effects, whether it requires trimmed surfaces, what happens to existing geometry, or degree of undo/modification. The generic 'Returns Dict' line adds little.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. Minor boilerplate in the Args/Returns lines is redundant with the empty schema and existing output schema, but the text is still compact and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a surface-modification tool with no annotations and many trim-related siblings, this is under-specified. It omits prerequisites, behavioral effects, and selection requirements, leaving an agent to guess at correct invocation and expected outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is little to document; the 0-param baseline of 4 applies. The description's 'controller' mention is an implementation detail not reflected in the schema, but it does not actively mislead agents about user-supplied arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('Refit the trim curves') on a clear resource ('selected surfaces'), so an agent can infer what the tool does. However, it does not differentiate it from related sibling tools such as rhino_trim, rhino_untrim, or rhino_shrink_trimmed_srf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives, what selection state is required, or when the refit operation is appropriate. The description only gives a one-line action with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_remove_control_pointA
Remove a selected control point from a NURBS curve or surface.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It does state the core mutation and target scope, and 'Remove' clearly signals a destructive edit. However, it does not explicitly mention side effects, selection requirements beyond the word 'selected', or whether the operation is reversible/undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise, front-loaded sentence with no filler. Every word contributes necessary information: the action, the selection prerequisite, and the supported target types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-argument selection-driven tool, the description is adequate but minimal. It names the target and action, and an output schema exists to document return values. Missing context includes explicit prerequisites like needing a control point selected in the active Rhino document and what happens if no valid control point is selected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema description coverage, so there is no parameter semantic burden on the description. The baseline for zero parameters is 4, and the description appropriately needs to add no parameter-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove'), a clear object ('selected control point'), and a clear scope ('from a NURBS curve or surface'). It distinguishes this tool from siblings like rhino_add_control_point and rhino_set_point_weight by making the removal action 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 action itself implies when to use it, and 'selected' signals a prerequisite: a control point must already be selected. However, the description does not explicitly route the agent away from alternative tools such as rhino_set_control_points or rhino_soft_edit_curve, nor does it provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_remove_creaseA
Remove the crease from selected SubD edges (smooth them).
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It states the mutating action and its effect ('remove the crease'/'smooth them'), but it does not disclose failure behavior, what happens with no selection, or side effects. Basic but viable.
Agents need to know what a tool does to the 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 first sentence is concise and front-loaded, but the 'Args:' section is boilerplate that conflicts with the empty properties object and adds no value. The description is short, but not every line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple selection-based mutation with no JSON parameters and an output schema, the one-line operation statement is close to sufficient. Still, without annotations it lacks details like what happens when nothing is selected or when non-SubD edges are selected. 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?
The input schema has zero properties, so there are no parameters to document. However, the description's 'Args: controller: RhinoController instance' introduces an argument that does not appear in the schema, which can mislead an agent. This outweighs the normal zero-parameter baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove'), a specific resource ('crease'), and a precise target ('selected SubD edges'), with 'smooth them' clarifying the intended effect. This clearly distinguishes it from the inverse sibling rhino_subd_crease, so an agent can select the correct tool without needing to inspect other 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 tool's use context is clear: apply it when creases on already-selected SubD edges should be smoothed. It does not explicitly name alternatives or exclusions, but no competing alternative tools really exist for this exact operation, so the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_renderC
Render the scene using the current render settings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'render the scene using the current render settings' with no mention of side effects, output format, whether a file is written, or whether the render is interactive. Since annotations are absent, the description carries full responsibility and fails to disclose behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is appropriately concise for a simple command.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 lacks essential context about what the render produces, whether it saves to a file, updates a viewport, or returns an image. Given the existence of sibling render tools, this omission leaves the tool's place and behavior unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so there are no parameter semantics to clarify. The description does not need to add anything beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'render' and the resource 'scene', making the basic purpose clear. However, it does not distinguish this from sibling tools like rhino_render_preview, rhino_render_viewport, or rhino_render_to_file, leaving ambiguity about the output destination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus the many render-related siblings. It does not explain when to prefer this over render_preview, render_viewport, or render_to_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_previewB
Start a quick preview render.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says 'Start a quick preview render.' It does not disclose whether this renders to the active viewport, blocks until complete, requires render setup, or has any side effects. The behavioral trait 'quick preview' is helpful but not sufficient given the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single five-word sentence with no filler and the main verb is front-loaded. For a zero-parameter tool, this is appropriately sized and easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and an output schema exists, so the description does not need to explain return values. However, it lacks behavioral context and tool-selection guidance, and given the large family of rendering and preview tools, an agent may not have enough context to invoke 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?
The tool takes zero parameters and the schema coverage is 100%, so the schema fully accounts for the argument surface. Per baseline guidance for zero-parameter tools, the description need not add parameter details, and it does not need to compensate for any schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Start') and a resource ('quick preview render'), so the core action is clear. However, it does not differentiate from close siblings like rhino_render_viewport or rhino_viewport_preview, leaving some ambiguity about exactly which preview rendering workflow is invoked.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of alternatives such as rhino_render_to_file, rhino_render_viewport, or rhino_viewport_preview. The phrase 'quick preview' implies a lightweight render, but no explicit when-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_queue_cancelA
Cancel a running or queued render job.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false already signals mutation, and the description adds that the tool acts on running or queued jobs. However, it does not disclose consequences such as irreversibility, whether a running render is aborted immediately, or what happens to any partial output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eight-word sentence that front-loads the action and object. There is no filler, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter cancellation tool with an output schema and a well-described job_id, the definition is nearly complete. A brief note on idempotency or irreversibility would improve it, but an agent can correctly invoke it with the current information.
Complex tools with many parameters or behaviors need more documentation. 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 description itself adds no parameter guidance, but the input schema's nested job_id description ('GUID returned by rhino_render_queue_submit') provides strong provenance. The schema carries the semantic weight, so the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Cancel', with a clear resource, 'a running or queued render job'. This unambiguously differentiates it from sibling tools like rhino_render_queue_submit, rhino_render_queue_status, and rhino_render_queue_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the eligible job states ('running or queued'), giving an agent clear context for when the tool applies. It does not name exclusions or alternative tools, but the operation is distinct enough among the render-queue siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_queue_listARead-onlyIdempotent
List recent render jobs and their progress.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds 'recent' and 'progress' as scope details, but does not clarify ordering, whether all jobs or only active jobs are returned, or what 'recent' means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the action, the resource, and the key output detail in eight words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with an output schema, the description is nearly sufficient. The main gap is ambiguity versus rhino_render_queue_status and the undefined meaning of 'recent.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is a required 'args' wrapper containing an empty object, so there are effectively no user-selectable parameters. With 0 real parameters, the description has no meaningful parameter burden; baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and names a clear resource ('recent render jobs') plus the data exposed ('their progress'). It clearly differentiates from submit/cancel operations, but it does not distinguish itself from the similarly named sibling rhino_render_queue_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like rhino_render_queue_status or rhino_render_queue_submit. The description implies a read-only list operation but provides no context for selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_queue_statusARead-onlyIdempotent
Inspect a queued render job's status, progress, and completed frames.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description is consistent with those. It adds useful behavioral detail by mentioning progress and completed frames as part of the returned status, going slightly beyond the annotation-only picture.
Agents need to know what a tool does to the 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. It states the action and the relevant outputs efficiently, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only status query with one documented parameter and an output schema, this is nearly complete. The only minor gap is not naming the companion submit/list tools or explicitly noting that the job_id comes from a prior submission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter (job_id) as the GUID returned by rhino_render_queue_submit, so the description does not need to repeat parameter mechanics. The tool description adds no new parameter-level meaning, but none is really required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Inspect') and names both the resource (queued render job) and the exact aspects covered (status, progress, completed frames). This makes it easy to distinguish from related queue operations like submit, cancel, or list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for checking a specific render job's status, but it does not explicitly contrast it with rhino_render_queue_list or state that it should be used after rhino_render_queue_submit. The usage context is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_queue_submitA
Submit a frame sequence to the bridge render queue (bridge only).
Returns a ``job_id`` immediately while frames are captured on a
background worker. Use ``rhino_render_queue_status`` to poll
progress and ``rhino_render_queue_cancel`` to interrupt. The v0.5
backend captures viewport frames (``_-ViewCaptureToFile``); true
photo-realistic engine integration is on the roadmap.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, the description discloses asynchronous behavior, background-worker execution, the concrete capture mechanism (_ViewCaptureToFile), and the v0.5 backend limitation. This adds meaningful behavioral context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences with the core purpose front-loaded, follow-up tools named explicitly, and the backend limitation as a brief closing note. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the success path (immediate job_id), the asynchronous lifecycle (status and cancel companions), and the current rendering limitation. Since an output schema exists and the input schema describes frame details, nothing essential is missing for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description should compensate by helping agents understand frame fields, but it only says 'frame sequence' at a high level. It adds no parameter-level detail about view, width/height defaults, output_path requirements, or the frames array limits, leaving agents to rely entirely on the nested 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 action ('Submit'), a precise resource ('a frame sequence to the bridge render queue'), and explicitly scopes itself ('bridge only'). It is clearly distinguishable from sibling render and queue tools like rhino_render_queue_status, rhino_render_queue_cancel, and rhino_render_viewport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 describes the expected workflow: returns job_id immediately, frames are captured on a background worker, use rhino_render_queue_status to poll, and rhino_render_queue_cancel to interrupt. It also sets clear expectations by noting the current backend only captures viewport frames and true photo-realistic rendering is not yet available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_setupB
Set render resolution / samples / engine / transparency on the active render context.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false already signals mutation, and the description's 'Set' is consistent with that. It adds the useful detail that the operation targets the active render context, but it does not explain persistence, whether settings are replaced wholesale, or whether a subsequent render action is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The slash-separated list of settings and the target 'active render context' convey the tool's purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple setter but not fully complete: it leaves out the output_path setting and does not place the tool in the render workflow relative to sibling render tools. An agent can probably invoke it correctly from the schema, but the workflow context and one parameter are missing from the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps well to several schema fields by grouping width/height as 'resolution' and naming samples, engine, and transparency. However, it omits output_path entirely, and with schema description coverage reported at 0%, the description does not sufficiently compensate for the lack of parameter-level documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a setter for render resolution, samples, engine, and transparency on the active render context. The verb and resource are specific, though it does not explicitly distinguish itself from sibling tools like rhino_set_render_resolution or rhino_render_viewport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of related tools such as rhino_render_to_file, rhino_render_preview, or rhino_render_viewport. The description says what the tool does but not how it fits into a render workflow or when it should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_to_fileC
Execute the configured render and write the result to output_path.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false indicates this is not a read-only operation, and the description transparently states that it writes a result to output_path. That is consistent with the annotation and adds a concrete side effect. However, it does not disclose whether the file will be overwritten, whether the render is blocking, or what happens if no render is configured. The description is not misleading but incomplete on behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and front-loads the primary action and destination. It is concise and easy to parse. It loses a point because 'configured render' is vague and the sentence does not expand on any context, but for its length it is well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a side-effect-producing render tool with optional parameters and an output schema, the description is too thin. It does not explain the rendering workflow, what 'configured' implies, when the optional parameters override the configuration, or how it relates to render setup tools. The agent is left to infer important preconditions and behavior from names and schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0% and multiple parameters (width, height, samples, output_path, transparent_background) nested inside the args object, the description must compensate but does not. It only mentions output_path, ignoring the optional parameters and their meaning. The schema provides a description for output_path only, and the description adds no additional semantics for the other fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses an active verb ('Execute') with a clear resource ('the configured render') and destination ('write the result to output_path'). It distinguishes itself from preview-style siblings by explicitly stating output to a file. However, it does not explicitly reference sibling tools or clarify what 'configured render' means, so it is clear but not strongly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_render_preview, rhino_render_viewport, rhino_view_capture_to_file, or rhino_screenshot. There is no mention of prerequisites like setting up render settings, nor any exclusions or alternative routing. An agent must infer the intended use solely from the tool name and sibling information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_render_viewportB
Render the active viewport to an image file (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false is consistent with a write operation that produces a file. Beyond annotations, the description adds 'bridge required' and scopes the operation to the active viewport, which is useful. However, it does not disclose potential blocking behavior, file overwrite semantics, or failure conditions when no bridge is connected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes meaning, and the critical 'bridge required' caveat is included without bloating the 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 tool with overlapping siblings and four parameters, this description is too thin. The output schema may cover return values, but the description does not provide enough context about prerequisites, alternative tool selection, or parameter behavior to let an agent confidently invoke it in the right situation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries the burden of explaining parameters, but it only implies output_path and 'active viewport.' It does not clarify width, height, or doc_id beyond what the schema already provides via defaults and constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Render'), the resource ('active viewport'), and the outcome ('to an image file'). It is specific enough to identify the tool's core function, though it does not explicitly distinguish it from overlapping siblings like rhino_render_to_file or rhino_render_preview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 choose this tool over closely related alternatives such as rhino_render_preview, rhino_render_to_file, or rhino_screenshot. The parenthetical 'bridge required' is a dependency note, not usage direction. An agent has to infer selection criteria from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_repair_subdB
Repair selected SubD objects to fix topology issues.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden of disclosing mutation effects. 'Repair' implies modifying SubD objects, but the description does not mention reversibility, which topology issues are addressed, or what happens to the object after the 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 first sentence is concise and front-loaded with the core purpose. The Args line for controller is extraneous and potentially misleading given the empty input schema, so not 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-focused tool with no annotations and no schema parameters, the description omits important context: what selection state is required, what the operation changes, and what output is produced. It only provides a high-level action statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameter details the description must cover. The 'controller: RhinoController instance' line is not reflected in the schema and adds no invocation-relevant meaning, but the zero-param baseline keeps this dimension acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action, 'Repair selected SubD objects to fix topology issues', with a specific verb and resource. It identifies SubD objects explicitly, which distinguishes it from mesh repair tools like rhino_mesh_repair and from SubD creation/modification siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use when a selected SubD object has topology issues. However, it does not explicitly describe when to choose this tool over alternatives, how selection should be prepared, or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_reparameterizeB
Reparameterize selected curves or surfaces to natural parameterization.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action and target, but does not reveal side effects such as whether the geometry shape changes, whether object history is affected, or whether the operation is reversible. This is a meaningful gap for a modifying 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 purpose is stated in one concise, front-loaded sentence. The 'Args:' and 'Returns:' boilerplate is somewhat redundant, but it is short and does not significantly distract from the main message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with an output schema, the description is minimally viable: it names the target objects and the operation. However, it omits practical context such as the need for an active document, what happens if unsupported objects are selected, and any prerequisites beyond 'selected.' These gaps make it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there are no parameter semantics for the description to cover. The mention of an internal 'controller: RhinoController instance' is implementation detail rather than a user-facing schema parameter, and it does not conflict with the empty schema. Thus the 0-parameter baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Reparameterize selected curves or surfaces to natural parameterization.' This clearly identifies the operation and distinguishes it from dozens of sibling geometry tools. It loses one point because it does not clarify what 'natural parameterization' changes about the objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected curves or surfaces' implies the tool operates on the current Rhino selection, giving some usage context. However, it does not state when to choose this over alternatives like rebuild_curve, match_surface, or other parameterization tools, nor does it mention what happens if nothing is selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_replace_blockC
Replace selected block instances with a different block definition.
Args:
new_name: Name of the replacement block definition.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full disclosure burden. It states the mutation intent but does not mention preconditions, such as the new_name block definition needing to exist, nor does it describe failure modes or side effects beyond replacing the selected instances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence followed by a compact Args line. There is no filler, repetition, or unnecessary detail beyond the minimal parameter gloss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a single parameter, the description leaves important operational context unstated, such as dependence on the current selection, the requirement for an existing block definition, and what happens when the replacement name is invalid. The presence of an output schema reduces the need to describe return values, but it does not fill these 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 'Args: new_name...' line partially compensates by clarifying that new_name is a block definition name rather than an arbitrary string. It still omits constraints such as the definition needing to exist in the document, so the added semantics are minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The lead sentence names a concrete verb ('Replace'), the affected resource ('selected block instances'), and the intended result ('with a different block definition'). This is clear and distinct from nearby block tools like rhino_block_redefine, though it does not explicitly name any sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to prefer this over rhino_block_redefine, rhino_block_insert, or rhino_block_explode. The only usage signal is the tool name and the fact that it acts on selected instances, leaving the agent to infer prerequisites such as having an active selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_replicate_along_curveB
Distribute copies of a source object along a curve at evenly-spaced parameters.
With ``align_to_tangent`` (default), each copy is reoriented so that
the world-X direction maps to the curve tangent at its sample point.
``include_endpoints`` controls whether the first/last samples land on
the curve's start/end points.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, which tells the agent this mutates state. The description adds meaningful behavioral detail: copies are distributed at evenly-spaced parameters, copies reorient to the curve tangent when align_to_tangent is true, and include_endpoints controls endpoint placement. This goes beyond the structured fields and helps the agent predict the outcome. It does not disclose whether the source is copied or moved, but note 'copies' implies copies are created while the source remains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core operation, then explains two key behavioral flags. It is not bloated, though it could be slightly more structured with paragraph spacing. Every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and annotations, and the description covers the main behavior. However, it lacks usage prerequisites (e.g., whether count=1 is valid, whether source must be a closed curve, what happens with curves of zero length), and it does not clarify whether the source object remains in place. The description is adequate for basic use but incomplete for edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. The description explains align_to_tangent and include_endpoints behavior well, and mentions 'evenly-spaced parameters' which relates to count/curve_id. However, it does not mention doc_id or source_object_id/curve_id semantics beyond context, and the parameters are only implicitly referenced. The schema already has descriptions for all parameters, but with 0% coverage the description is expected to compensate more; it partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource action: 'Distribute copies of a source object along a curve at evenly-spaced parameters.' It accurately distinguishes this from array tools and curve creation tools. It doesn't name a specific sibling alternative, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (replicating objects along a curve) but does not explicitly say when to choose this over rhino_array_linear, rhino_array_polar, rhino_array_on_curve, rhino_flow_along_curve, or rhino_orient_on_crv. Some guidance is implied by the sibling names, but no exclusionary guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_report_mesh_healthBRead-only
Mesh health — closed, manifold, vertex/face counts, validity log.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description only needs to add behavioral detail; it does by listing the report contents and the validity log. It does not discuss error behavior or handling of non-mesh objects, but for a read-only report this 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?
The description is extremely concise and front-loads the subject with a scannable list of checks. It is slightly telegraphic and reads more like a title than a full instruction, but every word contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with an output schema and schema-level documentation of object_id/doc_id, the description covers the core domain and does not need to repeat return values. It lacks when-to-use context and edge-case guidance, 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?
The description adds no parameter-level meaning: it never mentions that object_id identifies the mesh to validate or that doc_id defaults to the active document. Context signals report 0% schema description coverage, so the description should have compensated for the schema, but it does not.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific report type ('Mesh health') and enumerates the concrete outputs: closed, manifold, vertex/face counts, and validity log. This makes it clear this is a diagnostic read operation, distinct from nearby editing tools, even though it does not explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as rhino_check_naked_edges, rhino_mesh_repair, or rhino_object_info. The context that it is useful for validating a mesh before repair or export is only implied by the name, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_revertC
Revert the current document to its last saved state.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It clearly indicates a revert to the last saved state, which implies destructive consequences, but it does not explicitly warn that unsaved changes will be lost or that this is not equivalent to a simple undo.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action sentence is short and front-loaded, but the Args and Returns sections are mostly boilerplate. The Args line is inaccurate, and the Returns line is redundant given the stated output schema, so not 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?
This is a simple zero-parameter tool, and the primary behavior is stated. However, the absence of any warning about the destructive nature of the operation, combined with the misleading Args section, leaves the description incomplete for safe and correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the schema already covers everything the agent needs. However, the description's 'Args: controller: RhinoController instance' introduces a parameter not present in the schema, which is misleading and adds negative value rather than clarifying how to invoke the 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 action ('Revert') and a clear resource ('the current document') with a precise destination ('its last saved state'). It is clear enough to be distinguishable from undo in meaning, though it does not explicitly name or contrast sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like rhino_undo, rhino_redo, or rhino_cmd_undo. The description implies a use case but never states prerequisites, exclusions, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_revolveC
Revolve a profile curve about an axis.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals mutation, and the description adds little beyond that. It does not disclose whether a new surface is created, whether the profile curve is consumed, what output is produced, or how layer/name handling works.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words. It is appropriately front-loaded, though the brevity comes at the cost of useful operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a surface-creation tool with multiple parameters and many closely related siblings, the description is too sparse. It lacks prerequisites, output expectations, and any distinction from rail_revolve or sweep-based alternatives, leaving agents to infer too much.
Complex tools with many parameters or behaviors need more documentation. Simple 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, but it only loosely hints at 'profile curve' and 'axis'. It does not explain axis_start/axis_end format, angle_degrees constraints, doc_id behavior, or optional name/layer parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: revolve a profile curve about an axis. However, it does not differentiate this from sibling tools like rhino_rail_revolve or rhino_cmd_revolve, so the agent gets no explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rhino_rail_revolve, rhino_sweep1, or rhino_cmd_revolve. The single sentence implies the basic operation but provides no exclusions, prerequisites, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_ribC
Create a rib feature on a solid from selected curves.
Args:
controller: RhinoController instance.
width: Rib width.
thickness: Rib thickness.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| thickness | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It reveals that the tool creates a rib feature and depends on selected curves, but it does not mention document mutation, prerequisites, units, failure modes, or what happens to the input curves. This is a significant gap for a creation-oriented 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 brief and front-loaded with the main purpose. The Args section is compact. It loses a point because the controller argument is mentioned but not reflected in the schema, and the parameter descriptions are near-tautological.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, two undocumented parameters, and a dependency on selected curves, the description does not provide enough context. It omits units, selection requirements, solid prerequisites, and any detail about the resulting geometry or return value, despite having an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. However, 'Rib width' and 'Rib thickness' essentially restate the parameter names and add no units, ranges, or behavioral meaning. The mention of 'controller: RhinoController instance' adds some context but is not present in the input schema, which may confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: 'Create a rib feature on a solid from selected curves.' It names the main inputs at a high level. However, it does not distinguish itself from related siblings like rhino_axis_ribs, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from selected curves' implies that curves must be selected first, but there is no explicit guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The agent must infer the expected workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rotateC
Rotate objects about an axis through a centre point.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, which signals a mutating operation, but the description adds no behavioral detail about whether objects are replaced in place, whether make_copy preserves the original, how the document is affected, or whether undo is supported. It does not contradict the annotations, but it also does not enrich them. The description carries the full burden for behavioral transparency in a context without rich annotation details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core operation and key geometry. It earns its place without fluff, though it could have added a brief note about copies or rotation angle without becoming verbose. Overall, it is efficient and 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?
Given that this is a mutating operation with several parameters and a large sibling toolset that includes other rotation-related tools, the description is incomplete. It does not clarify the expected output, the default axis behavior, how angle_degrees is interpreted, or when to use rhino_rotate_3d instead. The output schema exists, but the description still leaves too much implicit for reliable tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only explains the axis and center concept. The input schema itself provides parameter names and some defaults, but several parameters such as make_copy, angle_degrees, and object_ids are not explained beyond their names. The description adds partial value by clarifying the geometric meaning of 'axis' and 'centre point', but it leaves important behavioral 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 'Rotate objects about an axis through a centre point' clearly identifies the operation (rotate) and the key geometric parameters (axis through a center point). It is a distinct operation among the many Rhino sibling tools, so an agent can tell it apart from other transform tools like move, scale, or twist. However, it lacks any mention of optional behaviors like copying or document targeting, so it is clear but not fully explicit about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as rhino_rotate_3d, rhino_cmd_rotate, rhino_twist, or rhino_bend. It does not state limitations, prerequisites, or when another transform tool would be more appropriate. The context is minimal and does not help an agent decide among the many sibling transformation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_rotate_3dC
Rotate selected objects around an arbitrary 3-D axis.
Args:
controller: RhinoController instance.
axis_start: Start point of the rotation axis.
axis_end: End point of the rotation axis.
angle: Rotation angle in degrees.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | ||
| axis_end | No | ||
| axis_start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It does state that the operation affects selected objects and returns a dict, but it does not clarify whether the rotation is in-place, whether new objects are created, what happens with an empty selection, or whether the operation is reversible. These are important behavioral traits for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, structured with Args/Returns, and front-loads the core purpose in the first sentence. It avoids unnecessary prose, though the mention of a non-schema controller parameter adds minor noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 transformation tool, the core parameters and return type are covered, and an output schema exists to document the return structure. However, with no annotations and no usage guidance, the description omits practical details such as selection requirements, coordinate system, and how the rotation axis is interpreted, leaving some gaps for an agent to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple 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 axis_start, axis_end, and angle with concise phrases and adds the important detail that angle is in degrees. However, it does not specify the expected coordinate list format for points, and it mentions a 'controller' argument that is not present in the input schema, which could confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Rotate selected objects') and the resource/scope ('around an arbitrary 3-D axis'), which distinguishes it from simpler 2D rotation tools. It is specific and immediately understandable, though it does not explicitly name sibling tools or edge cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 that the operation applies to selected objects, but it gives no explicit guidance on when to use this tool versus rhino_rotate, rhino_cmd_rotate, or other transform tools. There are no stated preconditions, exclusions, or alternatives, leaving the agent to infer the correct context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_run_commandA
Send a raw Rhino command string.
Args:
command: Full Rhino command string (including parameters and Enter tokens).
rhino_id: Optional Rhino instance ID.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| rhino_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It usefully discloses that the command is raw and literal, including parameters and Enter tokens, and that rhino_id selects an instance. However, it does not warn that executing raw commands can modify or destroy geometry, mention error behavior, or describe whether the command runs synchronously.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One lead sentence plus two compact parameter definitions, with no filler or repetition. The most important constraint, that the command is raw and complete, is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic raw-command tool, the input contract is adequately complete: the command format and optional instance are covered, and the output schema exists to describe return values. It lacks a brief example or a note about side effects and prerequisites, but the core calling contract 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 description coverage is 0%, so the description provides all semantic meaning for the parameters. It precisely defines command as a full Rhino command string including parameters and Enter tokens, and rhino_id as an optional instance ID, enriching what the bare schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Send'), a specific resource ('raw Rhino command string'), and the key constraint that the string includes parameters and Enter tokens. This distinguishes it from specialized geometry/analysis tools and from run_macro/run_python/run_csharp siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool instead of the hundreds of dedicated Rhino sibling tools. It does not state that this is a fallback for commands without a dedicated tool, nor mention prerequisites such as an open document or running Rhino instance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_run_macroA
Execute a sequence of Rhino commands (macro) one step at a time.
Args:
macro_steps: List of command strings to execute in order.
Returns:
Dict with 'steps' containing per-step results and overall 'success' flag.
| Name | Required | Description | Default |
|---|---|---|---|
| macro_steps | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavior. It mentions 'one step at a time' and the return format (steps and success flag), but does not disclose side effects like document modification, error handling, or permission requirements. Partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, two sentences, covering purpose, parameter, and return format without unnecessary elaboration. Every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 of this simplicity, the description covers the essential aspects: what it does, the parameter, and the return structure. It omits edge cases and side effects, but these are not critical for a macro runner. Slightly incomplete but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly explains the only parameter 'macro_steps' as a list of command strings in execution order. Since schema description coverage is 0%, this textual explanation is the sole source of parameter meaning and is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a sequence of Rhino commands (macro) one step at a time. This is a specific verb (execute) and resource (Rhino commands) that distinguishes it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or fallback options, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_run_pythonB
Execute arbitrary Python code inside Rhino's runtime environment.
Args:
code: Python source code string to execute.
rhino_id: Optional Rhino instance ID (for multi-instance setups).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| rhino_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It states that execution happens in Rhino's runtime and that code is arbitrary, but it does not mention potential document mutation, sandboxing, error behavior, or side effects, which is significant for an arbitrary code execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, and the Args section is concise yet informative. No unnecessary words or filler are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool is highly complex because it executes arbitrary code, yet the description omits execution environment details, available modules, safety caveats, and how it differs from rhino_execute_python or similar runners. This is insufficient for an agent to confidently select and invoke it in nontrivial scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions, but the description's Args section explains both parameters: code is a Python source string, and rhino_id is an optional instance selector for multi-instance setups. This adds meaningful context beyond the raw schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool executes arbitrary Python code within Rhino's runtime environment, using a specific verb and resource. However, it does not differentiate itself from the sibling tool rhino_execute_python, which appears to serve a nearly identical purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_execute_python, rhino_run_macro, or rhino_run_command. The description offers no exclusions, prerequisites, or preferred use cases, leaving the agent without direction for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_run_script_fileB
Execute a Python script file inside Rhino.
Args:
file_path: Absolute path to the .py script file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'Execute' and fails to mention potential side effects such as modifying the Rhino document, arbitrary code execution risks, error handling, or what the return value represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact—a single action sentence and one parameter definition. It fronts the core behavior with no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that executes arbitrary Python code in Rhino, the description is too thin. It omits crucial context about side effects on the active document, the Python environment used, whether output is returned, and how this relates to the many other Python execution tools in the sibling list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only a bare string type with 0% coverage, but the description compensates by specifying 'Absolute path to the .py script file.' This adds required path semantics and file extension, which is adequate for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Execute a Python script file inside Rhino.' This clearly distinguishes file-based execution from command- or macro-based tools, though it does not explicitly differentiate from close siblings like rhino_run_python or rhino_execute_python.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool instead of rhino_run_python, rhino_execute_python, or other Python-related tools. There are no context cues, exclusions, or alternative tool suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_saveC
Write the document to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false, which already signals a write operation, and the description's 'Write' is consistent with that. However, the description adds no behavioral context beyond the annotation: it does not state that saving overwrites the existing file, that version conversion may occur, or that the path defaults to the previously opened file. The schema hints at these behaviors, but the description itself discloses nothing further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler words. It is immediately readable and front-loads the core action. It earns a high score for conciseness even though it sacrifices detail and 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 save operation that has multiple sibling save tools and parameters controlling destination and version, this description is too thin. It doesn't explain the default path behavior, version constraints, or when to prefer this over rhino_save_as/rhino_save_copy. The output schema exists, so return values don't need to be in the description, but the use context and side effects are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level, so the description should compensate for the opaque 'args' container, but it does not mention path, doc_id, or version. The nested schema properties do have useful descriptions (e.g., path defaults to the previously opened file), but the tool description itself adds no parameter semantics. With low schema coverage, this is a clear gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Write') and the resource ('the document') with the destination ('to disk'), so the basic action is unmistakable. However, it does not differentiate from siblings like rhino_save_as, rhino_save_copy, or rhino_cmd_save, all of which also involve saving documents. The title 'Save 3DM File' adds a bit of format context but no distinction from the save variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus rhino_save_as, rhino_save_copy, or rhino_cmd_save. The description does not mention default behavior (e.g., saving to the currently open file) or any prerequisites such as having a document open. An agent has no basis for choosing this tool over the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_save_asA
Save the current document under a new name/location.
If ``file_name`` is not an absolute path it is resolved relative to
D:/RhinoFiles (or ``folder`` if provided).
Args:
controller: RhinoController instance.
file_name: Desired filename (e.g. 'mymodel.3dm') or full path.
folder: Optional folder override.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | ||
| file_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It does disclose relative-path resolution against D:/RhinoFiles or an optional folder, and it mentions the return type. However, it does not state whether existing files are overwritten, whether the active document becomes the new file after saving, or what happens with missing directories or invalid paths.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and the path-resolution detail is concise and relevant. The docstring-style Args/Returns structure is a bit verbose for an MCP tool description, and the controller parameter is unnecessary, but overall the text is focused and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return dict does not need further explanation. The description covers the essential path and override semantics, but it leaves important contextual gaps: overwrite behavior, whether the active document is now the new file, and how this tool differs from rhino_save_copy. It is adequate for a basic call but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the schema's silence. It adds real meaning: file_name can be a plain filename or a full path, and folder overrides the default base directory. The inclusion of 'controller' in the Args section is noise because that parameter is absent from the input schema, but the two actual parameters are explained usefully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core action: 'Save the current document under a new name/location.' This gives a specific verb, resource, and intent. However, it does not explicitly differentiate itself from similar sibling tools like rhino_save or rhino_save_copy, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by saying 'save... under a new name/location,' but it never explicitly contrasts it with alternatives such as rhino_save or rhino_save_copy. The path-resolution rules are useful operational guidance, but they do not address when to choose this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_save_copyA
Save a copy of the current document without changing the active file path.
Args:
controller: RhinoController instance.
file_name: Desired filename or full path for the copy.
folder: Optional folder override.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | ||
| file_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does mention the important side-effect of not changing the active file path, but it does not explain behavior around overwriting, file extension handling, or the structure of the returned command result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the core purpose stated immediately and parameter explanations kept brief. No redundant or filler content is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential invocation context, including the optional folder and the return type ('Dict with command result'). Since an output schema exists, the lack of detailed return field explanations is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Each parameter is described beyond a bare name: controller is identified as the Rhino instance, file_name as the desired filename or path, and folder as an optional override. Since the schema has no parameter descriptions, the tool description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save a copy'), the target ('current document'), and the key distinction ('without changing the active file path'). This effectively differentiates it from related tools like rhino_save and rhino_save_as.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when a copy is needed while preserving the current file path. It does not explicitly name alternatives, but the side-effect constraint provides practical usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_save_script_to_fileB
Save a Python code string to the temp scripts folder and return its path.
Args:
code: Python source code to save.
filename: Filename (e.g. 'my_script.py'); .py extension added if missing.
Returns:
Dict with 'success', 'path' of saved file.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the destination (temp scripts folder), the return dict shape ('success', 'path'), and the .py auto-extension behavior. However, it does not state whether an existing file with the same filename is overwritten, whether saved scripts persist across sessions, or what failure conditions set success=false – side-effect details that matter for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a one-line purpose statement followed by a minimal Args/Returns breakdown. Every sentence adds information, with no filler or repeated schema content. The linear structure makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the Return statement is partly redundant, but the description still omits operationally relevant context: what the temp scripts folder is for, how the returned path would be consumed by another tool, and robustness details like collision handling. For a simple two-param save utility this is adequate but not complete – an agent still has to guess the intended workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully document the parameters, and it does. 'code' and 'filename' are both explained, and filename gets an example and the valuable. py extension auto-append detail. This meaningfully adds to what the bare input schema provides aside from the param names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb plus resource ('Save a Python code string to the temp scripts folder') and a concrete outcome ('return its path'). This cleanly separates it from siblings like rhino_run_python, rhino_execute_python, and rhino_run_script_file, which execute code rather than persist it. It does not explicitly name those siblings, but the save/destination-outcome framing leaves little ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description never mentions that a saved script may later be run via rhino_run_script_file (or an execution tool), nor does it give conditions where direct execution (rhino_execute_python) would be preferable. An agent gets no help choosing this tool over its closely related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_scaleB
Scale objects non-uniformly about a centre.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, which already alerts the agent to a mutation. The description adds that scaling is non-uniform and about a center, which is behaviorally useful. However, it does not disclose side effects such as what happens to object selections, whether copies are made by default, or implications for dependent objects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It front-loads the core behavior and key distinction. It could be slightly more informative but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no output schema details and 0% schema description coverage, the description is minimally adequate. It states the core operation but omits practical context such as which objects are affected, how the center point is interpreted, and whether make_copy defaults to false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the input schema contains self-describing parameter names (center, factor_x, factor_y, factor_z, object_ids, make_copy, doc_id) and the Point3dModel has its own description. The tool description adds no parameter meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Scale objects non-uniformly about a centre' clearly states the verb (scale), resource (objects), and key characteristic (non-uniformly about a centre). It is distinguishable from sibling scale tools like rhino_scale_1d and rhino_scale_2d, though it doesn't explicitly name 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?
The description implies usage for non-uniform scaling and differentiates from uniform scaling by using 'non-uniformly', but it does not explicitly state when to use this tool versus siblings (e.g., rhino_scale_1d, rhino_scale_2d, rhino_scale_nu). No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_scale_1dB
Scale selected objects in one direction (1-D scale).
The user must pick the origin and scale direction interactively.
Args:
controller: RhinoController instance.
factor: Scale factor.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal an important interactive behavior: the user must pick origin and direction. However, it does not mention consequences of no selection, whether the operation mutates the original objects, or any undo/reversibility information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main action, followed by the important interactive requirement. The Args/Returns formatting is clean, though the controller line is extraneous since controller is not a schema 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 simple one-parameter tool with an output schema, the description covers the essential behavior: selected objects, interactive origin/direction picking, and the scale factor. It is slightly lacking in edge-case guidance, but overall sufficient for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple 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, but it only says 'factor: Scale factor.' This adds minimal meaning beyond the schema's 'Factor' title and default value. It also mentions a 'controller' argument that is not present in the input schema, which may confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scales selected objects in one direction (1-D scale), which is a specific verb and resource. It differentiates from uniform or 2-D scaling via 'one direction', though it does not explicitly name sibling alternatives like rhino_scale or rhino_scale_2d.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 makes clear that the user must pick the origin and scale direction interactively, which is key usage context. However, it does not explicitly state when to use this tool over rhino_scale, rhino_scale_2d, or rhino_scale_nu, leaving the selection among siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_scale_2dC
Scale selected objects in two directions simultaneously (2-D scale).
Args:
controller: RhinoController instance.
factor: Scale factor applied to both directions.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only states the operation and the factor's directionality. It does not disclose reversibility/undo behavior, what happens with no selection, the base point or plane used, or whether the transformation is destructive to the selected objects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but the Args block lists a 'controller' parameter that is absent from the input schema, which is noise and could confuse an agent. Otherwise, the formatting is compact and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, this is incomplete: it does not explain how a selection is made, what happens when no objects are selected, where the scale base point is, or which two directions are used. The generic 'Dict with command result' return note adds little, though an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a numeric factor with a default, while the description adds the key semantic that the factor is applied to both directions. This compensates for the 0% schema description coverage; no parameter constraints or base-point implications are given, which is a minor 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 lead line uses a specific verb and resource—'Scale selected objects in two directions simultaneously'—and labels it as 2-D scale, which distinguishes it from rhino_scale_1d and the generic rhino_scale. It does not explicitly name its siblings, but the directional qualifier is enough to prevent an obvious mis-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?
The only usage cue is that it acts on 'selected objects'; there is no statement about when to choose 2-D scaling over rhino_scale_1d, rhino_scale_nu, or rhino_scale, and no mention of prerequisites such as an active selection, cplane, or base point. An agent is left to infer invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_scale_nuA
Scale selected objects non-uniformly along X, Y, Z.
Args:
controller: RhinoController instance.
x_factor: Scale factor in X.
y_factor: Scale factor in Y.
z_factor: Scale factor in Z.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| x_factor | No | ||
| y_factor | No | ||
| z_factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it does state the core effect (per-axis scaling), the affected objects ('selected objects'), and the return type ('Dict with command result'). It does not disclose side effects such as permanent model mutation, undo reliance, integer-only factor restriction, or behavior when nothing is selected, which is a meaningful gap for a mutating operation. The disclosure is honest but far from comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads a one-sentence purpose statement and then uses a compact, scannable Args/Returns layout. The three 'Scale factor in X/Y/Z' lines are slightly redundant with the parameter names, and the controller line adds noise, but there is no padding or unnecessary elaboration beyond that.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 transform with defaults on every parameter and an output schema present, the description covers purpose, per-axis parameter semantics, and return type. It falls short by not differentiating among the scale siblings (rhino_scale, rhino_scale_1d, rhino_scale_2d, rhino_cmd_scale), not stating the selection prerequisite explicitly, and carrying the controller parameter mismatch. Given the large sibling list, a single routing sentence would meaningfully improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by defining each property with 'x_factor: Scale factor in X' and analogous lines for Y and Z. However, the Args block also documents 'controller: RhinoController instance,' which does not exist in the input schema, creating a mismatch that could lead an agent to invent an unsupported argument. It also leaves value semantics unstated, such as 1 being identity and lower values shrinking, and does not address the schema's integer restriction on factors.
Input schemas describe structure but not intent. Descriptions should explain 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, 'Scale selected objects non-uniformly along X, Y, Z,' names a specific verb (scale), resource (selected objects), and scope (three independent axes). The qualifier 'non-uniformly' explicitly differentiates it from sibling tools such as rhino_scale (uniform), rhino_scale_1d, and rhino_scale_2d. This is a precise, distinguishing statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage context — per-axis non-uniform scaling — and states the target is 'selected objects,' which hints at a selection precondition. However, it never explicitly says when to prefer this tool over rhino_scale_1d, rhino_scale_2d, or rhino_cmd_scale, nor does it give any exclusions or alternative routing. An agent must infer the selection criteria from the 'nu' suffix and the word 'non-uniformly.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_scatterA
Scatter count copies of a source inside a 2-D AABB with optional Z-rotation jitter.
The boundary is interpreted in world XY; Z is taken from
``boundary_min.z``. Use ``seed`` for deterministic output.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint: false, so the description carries the burden of explaining side effects. It adds useful behavioral details about the XY boundary interpretation and Z positioning, but it does not explicitly state that new objects are created in the document or whether the source remains unchanged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, followed by two crucial usage clarifications. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a nested schema and detailed property descriptions, the description covers the essential behavioral nuances that are not obvious from the schema: boundary plane interpretation, Z source, and seeding. It does not discuss output, but an output schema exists, so that is less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents parameters well, but context signals indicate low schema description coverage. The description adds meaningful cross-parameter semantics, especially the world-XY boundary handling and Z taken from boundary_min.z, plus the deterministic seed note. It does not fully compensate for all parameters but provides the most important operational details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation: scatter copies of a source object inside a 2-D AABB, with optional Z-rotation jitter. It is specific about the resource and geometry, though it does not explicitly distinguish itself from sibling array/replicate tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool's use case and gives important usage context: boundary is in world XY, Z comes from boundary_min.z, and seed enables deterministic output. However, it does not mention when to prefer this over alternatives like rhino_array_linear or rhino_replicate_along_curve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_schedule_by_layerBRead-only
Aggregate objects per layer with optional filter and sublayer merging.
Returns ``rows`` (one entry per layer) plus a ``totals`` block.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the safety profile is established. The description adds useful context about the return structure ('rows' plus 'totals') and the sublayer-merging behavior, but does not go deeper into filtering semantics, defaults, or field behavior. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, front-loaded with the core operation, and contains no filler. The return-structure note is clearly separated and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema plus a read-only annotation, but the description still omits key selection context among scheduling siblings and does not describe the available computation fields. An agent evaluating this tool alongside rhino_schedule_by_material and rhino_schedule_by_user_text would not have enough to choose correctly or invoke it properly.
Complex tools with many parameters or behaviors need more documentation. Simple 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% by the given signal, so the description needed to compensate. It only loosely maps to layer_filter and include_sublayers via 'optional filter' and 'sublayer merging' but says nothing about doc_id, fields, or computed quantities. This is insufficient for an agent to know how to set the arguments correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete operation ('Aggregate objects per layer') and identifies key options ('optional filter', 'sublayer merging'), so an agent can tell this is a layer-based aggregation/scheduling tool. It does not explicitly distinguish it from sibling tools like rhino_schedule_by_material or rhino_schedule_by_user_text, but the layer focus 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?
There is no explicit when-to-use guidance or mention of alternatives. Given closely related siblings such as rhino_schedule_by_user_text, rhino_schedule_by_material, rhino_layer_list, and rhino_layer_count, the description leaves the agent to infer when layer-based aggregation is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_schedule_by_materialARead-only
Aggregate objects grouped by assigned material name.
Standalone treats ``MaterialIndex == -1`` (default material) as
'Default'. Bridge mode resolves each object's effective material via
Rhino's render content lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the tool is known to be non-destructive. The description adds valuable behavioral context: how the default material is handled in Standalone mode and how Bridge mode resolves effective materials via Rhino's render content lookup. This goes beyond the annotation without contradicting 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?
The description is compact and front-loaded with the core action. The mode-specific details are relevant and add precision without unnecessary verbosity. Every sentence contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and a read-only annotation, so return format and safety are likely covered elsewhere. However, the 'fields' parameter is a significant gap: without understanding its purpose or accepted values, an agent may not invoke the tool correctly for a desired aggregation. The description covers the material grouping concept but not the full input contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the 'fields' parameter, which is undocumented in the schema and has no default. While doc_id is partially described in the schema, the main semantic question of what fields should contain or how they affect aggregation is left entirely to the agent. Schema description coverage is low, so the description needed to compensate but did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool aggregates objects grouped by material name, with a specific verb and resource. It does not explicitly contrast with closely related siblings like rhino_schedule_by_layer or rhino_schedule_by_user_text, but the material grouping is clear enough to differentiate by intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the primary use case: aggregate objects by material. It provides mode-specific behavior (Standalone vs Bridge), but does not explicitly say when to choose this tool over schedule_by_layer or schedule_by_user_text, nor does it describe exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_schedule_by_user_textARead-only
Aggregate objects grouping by user_text[group_key] value.
Useful for BIM-style schedules: ``group_key='assembly_type'`` produces a
wall/window schedule, ``group_key='material'`` produces a material BOM.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already signals a safe, non-mutating operation. The description adds useful behavioral detail: objects are grouped by a user_text key and the result is schedule-like. It does not describe output shape or document filtering, but those are partially covered by the output schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one core behavior sentence followed by a focused example sentence. There is no filler, and the key semantics are front-loaded before the illustrative use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only aggregation tool with an output schema and simple parameters, this description is largely sufficient. It explains what the tool does and gives realistic BIM use cases. The main gap is not clarifying the distinction from dedicated siblings like rhino_schedule_by_material, and fields remains ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds valuable meaning for group_key through concrete examples, which goes beyond the schema's generic "user_text key to group by." However, it says nothing about the fields, value_filter, or doc_id parameters, and the schema itself leaves fields completely undescribed, so parameter coverage 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?
Description opens with a specific verb and resource: "Aggregate objects grouping by user_text[group_key] value." It clearly describes a schedule/aggregation operation keyed on arbitrary user_text, which distinguishes it from sibling schedule tools like rhino_schedule_by_layer and rhino_schedule_by_material. The BIM examples further reinforce exactly what the tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is useful for BIM-style schedules, with concrete group_key examples like assembly_type for wall/window schedules and material for a BOM. It does not explicitly state when not to use this tool or name alternatives such as rhino_schedule_by_material, but the intended usage is clearly conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_schedule_export_csvA
Write rows produced by any rhino_schedule_* tool to CSV.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint:false already indicates a write operation; the description confirms 'Write' without contradiction. However, it adds no behavioral detail beyond that: no mention of overwriting behavior, file creation requirements, error handling, or what happens with empty rows. Since annotations are minimal, the description carries the burden and fails to disclose these critical traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero redundancy. It front-loads the core purpose and resource. There is no wasted wording, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a schema that defines the three parameters (path, rows, columns) with descriptions, and an output schema exists. The description explains the high-level purpose and the source of rows, which is sufficient for basic understanding. However, it omits usage guidelines beyond the implicit link to schedule tools and does not mention potential side effects (e.g., file overwrites). Given the schema compensates for parameter details, the description is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description does not echo any parameter info. Although the schema itself provides descriptions for path and columns, the description only hints at 'rows' by linking to schedule tools. It does not explain the 'path' parameter or the 'columns' default behavior, leaving the agent to rely solely on the schema. This is a minimal contribution.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Write') and resource ('rows produced by any rhino_schedule_* tool' to CSV). It clearly identifies what the tool does and distinguishes it from other export tools (e.g., OBJ/STL exports) by explicitly scoping to schedule rows. This is a precise and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the correct usage: 'rows produced by any rhino_schedule_* tool' indicates this tool is for exporting schedule outputs. It provides clear context (use after a schedule tool) but does not explicitly state exclusions or alternatives (e.g., other export tools) or when NOT to use it. While not as explicit as naming alternatives, the context is sufficient for an agent to infer the right scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_screenshotA
Capture a viewport screenshot (bridge required).
With ``as_base64=True`` the response includes ``image_base64`` so
the LLM can inspect the render inline. The PNG is also written to
``path`` regardless, for the user to save/share.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, the description discloses that the PNG is always written to path and that image_base64 is optionally included for inline inspection. This is useful side-effect and return behavior; however, it does not mention overwrite behavior, permissions, or whether the bridge must already be active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise, front-loaded sentences with no filler. The core action, prerequisite, and the meaningful optional base64 behavior are all immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with the schema and output schema, the description covers the prerequisite, the always-written file side effect, and the inline inspection option. It does not explain what 'bridge required' entails or how the bridge is established, but that is a minor gap for selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage reported at 0%, the description must compensate for parameter semantics. It only clarifies path and as_base64 behavior; width, height, mime, and doc_id are not addressed in the tool description. This is only partial compensation for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: 'Capture a viewport screenshot.' This is clear and matches the name, but it does not explicitly differentiate from closely related siblings such as rhino_view_capture_to_file, rhino_viewport_image, or rhino_render_viewport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 use case: with as_base64=True the LLM can inspect the render inline, so the tool is useful when the model needs to see the viewport. It also notes a bridge prerequisite, but it never explicitly says when to prefer this tool over sibling capture/render tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_seamB
Adjust the seam location of a closed surface (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool is interactive, which is a meaningful behavioral trait. However, with no annotations provided, it fails to mention potential side effects like document modification, undo behavior, or whether the operation is destructive. The lack of detail leaves the agent unaware of the full impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two short sentences. It efficiently states the purpose and the parameter, with no unnecessary elaboration or filler. This is an ideal structure for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential facts: what the tool does and the return type. However, it omits details about the interactive nature (how the user interaction occurs) and any constraints or conditions. Given the tool's moderate complexity, the description is somewhat sparse and could benefit from additional context to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'controller', is described as a RhinoController instance. Since schema description coverage is 100%, the description adds little beyond what the schema already provides. The baseline score of 3 is appropriate because the parameter is adequately described in the schema and the description does not add significant new information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('adjust the seam location'), the object it operates on ('a closed surface'), and that it is interactive. This leaves no ambiguity about the tool's primary function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus other alternatives (e.g., rhino_rebuild_surface or rhino_reparameterize). No mention of conditions, prerequisites, or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_search_rhinoscript_functionsARead-only
Search RhinoScript functions by keyword or description.
Use this BEFORE writing any RhinoScript Python code to find correct
function names and signatures. Returns matching functions sorted by
relevance.
Example queries: "loft surface", "boolean union", "rotate object",
"create curve", "extrude".
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true, and the description adds complementary behavior: results are 'matching functions sorted by relevance' and the match is against keyword or description text. No side effects, rate limits, or edge behavior need disclosing for a read-only search; no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each with a distinct job: purpose, usage timing, return behavior, and query examples. The core action is front-loaded in the first sentence, and the example list is the only slightly padded part but earns its place by clarifying query phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with an output schema present, the description covers what it does, when to use it, what it returns, and how to phrase queries. The only gap is that the limit parameter and the nested args structure are not acknowledged in prose, but the schema carries that information adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, so the description must compensate for parameter meaning. It partially does by giving example queries ('loft surface', 'boolean union', 'rotate object'), which teach the expected query style, but it never mentions the limit parameter or the args wrapper, leaving that burden to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (Search), resource (RhinoScript functions), and matching mechanism (keyword or description). The RhinoScript scope clearly differentiates it from siblings like gh_components_search and rhino_get_rhinoscript_docs, and the stated goal of finding 'correct function names and signatures' pins down its exact job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 an explicit when-to-use: 'Use this BEFORE writing any RhinoScript Python code to find correct function names and signatures.' This is clear context, though it never names alternatives or states when not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sectionC
Slice the listed objects with a plane (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the action but does not disclose whether original objects are modified, whether new section curves are created on a layer, or what side effects occur. The 'bridge required' note adds a small environmental constraint, but annotations already indicate this is not read-only, so the description adds little behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence, front-loaded with the action, and no filler. It earns its place, though it sacrifices useful detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the operation's medium complexity and absence of parameter descriptions, the description is too thin. It omits behavior regarding original objects, output placement, prerequisites, and how the plane should be defined. The output schema covers return shape, but not the operational context an agent needs to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description carries heavy responsibility for explaining parameters. It only connects 'listed objects' to object_ids and 'plane' to the plane parameters; it does not explain plane_origin/plane_normal semantics or the doc_id parameter. The nested Point3dModel schema helps, but the main parameters remain under-described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Slice') and identifies the target resource ('the listed objects') and mechanism ('with a plane'), so an agent can understand the core operation. However, it does not explicitly differentiate this tool from close siblings like rhino_cmd_section or rhino_drawing_section_cut.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'bridge required' gives a prerequisite but no guidance on when to choose this tool over alternatives. There is no mention of applicable object types, when a section is preferable to a contour/drawing section, or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_section_at_axisA
Slice a surface (or Brep / mesh in bridge) into count section curves.
Standalone supports ``axis='u'`` and ``axis='v'`` (surface isocurves).
World-axis slicing (``axis='x'/'y'/'z'``) requires bridge mode.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only include readOnlyHint=false), the description discloses key behavioral constraints: bridge mode extends supported geometry to Breps and meshes, and world-axis slicing is unavailable in standalone mode. This is meaningful behavioral context that the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core operation, and the following sentences add only essential mode constraints. Every sentence earns its place without 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?
The description covers the most important operational constraint (bridge vs. standalone) and input-type differences, while the output schema fills in return-value expectations. It could be slightly more complete by noting the relationship to similar tools, but nothing critical 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?
The description adds value over the schema by explaining the mode-dependent meaning of the 'axis' parameter and clarifying that 'count' controls the number of section curves. It reinforces the object_id semantics already present in the schema, though it does not need to restate every parameter because the schema already documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Slice a surface ... into section curves') and identifies the resource types (surface, Brep, mesh in bridge), making the tool's function immediately clear. It also distinguishes the axis options and mode constraints, which helps separate it from related sectioning tools like rhino_section and rhino_contour.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when standalone mode supports 'u'/'v' axes and that world-axis slicing requires bridge mode, providing essential context for correct usage. It does not explicitly name alternative tools or exclusion criteria, but the mode guidance is strong enough to route an agent effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_allA
Select all objects in the document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It states the core action plainly, but does not disclose whether the selection replaces or appends to the current selection, whether hidden or locked objects are included, or that invoking it mutates selection state which affects subsequent operations. For a zero-parameter tool the basic behavior is covered, but the semantic edge cases are left open.
Agents need to know what a tool does to the 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 seven-word sentence that front-loads the action verb and scopes the target. Every word earns its place, and no elaboration would improve it for a parameterless utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero-parameter signature, the simple scope of the operation, and the presence of an output schema, the description is nearly complete. The only gap is the lack of detail on selection semantics (whether prior selections are cleared and how hidden/locked objects are treated), which could affect an agent's expectations in a multi-step workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so there are no parameter semantics to clarify. Per baseline, a 0-parameter tool scores 4 because nothing is left undocumented. No deduction is warranted since there is literally nothing a description could add about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair: 'Select all objects in the document.' The scope qualifier 'all objects' clearly differentiates it from the many selection siblings like rhino_sel_by_type, rhino_sel_by_color, and rhino_object_select without needing to name them. It falls short of 5 because it doesn't explicitly name any sibling it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The sibling list contains roughly forty selection-related tools (rhino_sel_by_type, rhino_sel_by_name, rhino_sel_layer, rhino_sel_none, rhino_sel_invert, rhino_object_select), yet the description gives no exclusions, no conditions, and no mention of alternatives, leaving the agent to infer routing entirely from naming conventions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_bad_objectsB
Select geometrically invalid (bad) objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Select' but does not state whether the command replaces the current selection, adds to it, what happens when no bad objects exist, or what criteria define 'geometrically invalid' in Rhino. This leaves meaningful behavioral traits unknown.
Agents need to know what a tool does to the 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, focused sentence with no filler. It front-loads the action and target, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-input selection tool, the description is minimally adequate and an output schema exists to cover return values. However, it omits practical context such as selection-state behavior, error conditions, and what 'bad' means, which an agent would need to confidently invoke and interpret the tool in a real workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain. The schema already exhaustively covers the empty input, and a baseline of 4 is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Select' and a concrete target: 'geometrically invalid (bad) objects.' It clearly communicates the tool's resource and action, though it does not explicitly contrast itself with the similar-sounding sibling rhino_check_bad_objects or other rhino_sel_* selection tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use this tool when you want to select invalid geometry. However, there is no explicit guidance about when to prefer it over alternatives like rhino_check_bad_objects, how it relates to selection cleanup workflows, or whether it should be paired with a subsequent operation such as deletion or repair.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_by_colorA
Select objects by display color.
Args:
color_rgb: Comma-separated RGB string, e.g. '255,0,0' for red.
| Name | Required | Description | Default |
|---|---|---|---|
| color_rgb | No | 255,0,0 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the selection criterion but does not reveal important behavior such as whether the current selection is replaced or added to, whether hidden/locked objects are included, or how display color is determined. This is a significant gap for a selection-modifying operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one clear sentence plus a parameter explanation. Every line earns its place, and the essential information is front-loaded. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description covers the basic purpose and parameter format. However, it omits usage guidance and key behavioral details about selection semantics, making it only minimally adequate for an agent to fully understand the tool's 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%, so the description must compensate. It fully explains the only parameter: 'Comma-separated RGB string, e.g. '255,0,0' for red.' This provides the format, example, and meaning, which the schema itself lacks.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Select objects by display color.' This clearly identifies the tool's function and the selection criterion, distinguishing it from siblings like sel_by_name or sel_by_type, although it does not explicitly name 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?
The description implies usage: use this when you need to select objects by their display color. However, it offers no guidance on when to prefer this over alternative selection methods (e.g., by name, type, layer) and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_by_nameB
Select objects by their name attribute.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only source of behavioral context. It discloses the selection action but omits important behavior: whether selection replaces or adds to the current selection, whether matching is case-sensitive or supports wildcards, and how locked/hidden objects are treated. For a selection tool this is a meaningful 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?
A single sentence with no filler. The action and criterion are front-loaded, and every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter selection tool this is minimally adequate, but the missing behavioral details (replacement semantics, matching rules) leave an agent uncertain about side effects. The presence of an output schema reduces the need to describe return values, but the description still under-specifies how the selection is applied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description only restates that the parameter is the name attribute. It does not clarify matching semantics, format of the name string, or whether multiple names can be supplied, so the agent receives little additional meaning beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states a specific operation ('Select objects') and the criterion ('name attribute'), making the tool's purpose immediately understandable. It distinguishes from sibling selection tools like rhino_sel_by_color and rhino_sel_by_type, though it does not explicitly name 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?
The intended use is implied: use this when objects should be selected based on their name. However, it gives no explicit guidance about when to prefer this over the many sibling selection tools, nor does it describe conditions such as exact matching, partial matching, or wildcard behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_by_typeA
Select objects by type.
Supported types:
'curve', 'surface', 'mesh', 'subd', 'point', 'polysurface',
'all_curves', 'line', 'polyline', 'arc', 'circle', 'ellipse',
'solid', 'extrusion', 'annotation', 'block', 'light', 'hatch'
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Select objects by type' only states the action; it does not disclose whether selection replaces existing selection, whether it adds to current selection, what happens when no objects match, or any document prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and the supported types are listed in a compact, scannable block 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 one-parameter selection tool with an output schema, the enumerated accepted values make the description sufficient to invoke. It only lacks a little contextual framing, such as how selection state is affected.
Complex tools with many parameters or behaviors need more documentation. Simple 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 object_type has no enum or description, but the tool description fully compensates by enumerating the acceptable values. An agent can pass a valid type string without inspecting the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Select objects by type') and then enumerates the exact supported type names. This clearly differentiates it from sibling selection tools like rhino_sel_by_color and rhino_sel_by_name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to prefer this tool over alternatives such as rhino_sel_by_name, rhino_sel_by_color, or rhino_sel_layer, and no when-not-to-use conditions. The only implied context is the name/description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_chainA
Select a chain of connected curves from the current selection seed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of explaining behavior. It does state that the tool selects a connected chain based on the current selection, which is meaningful. But it does not disclose whether the selection is replaced or extended, how branching is handled, or what happens if the current selection is empty or contains non-curves.
Agents need to know what a tool does to the 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, tightly worded sentence with no filler or redundant information. It front-loads the operation and clearly states the input condition without wasting tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 selection tool with an output schema available, the description is mostly complete: it names the action, the object type, and the selection seed. It could be more complete by explaining what 'chain' means geometrically and how the current selection is modified, but the low complexity makes the one-liner nearly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% description coverage, so there are no parameter details needed. The description still adds useful context by indicating the implicit state input ('current selection seed'), matching the baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb ('Select'), the resource ('a chain of connected curves'), and the input ('current selection seed'). It is specific enough to understand the core operation, but it does not explicitly distinguish itself from the similar sibling rhino_sel_connected, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from the current selection seed' provides clear context: the tool should be used when there is an existing selected curve to start from. However, it offers no exclusions or explicit comparison to alternative selection tools like rhino_sel_connected or rhino_sel_by_type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_connectedA
Select all objects connected to the currently selected object.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does communicate the central side effect: the selection is changed to include connected objects. However, it does not clarify whether the existing selection is replaced or extended, nor does it define what 'connected' means in Rhino terms, which is a moderate 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, front-loaded sentence with no filler or redundant phrasing. It states exactly what the tool does and nothing else, making it maximally efficient for its simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero-parameter, simple nature of the tool and the presence of an output schema, a long description is not necessary. However, the description leaves open important practical details such as the requirement of an existing selection and the exact postcondition of the selection set, so completeness is only adequate rather than thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so the description is not required to explain parameter behavior. With no parameters to document, this is effectively a baseline-4 case where no additional semantic detail is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Select') and a concrete resource ('all objects connected to the currently selected object'). This makes the tool's purpose immediately understandable and distinguishable from other selection-oriented siblings like rhino_sel_all or rhino_sel_by_type, even without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the key usage condition: there must be a currently selected object, and the tool expands the selection to connected objects. However, it does not explicitly state when to prefer this over similar selection tools such as rhino_sel_chain, nor does it mention any exclusions or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_duplicatesB
Select duplicate objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only says 'Select duplicate objects' and does not disclose whether the selection replaces the current selection, whether duplicates are determined by geometry and location, or whether the document is modified. The core behavior is stated, but critical behavioral details are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded and easy to parse. It could be slightly richer with behavioral context, but as a one-line definition it is appropriately compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description is minimally adequate for invocation. However, it does not explain what qualifies as a duplicate object or how the selection set is affected, which are meaningful gaps for an AI agent deciding whether to use this tool among many similar selection tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty, so there are no parameter semantics for the description to clarify. The 0-parameter baseline of 4 applies, and the description does not need to compensate for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Select duplicate objects.' This is clear and distinguishes this tool from sibling selection-related commands by the unique 'duplicate' criterion. However, it does not explicitly differentiate itself from other rhino_sel_* tools or elaborate on what counts as a duplicate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternative selection tools, no prerequisites, and no mention of exclusions or context. The description only states the action itself, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_selection_bboxDRead-only
Return the union bounding box of all objects in the document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contradicts the annotation title 'Bounding Box of Selection' by claiming it returns the bounding box of all document objects. While readOnlyHint is consistent with a read-only operation, the conflicting scope is a serious transparency failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and front-loads the action, so it is structurally concise. However, the sentence contains an inaccurate scope and therefore does not fully earn its place as written.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity and an output schema exists, so a long description is not required. But the key question—whether the bounding box is over selected objects or all document objects—remains unresolved, and no usage context is provided. This is a significant completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description never mentions the doc_id parameter or the 'active' default. With schema description coverage reported at 0%, the description needed to clarify document targeting but does not. The schema's own doc_id description provides some help, but the tool description adds none.
Input schemas describe structure but not intent. Descriptions should explain 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 names a concrete verb and resource, but it says 'all objects in the document' while the tool name and annotation title both say 'Selection'. This central scope mismatch is misleading: an agent cannot tell whether the tool operates on selected objects or the entire document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus siblings like rhino_bounding_box or rhino_cmd_bounding_box. The description also does not explain how selection is established or when a document-wide result would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_invertA
Invert the current selection using rhinoscriptsyntax.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It clearly states the core behavior, but does not disclose side effects or prerequisites, such as whether a current selection is required, what happens if nothing is selected, or that this only changes selection state and does not modify geometry. 'Using rhinoscriptsyntax' is an implementation note, not a behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence with no filler. The key action 'Invert the current selection' is front-loaded and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, single-action tool, the description is nearly complete. It explains the core operation. Minor gaps exist around edge cases (empty selection, whether the operation is safe to run on all object types), but the simplicity of the tool means the description is adequate without those 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?
The input schema has zero properties, so there are no parameter semantics to clarify. The baseline of 4 applies because the description adds no parameter information and none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Invert the current selection'. This is unambiguous and clearly distinguishes this from siblings like rhino_sel_all or rhino_sel_none by describing the exact operation rather than just a name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: an agent would use this when it wants to invert the current selection. However, there is no explicit guidance about when not to use it, or how it compares to alternative selection tools such as rhino_sel_all or rhino_sel_by_type. The description gives no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_lastA
Re-select the previously selected set of objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It clearly communicates that the tool changes the selection state, but it does not mention edge cases such as replacing the current selection or behavior when no previous selection exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes directly to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, low-complexity operation with an output schema, this description is complete enough for an agent to invoke the tool correctly. Return-value details are not needed because the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and full schema coverage, so there is no parameter information for the description to add. A baseline of 4 is appropriate for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 're-select,' and a precise resource, 'the previously selected set of objects.' This clearly distinguishes it from sibling selection commands such as rhino_sel_all or rhino_sel_none.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 but not explicitly contrasted with alternatives. An agent can infer this tool restores the last selection, but the description does not name sibling tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_layerC
Select all objects on a specific layer.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior. It only says 'Select all objects on a specific layer' and gives no detail on whether the current selection is replaced, whether the layer name must already exist, or whether selection is additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately states the action and the target, which is appropriate for a simple one-parameter selection tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a minimal selection tool with one parameter, the description is minimally viable. However, because there are no annotations and no explanation of selection side effects or layer-name expectations, the context is not fully complete despite the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for documenting layer_name. It only says 'on a specific layer,' which confirms the parameter identifies a layer but does not clarify matching behavior, exact-name requirements, or case sensitivity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Select all objects') and the resource/criterion ('on a specific layer'). It is easy to distinguish from layer-management tools like rhino_layer_list or object-movement tools like rhino_object_move_to_layer, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus related selection or layer tools such as rhino_sel_by_name, rhino_layer_isolate, or rhino_object_move_to_layer. The intended context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_noneA
Deselect all objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. 'Deselect all objects' accurately describes the full behavioral contract: it clears the current selection with no other side effects implied. It does not discuss undo or empty-selection behavior, but these are not significant gaps for such a trivial 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?
Three words with no filler. Every word is necessary and the description is front-loaded with the key information. It could not be more concise while remaining clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, single-purpose tool with an output schema present, the description is fully self-contained. It states both the operation and the complete scope ('all objects'), leaving nothing essential unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage, so the schema already communicates all input information. This is the baseline-4 case for parameterless tools; no additional parameter description is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Deselect' with the resource 'all objects', making the operation unambiguous. It is easily distinguished from sibling selection tools such as rhino_sel_all, rhino_sel_invert, and rhino_object_select because none of them express the inverse operation of clearing the 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?
The description directly states its use case: clear the selection of all objects. It does not name alternatives, but for a zero-parameter selection-clearing command, the context is clear and there are no exclusions or prerequisites to document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sel_small_objectsB
Select objects smaller than the given tolerance.
Args:
tolerance: Maximum bounding box size threshold.
| Name | Required | Description | Default |
|---|---|---|---|
| tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains the basic selection criterion but omits key details such as whether the selection replaces or adds to the current Rhino selection set, what happens when no objects match, or any side effects on the document. This is a significant gap for a selection-mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact and front-loaded: the core action appears first, followed by a single parameter definition. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter selection helper with an output schema present, the description provides the essential invocation details. However, it misses selection-set behavior and usage context among many sibling tools, leaving a real but moderate gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by defining tolerance as 'Maximum bounding box size threshold.' This adds meaning beyond the schema's bare number type and default value. It could be more precise about which bounding-box dimension is used, but it is sufficient for basic invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Select objects smaller than the given tolerance.' It clearly identifies this as a selection-by-size tool with a bounding-box threshold. It does not explicitly differentiate it from the many sibling selection tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternative selection tools such as rhino_sel_by_type, rhino_sel_all, or rhino_sel_by_name. The selection criterion is implied, but no explicit alternatives, exclusions, or context for choosing this tool are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_background_colorA
Set the viewport background color via a Python script.
Args:
r, g, b: RGB color components (0-255).
| Name | Required | Description | Default |
|---|---|---|---|
| b | No | ||
| g | No | ||
| r | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and the 'via a Python script' mechanism, but does not clarify whether the change affects the active viewport or all viewports, whether it persists, or whether it impacts rendering output. For a mutation-style tool, this lacks important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: one front-loaded purpose sentence followed by a minimal parameter list. Every word earns its place and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter setter, the description is mostly adequate: it conveys purpose and parameter semantics. The gaps are the missing viewport targeting scope (active vs all), persistence, and whether the change affects rendering. One or two clarifying sentences 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?
With 0% schema description coverage, the description fully compensates by documenting all three parameters (r, g, b), explaining they are RGB color components, and specifying the valid 0-255 range. This is precisely the information an agent needs to construct valid input values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Set') and resource ('viewport background color'), making the tool's purpose immediately clear. This distinguishes it from related sibling tools like rhino_environment_set and rhino_display_mode_set, which target different aspects of the viewport/rendering environment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 description: an agent would know to use this tool when it wants to change the viewport background color. However, there is no explicit when-to-use guidance, no mention of prerequisites (such as an active viewport), and no comparison with alternative or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_control_pointsC
Replace control points of a NURBS curve or surface.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no meaningful annotations beyond a title, so the description carries the burden of behavioral disclosure. 'Replace' implies mutation, but the description does not state that this modifies the object in place, whether it is destructive/undoable, what happens on count mismatch, or any side effects. The schema clarifies the point-count constraint, but the description itself adds little behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler. It front-loads the action and target resource. This is appropriately concise for the operation's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutating tool with no safety annotations, the description is too thin. It lacks usage context, preconditions, exclusions, and behavioral caveats. The schema covers parameters, but the description does not adequately help an agent decide when to invoke this tool or what to expect beyond a simple replacement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for points, weights, and object_id, including the requirement that points have the same count and order. The tool description adds no additional parameter meaning. Since schema coverage is effectively high, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Replace control points of a NURBS curve or surface.' This is clear and aligns with the tool name. It does not explicitly distinguish itself from sibling tools like rhino_add_control_point or rhino_remove_control_point, but 'replace' conveys a distinct operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of when to choose this over rhino_add_control_point, rhino_remove_control_point, or rhino_set_point_weight. Context must be inferred entirely from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_cplaneC
Set the construction plane origin for the specified viewport.
Args:
controller: RhinoController instance.
view: Viewport name (Perspective, Top, Front, Right, etc.).
origin_x: X coordinate of the new CPlane origin.
origin_y: Y coordinate of the new CPlane origin.
origin_z: Z coordinate of the new CPlane origin.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Perspective | |
| origin_x | No | ||
| origin_y | No | ||
| origin_z | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure burden. It says the CPlane origin is set, but does not explain side effects, coordinate reference, scope beyond origin, required Rhino state, or reversibility. The docstring also lists a 'controller' argument that is not present in the input schema, which is confusing and reduces transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably compact and front-loaded with the core purpose. However, the 'controller: RhinoController instance' line does not map to any schema parameter and adds confusion rather than value, and the 'Returns: Dict with command result' line is almost tautological. Overall it is structured, but not 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 mutating command with no annotations, the description omits important context: coordinate system/units, whether the origin is world-relative or CPlane-relative, what happens to the active construction plane, and whether an open document or active Rhino controller is required. The presence of an output schema reduces the need to describe return values, but the behavioral and environmental gaps remain significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by defining every exposed parameter: 'view' as a viewport name with examples, and origin_x/y/z as coordinates of the new CPlane origin. This adds real meaning beyond the bare integer/string types. The unrelated 'controller' entry is a blemish, but the majority of parameter semantics are clearly supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, unambiguous action: 'Set the construction plane origin for the specified viewport.' This clearly identifies the resource (CPlane origin) and scope (a named viewport), which helps distinguish it from view-changing or object-transform tools. It does not explicitly contrast with siblings like rhino_origin_set or rhino_set_view, so it narrowly misses a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives, nor any mention of prerequisites or exclusions. The description only states what the tool does, leaving the agent to infer when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_display_modeA
Set the active viewport display mode.
Args:
mode: One of Wireframe, Shaded, Rendered, Ghosted, Raytraced,
ArtisticRendering, Pen, Technical.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Shaded |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral disclosure burden. It does state that the active viewport's display mode is changed and enumerates the legal modes, which is reasonable for a simple viewport setter. However, it does not mention persistence, whether geometry is unaffected, or how invalid mode values are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, stating the primary purpose in the first sentence and then providing the necessary parameter values in a clear list. There is no redundant filler or repetition of schema field titles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 setter with an output schema, the description covers the essential information: what is affected, the valid mode choices, and the active-viewport scope. It is sufficiently complete for straightforward invocation, though it could benefit from a note distinguishing it from similar display-mode tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only declares a string mode with a default value and no enum, so the description adds significant value by listing the exact accepted values: Wireframe, Shaded, Rendered, Ghosted, Raytraced, ArtisticRendering, Pen, and Technical. It does not explain each mode's visual meaning, but the names are largely self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: set the active viewport display mode, with a specific resource and a specific list of accepted values. However, it does not differentiate this tool from the sibling rhino_display_mode_set, which appears to have the same or very similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as rhino_display_mode_set, rhino_set_view, or rhino_viewport_preview. The description does not mention preconditions, when this setting is appropriate, or when another tool should be chosen instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_document_textA
Store a document-level key/value string (persists in the .3dm file).
Args:
key: Key name.
value: Value string.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose that the value persists in the .3dm file and that the operation stores data, which is useful. However, it does not mention what happens when the key already exists (overwrite vs. error), whether a save is required, or any side effects beyond persistence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-sentence purpose statement followed by two one-line argument explanations. There is no filler, and every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-string-parameter setter with an output schema, the description provides the essential purpose, persistence detail, and parameter roles. The only notable gap is overwrite behavior for an existing key, which is a minor omission for this kind of key/value operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section adds minimal semantic labels: 'key: Key name' and 'value: Value string'. These clarify the role of each parameter but largely restate the schema's string types and titles. With 0% schema description coverage, this is the only semantic guidance, and it is just barely sufficient for such simple parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and scope: 'Store a document-level key/value string'. It clearly identifies the resource (document-level key/value store) and even notes persistence in the .3dm file. This is unambiguous and distinguishable from object-level or user-text tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'document-level' implies when this tool is appropriate, distinguishing it implicitly from user-text or object-level tools. However, it never explicitly names alternatives like rhino_set_user_text or rhino_get_document_text, so the agent must infer the when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_gridB
Configure viewport grid settings.
Args:
controller: RhinoController instance.
grid_snap: Snap spacing size (default 1.0).
minor_gridlines: Number of minor grid lines (default 10).
major_gridlines: Number of major grid lines per minor (default 10).
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_snap | No | ||
| major_gridlines | No | ||
| minor_gridlines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only discloses that the tool 'configures' settings (implying mutation) and returns a result dict. It omits whether changes persist, which viewport is affected, and what happens to grid settings not specified. The docstring also lists a 'controller' argument that the input schema does not accept, an inconsistency that could mislead an agent.
Agents need to know what a tool does to the 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 summary line is front-loaded and the Args/Returns structure is scannable. However, the 'controller: RhinoController instance' line is wasted space for a parameter the schema does not accept, and the Returns line adds little since an output schema already exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple config tool with zero required parameters and an output schema, the description covers purpose, all parameter meanings, and return type. It leaves real gaps, however: it doesn't say which viewport is configured, whether omitted settings persist or reset, or how this relates to grid visibility and snap siblings. The phantom controller parameter further undermines 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%, and the description compensates fully by giving each of the three schema parameters semantic meaning: snap spacing size, number of minor lines, and number of major lines per minor. The 'per minor' clarification is especially valuable since the schema only provides names and types. Minor deductions for documenting a phantom 'controller' parameter and quoting a default (1.0) that differs from the schema default (1).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line 'Configure viewport grid settings' states a specific verb and resource, making the core action clear. It doesn't, however, differentiate from grid-related siblings like rhino_toggle_grid (grid visibility) or rhino_set_snap (snap behavior), so an agent must infer the boundary between configuring grid metrics and toggling grids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance about when to use this tool versus alternatives. There is no mention of rhino_toggle_grid for showing/hiding the grid or rhino_set_snap for snap controls, nor any conditions or prerequisites such as an open document or active viewport.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_object_colorA
Set the display color for selected objects.
Args:
r, g, b: RGB color components (0-255).
use_layer_color: If True, reset to layer color instead of setting a custom color.
| Name | Required | Description | Default |
|---|---|---|---|
| b | No | ||
| g | No | ||
| r | No | ||
| use_layer_color | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core mutating behavior and usefully explains the use_layer_color mode ('reset to layer color instead of setting a custom color'). However, with no annotations provided, it leaves unstated what happens when no objects are selected, whether the color change is immediate and undoable, and whether it overrides an existing object color override.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the action and scope, followed by a minimal, no-filler parameter explanation. Every sentence adds value, and there is no repetition of schema titles or types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameter semantics are adequately covered and an output schema exists, so return values need not be described. Still, the definition lacks usage context: how the current selection is used, whether RGB values are ignored when use_layer_color=True, and how this tool differs from layer/material color alternatives. For a tool with no annotations, these are meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does so by explaining all four parameters: RGB components with a 0-255 range and use_layer_color as a reset-to-layer-color mode. It could clarify behavior when use_layer_color is true and RGB values are still supplied, but the default schema values and this explanation are adequate for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb 'Set', the resource 'display color', and the target 'selected objects'. This clearly distinguishes it from sibling tools like rhino_layer_set_color (layer-level color) and rhino_set_object_material (material assignment), so an agent can tell them apart 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?
No guidance is given about when to prefer this tool over rhino_layer_set_color, rhino_layer_color, or rhino_set_object_material. It also does not mention prerequisites such as needing an active selection in Rhino or when use_layer_color=True is the right choice versus simply using a layer color tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_object_layerB
Move all currently selected objects to the specified layer.
Args:
layer_name: Target layer name.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries all behavioral disclosure burden. It discloses the scope ('all currently selected objects') and the mutation (moving to a layer), but it does not say what happens if the layer does not exist, whether the layer is created automatically, whether an empty selection is an error, or whether the change is reversible. For a mutating one-parameter tool, this is a meaningful transparency 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 very brief and front-loaded: the first sentence immediately gives the action and scope. The Args section is largely redundant with the schema but harmless. It has no filler and is appropriately compact for such a simple tool, though the terseness contributes to missing behavioral 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?
The tool has only one parameter and the output schema is present, so the call shape is simple. Still, the description omits important contextual details such as whether an invalid or nonexistent layer errors or auto-creates, and it does not explicitly warn that selection must happen first. One or two additional sentences would make it complete enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the schema only provides the parameter name and type. The description adds only 'Target layer name,' which clarifies that the string identifies an existing destination layer rather than a new layer name. It does not specify exact-match behavior, naming constraints, or whether the layer must already exist, so it only minimally compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific operation: move all currently selected objects to a named layer, with the target layer identified by the required argument. This distinguishes it from generation and analysis tools. However, it does not distinguish it from the very close siblings rhino_move_objects_to_layer and rhino_object_move_to_layer, which appear to do the same thing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently selected objects' implicitly communicates a prerequisite: objects must be selected before calling. However, there is no explicit guidance about when to use this tool versus the other layer-related siblings, no mention that the layer must already exist, and no exclusions or fallback behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_object_materialC
Assign a named render material to currently selected objects.
Args:
material_name: Name of the render material.
| Name | Required | Description | Default |
|---|---|---|---|
| material_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the operation assigns a material but does not reveal whether existing material assignments are overwritten, whether the material is created if missing, how the tool behaves with no selection, or whether the action is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action, making it easy to scan. The Args block is somewhat redundant given the schema already defines material_name, but it does not introduce meaningful bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple with a single parameter, the description lacks important operational context: selection is a stated requirement but not framed as a precondition, the relationship to material creation is unclear, and the abundance of material-related sibling tools makes the lack of differentiation a real usability gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero description coverage for material_name, and the description only repeats the parameter name with the phrase 'Name of the render material.' It adds no guidance about valid values, whether the material must already exist in the document, naming conventions, or how the parameter maps to a specific material.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Assign') and resource ('named render material to currently selected objects'), so an agent can tell what action is performed. However, it does not differentiate itself from closely related sibling tools like rhino_material_assign or rhino_assign_material_to_object, which appear to serve the same or overlapping purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the operation applies to 'currently selected objects,' which gives some usage context, but it provides no guidance on prerequisites (objects must be selected), whether the material must already exist, or when to prefer this tool over material-related siblings. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_object_nameA
Set the name attribute on all currently selected objects.
Args:
name: Name string to assign.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden: it clearly discloses that this mutates the name attribute of every object in the current selection. It does not mention whether existing names are overwritten, how an empty selection is handled, or whether the operation is undoable, but the core side effect is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the main behavior, and the Args section is minimal and relevant. Every line contributes information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter setter, the description covers the core operation, scope, and parameter meaning, and an output schema is present. The main missing context is the selection prerequisite and the behavior when nothing is selected, which is relevant to 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%, and the description compensates with an Args line that defines 'name' as the name string to assign. This connects the single parameter to the action, which is sufficient for a one-parameter setter, although it adds no constraints such as uniqueness or formatting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('set'), a target resource ('name attribute'), and the exact scope ('all currently selected objects'). This distinguishes it from sibling getters like rhino_get_object_name and other attribute setters such as rhino_set_object_layer or rhino_set_object_color.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operational context is implied: it applies to currently selected objects, so the agent can infer a prerequisite of having an active selection. However, it does not explicitly state when to use this tool versus alternatives, nor does it describe the no-selection case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_osnapB
Set active object snap modes.
Args:
controller: RhinoController instance.
modes: List of osnap mode names to enable, e.g.
['End', 'Mid', 'Cen', 'Int', 'Near', 'Point'].
Pass an empty list to disable all.
Defaults to ['End', 'Mid', 'Cen', 'Int', 'Near'].
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| modes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose key behavior: it enables specific snap modes, disables all on empty list, and defaults to a standard set. However, it does not clarify whether the current snap modes are replaced or augmented, or whether object snapping must be globally enabled for this to take effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and organized with Args/Returns sections, and the main purpose is front-loaded. The mention of 'controller: RhinoController instance' is unnecessary given the schema, and the docstring formatting is a bit verbose, but overall the size is appropriate for the 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?
The tool has no annotations, minimal schema detail, and 0% schema description coverage, so the description must be nearly self-sufficient. It covers modes and defaults well, but the schema type mismatch for 'modes' and the undocumented 'controller' parameter leave an agent unable to reliably construct a valid call. It also does not clarify the relationship with the sibling 'rhino_set_snap'.
Complex tools with many parameters or behaviors need more documentation. Simple 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 fully explain the parameters. It gives examples and defaults for 'modes', but the schema declares 'modes' as a string while the description calls it a list. It also mentions a 'controller' parameter that is absent from the schema, creating ambiguity about how the tool should actually be invoked.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set active object snap modes.' This clearly identifies the tool's function. However, it does not differentiate it from the sibling tool 'rhino_set_snap', which appears to have overlapping purpose, so it cannot receive 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage guidance: example mode names, the effect of an empty list ('disable all'), and the default mode set. This is clear practical context. It does not mention when to prefer this over alternatives like rhino_set_snap, 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.
rhino_set_point_weightB
Set the weight of selected NURBS control points (for rational surfaces/curves).
Args:
weight: Control point weight value.
| Name | Required | Description | Default |
|---|---|---|---|
| weight | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the operation is a 'set' action, implying mutation, but does not mention that it modifies the existing model, that it requires an active selection, what happens if no control points are selected, or the effect of changing weights. The description is too sparse for a mutating operation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core action stated immediately. The 'Args' line adds minimal new information and is somewhat redundant with the schema, but the overall length is appropriate and there is no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description is adequate at a basic level: it identifies the target, the action, and the parameter. However, it leaves important operational details implicit, especially the requirement for a current selection of control points and the acceptable range/meaning of weight. 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?
Schema description coverage is 0%, so the description must compensate. It only says weight is a 'Control point weight value,' which adds little beyond the parameter name and title. It does not explain valid ranges, the meaning of a weight relative to the default of 2, or the geometric effect of higher or lower weights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Set'), the resource ('weight of selected NURBS control points'), and the relevant geometry type ('rational surfaces/curves'). This distinguishes it from sibling tools like rhino_set_control_points, which sets positions rather than 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 description communicates that this acts on selected NURBS control points and is relevant to rational geometry, giving useful context. However, it does not explicitly state when to prefer this tool over related alternatives such as rhino_set_control_points or rhino_add_control_point, nor does it state preconditions like ensuring control points are selected first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_render_resolutionC
Set the document render output resolution.
Args:
width: Render width in pixels.
height: Render height in pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action—setting document render output resolution—without explaining persistence, side effects, or whether it affects already-generated output. It does not contradict any annotations, but lacks meaningful behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose is front-loaded in the first sentence, followed by a compact two-line parameter list. Each parameter line adds the useful 'in pixels' semantic, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter setter, the description is adequately sized but lacks workflow context: it does not mention whether this is a pre-render step, whether it persists across sessions, or how it interacts with other render settings. The output schema may clarify return values, but behavioral context remains absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It does add 'Render width in pixels' and 'Render height in pixels,' clarifying units, but it does not provide ranges, constraints, or parameter coupling, which would be valuable for a render configuration 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 'Set the document render output resolution,' giving a specific verb and resource. It clearly identifies the tool's role among render-related siblings such as rhino_render_preview and rhino_render_to_file, though it does not explicitly name them to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like rhino_render_setup, rhino_render_viewport, or rhino_render_to_file. It does not provide sequence hints, prerequisites, or exclusions, leaving the agent to infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_snapA
Enable or disable grid snap and set snap spacing.
Args:
controller: RhinoController instance.
enabled: True to enable snap, False to disable.
snap_size: The snap grid size (default 1.0).
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | No | ||
| snap_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly discloses the state-changing behavior (enable/disable snap, set spacing) and mentions a returned command result. However, it does not explain side effects, persistence, or how snap_size interacts with the enabled flag, though for a simple configuration tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main purpose. The Args and Returns sections are minimal and contain no filler. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity settings tool with two optional parameters and an output schema, the description covers the essential invocation details: what it does, parameter meanings, defaults, and return type. It could be more complete with explicit usage guidance, but nothing critical is missing for basic 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. It does: 'enabled' is explained as True/False toggles, and 'snap_size' is described as the snap grid size with a default of 1.0. The only minor issue is documenting a 'controller' argument that is absent from the input schema, which could cause slight confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Enable or disable grid snap and set snap spacing.' This clearly distinguishes it from related sibling tools like rhino_set_osnap (object snap) and rhino_toggle_grid (grid visibility).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when the user wants to control grid snap or its spacing—but it does not explicitly mention alternatives or state when not to use it. There is no comparison with rhino_set_osnap or rhino_set_grid, so the routing guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_unitsB
Set the document unit system.
Args:
controller: RhinoController instance.
unit_system: One of Millimeters, Meters, Centimeters, Inches, Feet, etc.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_system | No | Millimeters |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral disclosure burden. It only states that the tool sets the unit system and returns a dict; it does not mention side effects, whether the change persists, or whether it affects the active document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core purpose, and has no filler. Args and Returns sections are compact and add relevant 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 one-parameter setting tool, the description is adequate but incomplete. It lacks exact valid unit values, does not disambiguate from rhino_document_units_set, and provides no behavioral caveats. The output schema covers return value structure, but the overall context is minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, but the description compensates partially by enumerating example unit_system values: Millimeters, Meters, Centimeters, Inches, Feet. However, 'etc.' is vague, and the description mentions a 'controller' argument that is not present in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set the document unit system') with a specific verb and resource. However, it does not differentiate this tool from the sibling rhino_document_units_set, which appears to serve the same purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of rhino_document_units_set or any other unit-related tool. No context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_user_textB
Attach a key-value user text entry to an object.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: false, which signals a write operation. The description 'Attach' aligns with this and adds the semantics of adding a key-value entry to an object's user text. However, it doesn't disclose whether existing keys are overwritten, whether it creates a new user text dictionary, or any side effects. With annotations providing the write hint, the description adds moderate value but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the core behavior. It earns its place without unnecessary verbosity, though it could add a bit more detail (e.g., overwrite behavior) without becoming 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?
For a simple key-value write tool, the description covers the basics: attaching user text to an object. But with no output schema explanation needed, the main missing context is behavior for duplicate keys, whether empty values are allowed, and how doc_id routing works. The description is adequate but not complete enough for an agent to infer all edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. The description mentions a 'key-value user text entry' and 'an object', which maps to the required 'key', 'value', and 'object_id' parameters. However, it doesn't explain the optional 'doc_id' parameter or provide formats for the key/value. The description adds some meaning but doesn't fully compensate for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Attach a key-value user text entry to an object.' clearly states the action (attach), the resource (key-value user text entry), and the target (an object). It does not explicitly distinguish it from rhino_get_user_text or rhino_cmd_set_user_text, but the verb 'attach' and the sibling rhino_get_user_text indicate a write operation, so it's mostly clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a write operation for attaching user text to an object, but it doesn't explicitly state when to use this tool versus alternatives like rhino_cmd_set_user_text or rhino_bim_metadata_set. No exclusionary guidance is given, so an agent would need to infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_set_viewB
Set the active viewport to a standard view.
Args:
view_name: One of Top, Front, Right, Perspective, Back, Left, Bottom, Isometric.
viewport: Optional viewport name to target.
| Name | Required | Description | Default |
|---|---|---|---|
| viewport | No | ||
| view_name | No | Perspective |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the core action and parameter meaning; it does not disclose that this alters view state rather than model geometry, whether targeting a viewport makes it active, whether new viewports are created, or whether the operation persists. These gaps matter for a state-changing tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one purpose sentence followed by a minimal Args block. The first sentence is appropriately front-loaded, and the Args block earns its place by supplying enum values the schema lacks. The docstring formatting adds slight verbosity but no 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 simple two-parameter tool with an output schema, the description covers the core operation and both parameters. But it leaves ambiguity about the interaction between 'active viewport' and 'viewport to target' (does targeting switch the active viewport?), and it fails to disambiguate from the similarly named sibling rhino_view_set. These are clear gaps an agent would hit when selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. It enumerates the exact valid values for view_name (Top, Front, Right, Perspective, Back, Left, Bottom, Isometric) — information absent from the schema, which has no enums — and clarifies that viewport is optional. This adds real meaning beyond the bare string types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Set the active viewport to a standard view.' This clearly identifies the action and scope. However, it does not differentiate from the sibling tool 'rhino_view_set', which appears to describe the same operation, so it falls short of full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, exclusions, or references to alternatives. Given the enormous sibling list containing view-related tools such as rhino_zoom_extent, rhino_named_views, rhino_named_view_save, and the near-duplicate rhino_view_set, an agent receives no help choosing among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_shadow_projectB
Project objects' bounding-box corners along sun_vector to the ground plane.
Standalone produces a coarse 4-corner shadow polygon per object
(suitable for sketch-grade studies). Bridge mode emits accurate
wireframe-projection shadow polygons.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, so the description carries most of the behavioral burden. It discloses that the tool emits/creates shadow polygons and that standalone output is coarse while bridge output is accurate. It does not mention broader side effects such as where the new geometry is placed, whether existing shadows are replaced, or whether input objects are modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the primary operation, and contains no filler. Each sentence contributes distinct information, though the standalone/bridge sentence 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?
The description covers the core operation and output modes, and an output schema exists to explain return values. It is incomplete regarding side effects, usage prerequisites, and the meaning of bridge mode, which are important for an agent to call this tool 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% by the context signal, and the description adds little parameter-level help. It references sun_vector and objects' bounding-box corners in prose, but it does not explain the required object_ids, layer, doc_id, or ground_z parameters well enough to compensate for the missing schema-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific operation: project bounding-box corners along sun_vector onto the ground plane, producing shadow polygons. It further distinguishes between a coarse standalone result and an accurate bridge-mode result. However, it does not explicitly name or contrast sibling tools, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The standalone/bridge mode distinction implies when a user might want coarse sketch-grade results versus accurate wireframe shadows. It gives no explicit guidance about when to choose this tool over related sun/shadow tools, nor any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_shellCDestructive
Hollow a closed Brep, optionally leaving the listed faces open.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, but the description does not explicitly state that the operation modifies the original object or creates a new one. It also does not mention any side effects or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and is very concise, but its brevity sacrifices necessary detail, making it less helpful than it could 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?
Given the multiple parameters and an output schema, this one-sentence description is insufficient. It omits critical details about how to specify faces, thickness values, and what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any of the input parameters (e.g., object_id, thickness, open_face_indices) or how they affect the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core function: hollowing a closed Brep with an option to leave specific faces open. However, it does not specify which Brep or the intended result, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like rhino_boolean_difference or rhino_cap_holes. No mention of prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_show_dirB
Show the normal and/or curve direction of selected objects.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It says 'Show' and returns a 'Dict with command result,' but it does not disclose whether the direction display is a temporary viewport overlay, a toggle, or a persistent change, nor what happens when nothing is selected. This is thin for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line purpose is front-loaded and free of excess, and the Args/Returns boilerplate is short. The redundant 'controller' line slightly detracts, but overall the description is appropriately concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter display tool, the core action is stated, and the output schema exists so a generic 'Dict' return is less critical. Still, the description omits the selection prerequisite, whether it toggles off, and any viewport side effects, leaving an agent to infer those 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?
The input schema has zero parameters, and the baseline for no parameters is 4. However, the description mentions 'controller: RhinoController instance' under Args even though this parameter does not appear in the schema, which could confuse an agent into thinking it must supply an argument. This inconsistency reduces the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and identifies the resource as 'the normal and/or curve direction of selected objects,' which is clear and distinct enough from sibling tools like show_edges or flip. It does not explicitly differentiate itself from possible overlapping tools, but the action and target are 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 phrase 'of selected objects' implies the tool operates on the current selection, giving a hint about when it applies. However, the description does not state when to prefer this over alternatives, does not mention selection prerequisites explicitly, and provides no exclusions or fallback tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_show_edgesB
Highlight edges of selected surfaces by type.
Valid modes: Naked, Non-manifold, All.
Args:
controller: RhinoController instance.
mode: Edge type to display.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Naked |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'highlight edges' without describing side effects (e.g., whether it modifies selection, whether highlights persist, whether it is reversible, or if it requires specific display modes). The mention of a 'controller' argument hints at internal state but no behavioral details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose, then lists valid modes and arguments. The structure is clear with Args and Returns sections. No fluff or redundancy, though the Args section is slightly misleading because it includes a controller parameter not present in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple display tool but leaves gaps: it references a 'controller' argument not in the input schema, which could confuse an agent. It also does not explain how to clear the highlights or whether the tool operates on currently selected objects (assumed but not explicit). The output schema exists, so return details are not required, but the overall completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the 'mode' parameter (coverage 0%), so the description must compensate. It lists valid modes ('Naked, Non-manifold, All') and explains that mode is the edge type to display. This adds meaningful semantic information beyond the raw schema, though it does not explain the meaning of each mode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool highlights edges of selected surfaces by type, and lists valid modes (Naked, Non-manifold, All). This is a specific verb+resource. However, it does not explicitly distinguish it from similar sibling tools like rhino_display_show_edges or rhino_check_naked_edges, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to highlight edge types on selected surfaces) but provides no explicit guidance on when to use this tool versus alternatives such as rhino_check_naked_edges or rhino_display_show_edges. No exclusions or prerequisites are mentioned, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_show_endpointsB
Toggle display of curve endpoints.
Args:
show: True to show endpoints, False to hide.
| Name | Required | Description | Default |
|---|---|---|---|
| show | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether this affects selected curves, all curves, or the current document view, nor does it mention side effects, persistence, or prerequisites. The description mostly restates the parameter behavior rather than revealing additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the primary action, and includes a concise parameter explanation. Every sentence contributes useful information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-boolean tool, the description is adequate, but it omits important context such as whether the operation applies to selected objects or the whole document. The existence of an output schema reduces the need to document return values, but the missing scope/selection context leaves 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?
Schema description coverage is 0%, so the description must compensate. It does add meaning by explaining that show=True displays endpoints and show=False hides them. This directly clarifies the boolean parameter's semantics beyond the raw schema field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Toggle display of curve endpoints.' This distinguishes it from sibling tools like rhino_show_edges and rhino_show_dir by focusing specifically on curve endpoints. The term 'Toggle' is slightly imprecise since the parameter actually sets a state, but the Args text clarifies the intended behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It is only implied that one should use it when wanting to control curve endpoint visibility, but there is no explicit context or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_show_selectedC
Show all hidden objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only restates the surface action. It does not clarify whether the command acts on selected hidden objects or all hidden objects, nor what happens to locked objects, and the name/description mismatch leaves the actual behavior unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, so it is appropriately concise for a no-argument command. It loses a point only because the brevity omits the selection vs. all distinction that the tool name signals.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and has no parameters, the description is not complete enough on its own: it contradicts the tool name's 'selected' scope and provides no context about how visibility toggling interacts with current selection. A one-sentence description would be sufficient only if it resolved that ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so the description has no parameter-semantics burden. Per the 0-parameter baseline, this dimension is adequately satisfied.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource ('Show all hidden objects'), which is more specific than a tautology. However, the tool name 'rhino_show_selected' implies it operates on selected hidden objects, while the description says 'all hidden objects', so the intended scope is ambiguous and an agent cannot confidently distinguish the actual behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of rhino_hide_selected, rhino_delete_selected, rhino_lock_selected, or other visibility commands. There is no mention of prerequisites such as having hidden objects selected or a distinction from a show-all command.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_shrink_trimmed_srfA
Shrink the underlying surface to its trim boundary.
Pre-select the trimmed surface before calling.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral context on its own. It clearly states the mutation ('shrink the underlying surface') and the return keys ('status' and 'command'), but it does not mention reversibility, failure conditions, or what happens if no trimmed surface is selected. This is adequate for a simple command but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the action is stated in the first sentence, followed by the essential precondition and return information. There is no filler or unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is complete: it states the operation, the precondition, and the return shape. Nothing else is needed to call it correctly, and the tool's simplicity lowers the contextual burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so the baseline is 4 because there are no parameters to document. The description mentions a 'controller: RhinoController instance' in Args, which is not reflected in the schema, but with no required parameters this does not create a real invocation burden for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Shrink the underlying surface to its trim boundary.' This clearly identifies the tool's unique purpose among many surface and trim-related siblings, and the resource ('underlying surface' of a trimmed surface) helps distinguish it from commands like rhino_trim or rhino_untrim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisite: 'Pre-select the trimmed surface before calling.' This tells the agent exactly what state the document must be in, which is essential for a zero-parameter tool. It does not explicitly compare to alternatives or mention when not to use it, 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.
rhino_shrink_wrapC
Shrink-wrap selected geometry into a watertight mesh.
Args:
controller: RhinoController instance.
resolution: Target voxel resolution for the wrap.
| Name | Required | Description | Default |
|---|---|---|---|
| resolution | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavior. It mentions 'selected geometry' but does not disclose whether the original objects are modified or replaced, whether a new mesh is created, what geometry types are supported, or what 'watertight' guarantees are made. The description is a single operation summary, not a behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in one clear sentence with no wasted prose. However, the 'Args' section includes the phantom 'controller' parameter and the resolution line duplicates what the schema already partially conveys, so not 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 mesh-generation operation with no annotations, the description should explain selection requirements, what the output object is, and whether the operation is destructive. It does none of this. The presence of an output schema helps with return values, but the operational context is still incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds some meaning to 'resolution' by calling it a 'Target voxel resolution for the wrap,' which is helpful given the schema's bare 'Resolution' title. However, it also lists a 'controller: RhinoController instance' argument that does not appear in the input schema, which is confusing and misleading for an agent deciding what to pass. No units, range, or effect of the resolution value are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific operation: 'Shrink-wrap selected geometry into a watertight mesh.' This identifies the verb, the resource, and the intended result. It does not explicitly distinguish this from related mesh tools such as rhino_weld_mesh or rhino_cap_holes, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like rhino_cap_holes, rhino_mesh_boolean_union, or rhino_quad_remesh. The description does not state prerequisites, selection requirements, or situations where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_silhouetteA
Extract silhouette curves from selected surfaces or meshes.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavior. It only says 'extract' and returns a generic 'Dict with command result.' It does not disclose whether new curve geometry is created, whether the source objects are modified, or how the silhouette is derived from the current view.
Agents need to know what a tool does to the 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 purpose sentence is concise and front-loaded. But the 'Args:' and 'Returns:' lines are boilerplate, and the Args line conflicts with the empty schema, so not every part of the description 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 tool, the description states the input scope and the output schema can cover return details. Still, there are no annotations and no mention of whether the tool creates new objects, affects the document, or depends on view direction, leaving a meaningful behavioral gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters and full coverage, so the baseline for this dimension is 4. However, the description includes 'Args: controller: RhinoController instance,' which introduces an argument not present in the schema and adds confusion rather than useful parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'Extract silhouette curves from selected surfaces or meshes.' This clearly identifies the operation and target geometry, and it distinguishes the tool from the many other curve-creation and analysis tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from selected surfaces or meshes' gives clear context that objects must be pre-selected and that the tool operates on surfaces or meshes. It does not explicitly name alternatives or exclusions, but no direct sibling competes with this operation, so the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_skin_from_sectionsA
Generate a skin (loft-equivalent) through ordered section curves.
- Standalone: chains ``CreateRuledSurface`` between adjacent section
pairs and returns the list of surface IDs; the caller can join them
downstream if needed.
- Bridge: emits a single Brep loft via ``Brep.CreateFromLoft``.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false; the description goes beyond this by naming the concrete construction APIs (CreateRuledSurface and Brep.CreateFromLoft) and by disclosing the return shape in standalone mode (list of surface IDs requiring downstream joining). This is meaningful behavioral detail, though it does not discuss whether source curves are kept or modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is compact and well structured: a one-sentence purpose, then two bullets covering the modes. Every sentence adds distinct information and the key distinction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main operation and even explains output composition, and an output schema reduces the need to document return values. The notable gap is that it never explains what selects 'Standalone' versus 'Bridge', nor does it state prerequisites or orientation requirements for the section curves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds real semantic value for the core section_curve_ids parameter: adjacent-pair chaining and the two-versus-three-or-more curve outcome. With a 0% schema coverage signal, it only partially compensates because closed, name, layer, and doc_id are not mentioned, even though those are largely self-explanatory or documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('Generate a skin') through a specific resource (ordered section curves) and clarifies the two output modes (ruled surface chain vs Brep loft). It is clear, but it does not explicitly differentiate this tool from sibling surface tools such as rhino_loft or rhino_sweep1.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 standalone/bridge breakdown gives useful context about what will happen at call time, and 'through ordered section curves' implies when it is applicable. However, it never states when an agent should choose this over rhino_loft or another skinning/sweep alternative, so the when-vs-alternatives guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_slabC
Create a slab (extruded planar surface with thickness) from curves.
Args:
controller: RhinoController instance.
thickness: Slab thickness.
| Name | Required | Description | Default |
|---|---|---|---|
| thickness | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Create' and mentions a controller. It does not explain whether it operates on currently selected curves, whether source curves are deleted or retained, what side effects occur, or what happens if no curves are selected. The gap between the described controller argument and the schema further reduces transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with no filler or redundant prose. The short Args section adds some structure, though it introduces a controller parameter that is not present in the schema, which slightly weakens the structure's clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a geometry-creating operation with at least one implicit dependency (curve selection or input), yet the description fails to explain how curves are supplied. It also omits practical details like units, object placement, and selection behavior. The existence of an output schema reduces the need for return documentation, but the input-side incompleteness remains significant.
Complex tools with many parameters or behaviors need more documentation. Simple 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 define 'thickness' as 'Slab thickness' and mentions a 'controller', but controller is absent from the input schema and the description lacks units, range, or meaning for thickness. Critically, the 'curves' input mentioned in the description is not represented as a parameter, leaving the main source of geometry 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 description clearly states the action ('Create a slab') and defines the result ('extruded planar surface with thickness') and source ('from curves'). It is specific enough to convey the core purpose, though it does not explicitly distinguish itself from siblings like rhino_extrude or rhino_plane_surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rhino_extrude, rhino_plane_surface, or rhino_box. It does not mention prerequisites like selected curves, required Rhino document state, or any exclusions, so an agent receives little direction on choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_smoothA
Smooth selected objects by averaging control-point positions.
Args:
controller: RhinoController instance.
strength: Smoothing strength (0–1).
iterations: Number of smoothing passes.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| strength | No | ||
| iterations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden; it does communicate the core behavior and mechanism: control-point positions are averaged to smooth selected objects. It omits side-effect information, supported object types, reversibility, and selection preconditions, which matter for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and the Args/Returns sections are compact, with no wasted prose. The Args list partially duplicates schema information and includes the off-schema controller parameter, but the overall length is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 essential operation, both parameters, and the return shape, which is adequate for a simple tool. It is not fully complete because it never specifies which object types are supported, whether a selection must already exist, or how this tool relates to the many smoothing and editing siblings.
Complex tools with many parameters or behaviors need more documentation. 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 supplies only types and defaults, so the description's explanation of strength as a 0-1 smoothing factor and iterations as the number of passes adds meaningful semantics. The mention of a controller argument that is absent from the schema prevents a perfect score.
Input schemas describe structure but not intent. Descriptions should explain 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 definition clearly identifies a specific operation: smoothing selected objects by averaging control-point positions. It does not name or differentiate itself from sibling tools such as rhino_smooth_polyline or rhino_soft_edit_curve, so it is clear but not fully distinguishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected objects' implies the tool acts on the current Rhino selection, which is a form of usage context. There is no explicit when-to-use guidance, no alternative tool names, and no statement about when not to use this tool, so an agent must infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_smooth_polylineA
Apply Laplacian smoothing to a polyline (or NURBS curve via its control points).
Each iteration replaces every interior point P_i with
``(1 - factor) * P_i + factor * (P_{i-1} + P_{i+1}) / 2``.
With ``pin_endpoints=True`` the first and last points are held.
Returns the new curve's object_id (the input is replaced).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses mutating behavior: 'Returns the new curve's object_id (the input is replaced).' It also explains the smoothing formula, iteration behavior, and the pin_endpoints effect, all of which go beyond the minimal readOnlyHint=false annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the core purpose is front-loaded, the formula is concise, and each sentence adds useful information. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key behavioral facts: what is smoothed, how the algorithm works, endpoint pinning, mutability, and return value. Minor gaps remain around iteration semantics and document targeting, but the schema and output schema fill some of those 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?
The description adds meaning for factor and pin_endpoints through the formula and explanation, and clarifies that curve_id can be a polyline or NURBS control-point net. However, it does not explain iterations or doc_id, and with schema description coverage at 0% the description only partially compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — 'Apply Laplacian smoothing to a polyline (or NURBS curve via its control points)' — with a clear verb and resource. It also distinguishes its scope by noting it works on curves and replaces the input, preventing confusion with surface or mesh smoothing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no guidance on when to choose it over alternatives like rhino_fair_curve or rhino_smooth. There are no explicit exclusions, prerequisites, or comparative usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_soft_edit_curveB
Apply soft (smooth falloff) editing to a selected curve.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, and the description does not disclose side effects, whether the curve is modified in place, reversibility, or what 'soft editing' entails beyond the 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?
One short, clear sentence with no redundancy. The action and object are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description lacks operational context such as requiring a pre-selected curve, falloff behavior, or meaning of the output. The output schema is indicated but not described.
Complex tools with many parameters or behaviors need more documentation. 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 zero parameters, so there are no parameter semantics to document. Baseline 4 applies for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action and target: applies soft (smooth falloff) editing to a selected curve. This also distinguishes it from the sibling tool rhino_soft_edit_surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance on when to use this tool instead of alternatives, no workflow context, and no mention of prerequisites such as the curve needing to be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_soft_edit_surfaceA
Apply soft (smooth falloff) editing to a selected surface.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations or description details: it does not state whether the surface is modified in place, whether it affects control points, what falloff/strength values are used, or if undo is supported. With no annotations, this ambiguity is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no filler, direct statement of operation and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Basic operation is clear, but no information about expected result, output, or interaction with selection. Since an output schema exists but is not included, and the description omits side effects, completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero declared parameters, so the baseline is high. The description at least clarifies that it targets the currently selected surface, but gives no detail on any optional editing parameters that might exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Apply' plus object 'soft editing' to 'selected surface' clearly identifies a deformation operation. It also differentiates from sibling rhino_soft_edit_curve by targeting surfaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over related deform tools such as rhino_smooth, rhino_cage_edit, or rhino_bend. The phrase 'selected surface' implies a precondition but does not explain how to set up or verify the selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_solar_exposure_estimateARead-only
Estimate cumulative solar exposure (lit minutes / total minutes) on an object (bridge only).
Bridge implementation samples the time range, casts a ray from the target's centroid toward the sun at each step, and counts lit samples (no obstruction along the ray). Returns a 0-1 ratio.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, and the description adds genuine algorithmic context beyond that: it samples the time range, casts rays from the target's centroid, and counts unobstructed lit samples. This discloses that the result is a step-sampled, centroid-based approximation rather than an exact geometric calculation. Nothing contradicts the read-only annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact two-sentence block with the purpose and output range front-loaded in the first sentence and the method in the second. Every clause adds information — scope, sampling, ray casting, obstruction handling, and return range — with no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only estimation tool that already has readOnlyHint and an output schema, the description covers the core essentials: what is computed, how it is computed, and what the returned value means. Minor gaps remain — it does not define what qualifies as a 'bridge' object or how to obtain one, and it does not clarify the defaulted location/timezone assumptions or the behavior when obstruction_object_ids is omitted. These are secondary to successfully invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context signals, so the free-text description must carry the semantic burden for the parameters. It implicitly explains hour_range (samples the time range), step_minutes (at each step), obstruction_object_ids (no obstruction along the ray), and target_object_id (target's centroid), but it never mentions latitude, longitude, timezone_offset_h, or doc_id, nor the defaulted Seoul coordinates and +9 offset. Several parameters end up documented only by their type/range constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource — 'Estimate cumulative solar exposure (lit minutes / total minutes) on an object (bridge only)' — and pins down the output as a 0-1 ratio, which separates it from solar siblings like rhino_sun_position, rhino_direct_irradiance, and rhino_shadow_project. The 'bridge only' scope further narrows applicability. The purpose is unambiguous and self-contained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not name any alternative tool or state explicit when-to-use/when-not-to-use conditions. It conveys an implicit scope exclusion ('bridge only') and the cumulative, time-averaged nature of the computation, which hints it is not for instantaneous irradiance or single-moment shadow queries, but the agent must infer this. No sibling is referenced as a substitute for different analysis needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_solid_pt_onB
Enable solid point editing for selected polysurfaces.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose side effects such as toggling edit mode, requiring a selection, or affecting the display. With no annotations provided (no readOnlyHint or destructiveHint), the description carries the full burden and fails to convey behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and directly to the point, with no unnecessary words or redundancy. It fits within a single sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle-like command, the description is adequately complete. It specifies the action ('enable'), the target ('solid point editing'), and the scope ('selected polysurfaces'). No further context seems necessary for a basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to explain. The mention of 'controller: RhinoController instance' appears to be a standard injected argument rather than a user-supplied parameter, so the description adds no parameter-level 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?
The description 'Enable solid point editing for selected polysurfaces' clearly states the action and target. It distinguishes the tool from general point editing tools like rhino_edit_points_on, though it does not explicitly contrast with the similar-named rhino_points_solid_on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any preconditions (e.g., selected polysurfaces must exist). The description is purely a statement of function without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sphereC
Add a sphere primitive.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal readOnlyHint=false, so the mutation behavior is known. The description adds no additional behavioral context, such as side effects on the active document, object creation behavior, or error conditions. It simply restates the action without disclosing anything beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the essential verb and object. However, it is so minimal that it borders on under-specification, providing little beyond the tool's name and title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 large set of sibling tools, the description is not complete enough to guide correct selection; it does not clarify whether this is a NURBS sphere, how it differs from rhino_subd_sphere, or what defaults apply. The output schema may document return values, but the description leaves key usage context unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple 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 needed to compensate by explaining key parameters like center and radius, but it provides none. The schema itself carries some meaning, yet the description contributes nothing to parameter understanding, making this a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Add a sphere primitive.' This is clear and unambiguous about the tool's basic function. However, it does not explicitly distinguish itself from similar siblings like rhino_subd_sphere or rhino_cmd_sphere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternative sphere-related tools, nor any context about intended workflows. The description does not mislead, but it provides no decision support for an agent choosing among many similar creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_spiralC
Add a tapered spiral sampled into a NURBS curve.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=false, confirming this is a creation operation, but the description adds little beyond that. It does not disclose behavior such as where the curve is added (active document by default), whether existing geometry is affected, how the NURBS curve is constructed or sampled, or any side effects like creating a layer if specified. The name and definition field 'sampled into' hints at the conversion process, but this is not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose without unnecessary words. It could add more useful detail, but as written it is efficient and directly readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values may be documented, but the description still lacks context about the relationship of this tool to similar curve/spiral tools, how the 'sampled' NURBS conversion works, and what happens when parameters like layer or doc_id are omitted. Given 0% schema coverage and no parameter explanations, this definition is inadequate for an agent to correctly configure all required inputs.
Complex tools with many parameters or behaviors need more documentation. Simple 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%, meaning the schema alone does not explain most parameters. The description mentions 'tapered spiral' which maps to start_radius and end_radius, and 'sampled' maps to points_per_turn, but it does not explain pitch, turns, center, or the meaning of the required arguments. The description must compensate for the total lack of parameter descriptions but fails to do so for most fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add a tapered spiral sampled into a NURBS curve' clearly states the verb (add), the resource (tapered spiral), and the output form (NURBS curve). It distinguishes this from generic curve creation tools by highlighting the tapered spiral nature, though it doesn't explicitly contrast with siblings like rhino_helix or rhino_cmd_spiral.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is for creating a tapered spiral as a NURBS curve, which gives context for when to use it. However, it does not explicitly state when to prefer this over alternatives such as rhino_helix, rhino_curve, or rhino_cmd_spiral, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_splitC
Split selected objects with cutting objects (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is expected to disclose side effects and behavior. It only mentions 'interactive', which implies user prompts, but does not describe whether objects are modified destructively, if it works on copies, or what happens to the cutting objects. Transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and quickly readable, with no filler. It loses a point because it omits necessary behavioral details, but structurally it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about the return value (even though the tool says it returns a Dict), side effects, or any caveats. Given the simplicity of the tool, more context about the interactive flow and expected outcome would be needed for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'controller' is mentioned without any explanation of its role or how it should be used. Since the parameter type is likely standard (RhinoController), the description adds no meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (split) and the objects involved (selected objects with cutting objects), and the 'interactive' qualifier hints at its distinct mode. However, it does not explicitly differentiate it from other split/boolean tools, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only the word 'interactive' gives a hint about when to use it, but there is no explicit guidance on when to choose this over alternative commands like rhino_boolean_split or rhino_trim. The description lacks practical usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_srf_from_3_4_ptsB
Create a surface from 3 or 4 corner points.
Args:
controller: RhinoController instance.
pts: List of 3 or 4 points; each element is an (x, y, z) tuple
or a 'x,y,z' string.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| pts | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry transparency on its own. It does disclose input serialization and the return keys 'status' and 'command', but it does not clarify whether points must be planar, whether the command executes immediately, or how invalid point counts are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured as a docstring with a clear one-line purpose followed by Args and Returns. There is little filler, though the undocumented controller argument slightly detracts from the overall neatness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 geometry-creation tool, an agent needs more context about planarity, point order, and how this differs from related surface tools. The description covers basic input and return shape but leaves key usage semantics unresolved, including the schema/description mismatch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines pts as a string with no description, so the description's explanation of 3-4 points and tuple/string formats adds meaning. However, it directly contradicts the schema: the description says pts is a list, while the schema declares type string. It also documents a controller parameter that does not appear in the schema, which can mislead an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a surface from 3 or 4 corner points.' This clearly defines both the action and the input constraint, and is enough to distinguish it from loft, sweep, patch, and network-surface siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool over alternatives such as rhino_planar_srf, rhino_surface_from_points, or rhino_edge_srf. It also does not mention prerequisites like coplanarity of the points or required point ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_stack_floorsA
Replicate a source object N times along world +Z with constant spacing.
Architectural shortcut for "stack this slab N floors high". The source
sits at level 0; copies populate levels 1 .. floor_count.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already signals mutation. The description meaningfully adds behavior: copies are placed along world +Z, the source sits at level 0, and copies populate levels 1..floor_count, clarifying the non-destructive nature and exact placement 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?
The description is tight: two sentences that state the core operation, the direction, the spacing, and the level semantics. The architectural shortcut line earns its place by immediately signaling intended usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with a rich input schema and an output schema present, the description covers the essential behavior. The only missing context is why to prefer this over rhino_array_linear or rhino_replicate_along_curve, but that is more of a usage-guidance gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents each parameter well, including floor_count meaning 'additional floors' and floor_height as Z spacing. The description reinforces this by stating the source is level 0 and copies occupy levels 1..floor_count, which removes ambiguity about whether the source counts as one of the floors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Replicate a source object N times along world +Z with constant spacing." It also includes the architectural metaphor "stack this slab N floors high," making the tool's niche immediately recognizable among the many array and duplication siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the intended use case: an architectural shortcut for stacking a slab N floors high. It implies this is for vertical floor replication rather than generic arrays, but it does not explicitly name alternatives like rhino_array_linear or explain when to choose this over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_statusC
Return the current Rhino connection status plus the default files directory.
Args:
controller: RhinoController instance.
Returns:
Dict containing status info and rhino_files_dir.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral transparency burden. It indicates a read-only operation through 'Return' and states the output contents, but it does not disclose what happens if the connection is unavailable, whether it establishes a connection, or any error behavior. Some transparency is present, but gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main purpose. However, the Args line is unnecessary and inconsistent with the empty schema, and the Returns line partially repeats the first sentence's mention of the default files directory. Not every sentence fully 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 status tool with an output schema, the description is mostly adequate. Missing elements include connection prerequisites, possible status values, and behavior when Rhino is not connected. The phantom controller argument also adds ambiguity that a more complete description would avoid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so parameter documentation is unnecessary. However, the description includes 'Args: controller: RhinoController instance,' which introduces a parameter absent from the schema. This is misleading and could cause an agent to attempt passing an argument that the schema does not accept.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the current Rhino connection status and the default files directory, which is a specific verb + resource. It does not explicitly distinguish itself from sibling tools like rhino_system_info, but the resource and scope are specific enough to avoid major 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 gives no explicit guidance about when to use this tool versus alternatives, no prerequisites, and no exclusions. The purpose implies it is for checking connection status, but that is not stated as actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_stitchC
Stitch selected surface edges together within a tolerance.
Args:
controller: RhinoController instance.
tolerance: Stitching tolerance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavior. It states the operation and tolerance but does not disclose whether the operation is destructive, whether it modifies the original surfaces, what happens if edges are outside tolerance, or whether any selection state is required. This is a significant gap for a mutation-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core action. The Args/Returns structure is clear and easy to scan. However, the Args section includes a 'controller' parameter that does not appear in the input schema, which could mislead an agent into thinking it must supply it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a geometric operation with no annotations, and the description does not cover selection requirements, edge conditions, tolerance semantics, or outcomes. An output schema exists, so return value shape is less critical, but the missing operational context leaves an agent uncertain about how to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It calls tolerance a 'Stitching tolerance,' which adds minimal meaning beyond the parameter name and schema type. It does not explain units, acceptable ranges, or how tolerance affects stitching behavior. The controller parameter mentioned in the description is not present in the input schema, adding confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Stitch selected surface edges together') with a clear resource (surface edges) and a tolerance parameter. It is not a tautology and communicates the core purpose effectively. However, it does not explicitly distinguish itself from similar surface/edge operations like rhino_merge_surfaces or rhino_blend_surface_edges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool operates on 'selected surface edges' but gives no guidance on when to use stitching versus alternatives, nor does it explain prerequisites such as needing an active selection. There is no mention of when this tool is preferred or when another tool should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_boxA
Create a SubD box primitive.
Args:
controller: RhinoController instance.
x: X coordinate of base corner.
y: Y coordinate of base corner.
z: Z coordinate of base corner.
length: Box length along X.
width: Box width along Y.
height: Box height along Z.
face_x: Number of faces along X.
face_y: Number of faces along Y.
face_z: Number of faces along Z.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| width | No | ||
| face_x | No | ||
| face_y | No | ||
| face_z | No | ||
| height | No | ||
| length | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure, but it only says 'Create' and lists args. It does not state whether the box is inserted into the active document, how the controller is used, what units or coordinate system apply, or what side effects occur. The extra 'controller' arg is also unexplained for MCP callers.
Agents need to know what a tool does to the 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 purpose sentence is front-loaded, followed by a compact, scannable Args list where every line carries parameter meaning. There is no redundant explanation or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All nine callable parameters are defined and an output schema exists, so the agent can invoke the tool and understand the return shape. The description falls short only in non-schema context such as explicit alternative routing and side-effect or insertion behavior, which are addressed in other dimensions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every schema parameter (x, y, z, length, width, height, face_x, face_y, face_z) gets a one-line semantic explanation, such as 'length: Box length along X', fully compensating for the 0% schema description coverage. One deduction: the description also lists a 'controller' argument not present in the input schema, which could confuse an agent about invocation.
Input schemas describe structure but not intent. Descriptions should explain 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 'Create a SubD box primitive' names a specific verb and resource, and the 'SubD' qualifier differentiates it from sibling primitives like rhino_box and rhino_mesh_box. The subsequent parameter list reinforces that it creates a box, not another shape.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: the tool is obviously for creating a SubD box, so an agent can infer that context. However, it never explicitly contrasts with rhino_box, rhino_mesh_box, or other SubD primitives, nor states exclusions such as 'use rhino_box for NURBS boxes.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_coneB
Create a SubD cone primitive.
Args:
controller: RhinoController instance.
x: X coordinate of base center.
y: Y coordinate of base center.
z: Z coordinate of base center.
radius: Cone base radius.
height: Cone height.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| height | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says the tool 'creates' a SubD cone and lists arguments; it does not disclose side effects, coordinate-system assumptions, axis orientation, document interaction, or return behavior. For a mutation tool with zero annotation coverage, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear one-line purpose followed by a concise parameter list. The only structural issue is the included 'controller' argument, which does not appear in the schema and adds confusion rather than value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple primitive-creation tool, the core geometric parameters are documented and an output schema exists, so a detailed return description is not mandatory. Still, the absence of usage context and the controller/schema mismatch leave the description minimally complete rather than fully reliable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description helpfully defines x, y, z as base-center coordinates, radius as base radius, and height as cone height, adding real meaning beyond the bare schema names. However, it also lists a 'controller' argument that is absent from the input schema, which could confuse an agent attempting to invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the specific resource ('SubD cone primitive'), identifying the tool's purpose without ambiguity. The 'SubD' qualifier distinguishes it from NURBS cone siblings such as rhino_cone and from other SubD primitives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance about when to use this tool versus alternatives like rhino_cone, rhino_subd_cylinder, or rhino_subd_sphere. There are no conditions, exclusions, or context about choosing a SubD primitive over a NURBS primitive, so an agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_creaseA
Add a crease to selected SubD edges, making them sharp.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the core effect, adding a crease that makes edges sharp, but it does not mention that it modifies the active document, depends on the current selection, or can be reversed.
Agents need to know what a tool does to the 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 main sentence is short, front-loaded, and informative. The extra 'Args:' block is unnecessary and inconsistent with the empty schema, preventing a perfect conciseness score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-parameter mutation the description is almost minimal but lacks important context: the prerequisite that SubD edges must already be selected, behavior if no valid selection exists, and the ability to undo with a sibling tool. The output schema may cover return values, but prerequisites are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema declares zero parameters, so there is little to explain. However, the description includes an 'Args: controller' line that names an argument not present in the input schema, which can mislead schema-driven invocation rather than help.
Input schemas describe structure but not intent. Descriptions should explain 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 names a specific action, 'add a crease,' and the specific resource, 'selected SubD edges,' with the outcome 'making them sharp.' This clearly distinguishes it from the inverse sibling rhino_remove_crease and from other SubD 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?
Usage context is only implied: the operation applies to selected SubD edges. There is no explicit statement of when to use this tool versus alternatives, no mention that edges must be pre-selected, and no reference to the inverse operation rhino_remove_crease.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_cylinderA
Create a SubD cylinder primitive.
Args:
controller: RhinoController instance.
x: X coordinate of base center.
y: Y coordinate of base center.
z: Z coordinate of base center.
radius: Cylinder radius.
height: Cylinder height.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| height | No | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only restates that a SubD cylinder is created and lists parameters; it does not disclose axis/orientation, capping behavior, units, object placement scope, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and uses a clear parameter-list structure with no padding. It loses a point because it mentions a 'controller' argument that is not present in the input schema, which could slightly confuse an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 primitive-creation tool with an output schema present, the parameter documentation is sufficient to invoke the tool correctly. Minor gaps remain around orientation and SubD-specific creation behavior, but these are not critical for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates fully by explaining every schema parameter: x/y/z as base-center coordinates, radius, and height. This adds semantic meaning well beyond the schema's 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 clear, specific action: 'Create a SubD cylinder primitive.' The 'SubD' qualifier distinguishes it from the analogous NURBS tool rhino_cylinder, and the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_cylinder, rhino_subd_sphere, or other SubD primitives. There are no conditions, prerequisites, or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_display_toggleB
Toggle SubD display between smooth and box (control polygon) modes.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior beyond the tool name. It names the toggle transition but does not disclose scope (selected objects vs. all SubD objects), side effects, or any preconditions; the 'Args: controller' line adds no behavioral clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main sentence is concise and front-loaded with the essential operation. The 'Args' block is extraneous and inconsistent with the empty schema, so not 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 simple no-argument toggle, the core behavior is present and an output schema exists, so return values need no explanation. However, the missing scope/precondition context and lack of annotations leave an agent uncertain about what exactly will be toggled when the tool is invoked.
Complex tools with many parameters or behaviors need more documentation. 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 defines zero parameters, so there is little for the description to add. However, the description includes 'Args: controller: RhinoController instance,' which is not represented in the empty input schema and could confuse an agent into thinking a controller argument must be supplied; this reduces the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Toggle' with a clear resource 'SubD display' and explicitly names the two modes: smooth and box (control polygon). This makes the tool's function unmistakable and distinguishes it from sibling SubD creation/edit tools and generic display-mode setters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor does it mention prerequisites such as selected SubD objects or viewport context. The description explains what the tool does but not the conditions under which an agent should call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_expand_edgesB
Expand selected SubD edges outward by a given distance.
Args:
controller: RhinoController instance.
distance: Expansion distance.
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full behavioral burden. It discloses the core geometric intent, but does not say whether the operation mutates the existing SubD, creates new geometry, what happens with no valid edge selection, or what side effects occur. For a mutating tool this is a meaningful transparency 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 main sentence is concise and front-loaded with the action and target. However, the Args section adds little beyond restating distance and introduces the controller argument not present in the schema, which is a structural inconsistency in an otherwise short 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 mutating SubD tool with no annotations, the description is under-specified: it does not clarify in-place modification versus new object creation, distance units, selection requirements beyond 'selected,' or failure behavior. The output schema exists, so return details are less critical, but key execution context is still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no description coverage, and the description only restates the distance parameter as 'Expansion distance.' It does not specify units, valid range, or whether negative values are meaningful. It also lists a 'controller' argument in prose that is absent from the input schema, creating ambiguity about the actual call signature.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Expand') applied to a specific resource ('selected SubD edges') with a measurable condition ('by a given distance'). This is clearly distinguishable from sibling SubD tools like rhino_subdivide or rhino_offset_subd, which do different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when SubD edges are selected and need to be expanded outward, but it gives no explicit when-not guidance or alternatives. It does not mention how this relates to similar tools such as rhino_offset_subd, rhino_subdivide, or other edge-editing operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subdivideC
Subdivide selected SubD objects a given number of times.
Args:
controller: RhinoController instance.
count: Number of subdivision iterations.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not reveal whether the original SubD objects are replaced or new ones created, whether the operation is destructive or undoable, or what happens if no SubD objects are selected. 'Subdivide' implies mutation, but the side effects remain unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. The Args block is compact, but the controller line is unnecessary and inconsistent with the schema, adding minor noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the output schema reduces the need to describe return values, the description omits critical context such as selection requirements, side effects, and how it differs from other SubD tools. For a mutating operation with no annotations, this is insufficient for an agent to safely select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no property descriptions, so the description's 'count: Number of subdivision iterations' adds useful meaning beyond the schema's default-only count field. However, the description also lists a 'controller' argument that is absent from the input schema, which is confusing and undermines the otherwise helpful parameter 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?
The description states a specific verb, 'Subdivide', and a specific resource, 'selected SubD objects', and clarifies the count-based iteration behavior. It is clearly distinct from most sibling tools, though it does not explicitly name an alternative to distinguish itself from similar SubD-editing operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives such as rhino_subd_expand_edges or rhino_repair_subd. It implies a prerequisite that SubD objects are selected, but does not state this explicitly or provide any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_loftA
Create a SubD loft surface through selected curves.
Args:
controller: RhinoController instance.
closed: Create a closed (periodic) loft.
| Name | Required | Description | Default |
|---|---|---|---|
| closed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It communicates that the tool creates a new SubD loft from selected curves and that closed means periodic, but says nothing about prerequisites, failure modes, or side effects beyond creation. This is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the parameter notes are compact. No filler or redundant information; every line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema, this is close to complete, but it leaves the selection requirement implicit and doesn't specify how the chosen curves are provided or validated. A short explicit usage note would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are absent, so the description compensates by explaining 'closed' as creating a closed/periodic loft. It also documents a 'controller' argument, though this is not present in the schema, which is slightly confusing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Create a SubD loft surface') and resource ('through selected curves'), clearly distinct from general loft and SubD primitives. It doesn't explicitly call out sibling tools like rhino_subd_sweep1/2, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'selected curves' implies the tool should be invoked after selecting curves, and 'closed' describes an option. However, there is no explicit when-to-use guidance, no exclusions, and no alternatives mentioned, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_planeB
Create a SubD plane primitive.
Args:
controller: RhinoController instance.
x: X coordinate of start corner.
y: Y coordinate of start corner.
z: Z coordinate of start corner.
length: Plane length along U.
width: Plane width along V.
count_u: Number of faces along U.
count_v: Number of faces along V.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| width | No | ||
| length | No | ||
| count_u | No | ||
| count_v | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says the tool creates a SubD plane. It does not mention orientation, coordinate-system behavior, insertion into the active document, or what happens to the object after creation. This is minimal behavioral transparency for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with a one-sentence purpose, followed by a clean Args list. Each line adds parameter meaning without unnecessary prose, making it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple primitive-creation tool, the description and input schema together are mostly sufficient to make a call. However, it omits placement/orientation context, such as how the U/V directions relate to the world axes, and it does not help the agent choose between this and related plane/primitive tools. The output schema covers return values, so that gap is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple 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: x/y/z are defined as start-corner coordinates, length/width are defined along U/V, and count_u/count_v are defined as face counts. The meaning of every schema parameter is explained, though some details like units and coordinate orientation are 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?
The description uses a specific verb ('Create') and resource ('SubD plane primitive'), making the tool's core purpose clear. It does not explicitly contrast with sibling tools like rhino_plane_surface or rhino_subd_box, but the 'SubD plane' identifier is specific enough to avoid major ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus NURBS plane creation, other SubD primitives, or related primitives. There is no mention of alternatives, exclusions, or context such as 'use this when a SubD topology is needed.' The only implied usage comes from the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_sphereB
Create a SubD sphere primitive.
Args:
controller: RhinoController instance.
x: X coordinate of center.
y: Y coordinate of center.
z: Z coordinate of center.
radius: Sphere radius.
subdivisions: Number of subdivision levels.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| radius | No | ||
| subdivisions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool creates a SubD sphere, but does not disclose whether it adds to the current document, replaces any existing object, affects selection state, or requires any particular layer/units context. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core action, followed by a terse Args list. It avoids unnecessary prose, but the inclusion of a non-existent 'controller' parameter is a minor structural flaw that prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description covers the basic creation action and parameter meanings, but it omits usage context such as whether the sphere is added to the active document, how subdivisions affect the result, and the role of the output schema. The schema provides defaults but the description alone is not fully self-sufficient, especially regarding the controller mismatch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides definitions for all five schema properties (x, y, z, radius, subdivisions), adding meaning beyond the bare property titles in the schema. However, it also lists a 'controller' parameter that does not exist in the input schema, which is a mismatch. This partial compensation and inconsistency justify a middle score.
Input schemas describe structure but not intent. Descriptions should explain 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: "Create a SubD sphere primitive." This clearly distinguishes it from sibling tools like rhino_subd_box or rhino_cmd_sphere (likely NURBS), and the SubD prefix makes its domain explicit. It is not a tautology; it adds the primitive 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 guidance on when to use this tool versus alternatives. It does not mention that this creates a SubD sphere specifically, or contrast it with rhino_cmd_sphere for NURBS spheres, nor does it state any preconditions like needing an active document. The usage context is only implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_sweep1B
Create a SubD sweep along one rail curve.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It only says 'Create a SubD sweep', which indicates a mutating geometry operation, but it does not explain what inputs are required (e.g., a rail and profile), whether it operates on the current selection, or what side effects occur. This is a significant transparency 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 main sentence is concise and front-loaded, clearly naming the operation. However, the 'Args: controller...' line is redundant because the schema has no parameters and it contributes no useful guidance. The description is short but not 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?
With no schema parameters and no annotations, the description must explain how to call the tool, but it does not state what geometry must be selected or what defines the rail/profile. The existence of an output schema does not cover these invocation details. This is incomplete for a construction 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?
The input schema is empty, so the 0-parameter baseline of 4 applies. The description's 'controller' line is not a schema property and adds no parameter information. No further parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and object: 'Create a SubD sweep along one rail curve.' The phrase 'one rail curve' distinguishes it from rhino_subd_sweep2, so an agent can infer the singular-rail scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or alternatives are mentioned. The phrase 'along one rail curve' implies a single-rail operation but does not contrast with sweep2 or list prerequisites. This is implied usage at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_sweep2B
Create a SubD sweep along two rail curves.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, but it only says 'Create,' which implies a document-mutating operation. It does not disclose how the rail curves are supplied (selection state vs. controller context), what happens if no curves are selected, or whether the tool modifies existing objects. A creation tool with zero annotation coverage needs substantially more behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is concise and front-loaded. However, the 'Args: controller: RhinoController instance.' line does not earn its place — it describes an argument not present in the input schema and adds no useful information. Overall length is minimal, so the cost is small.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A two-rail SubD sweep is a moderately complex modeling operation, yet the schema is empty and the description does not explain how the agent specifies or selects the rail curves. With an output schema present, return values are covered, but the missing input mechanism and prerequisites are a significant gap for the description to fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0 parameters, so per the baseline rule this dimension starts at 4. The description's mention of 'controller: RhinoController instance' is slightly mismatched with the empty schema, but since there are no parameters to document, no additional semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Create a SubD sweep along two rail curves.' The terms 'SubD' and 'two rail curves' clearly distinguish it from rhino_sweep2 (NURBS) and rhino_subd_sweep1, though differentiation is implicit rather than explicit. It is not merely a tautology of the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool rather than rhino_subd_sweep1, rhino_sweep2, rhino_cmd_sweep2, or rhino_subd_loft. There are no stated prerequisites (e.g., two curves must be selected), no exclusions, and no mention of alternatives. Usage context is left entirely to inference from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_to_nurbsC
Convert a SubD object to a NURBS polysurface (Brep).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide only a title, so the description carries the full behavioral burden. It states the output type but does not disclose whether the original SubD is preserved, replaced, or deleted, nor does it mention side effects like object creation, selection changes, or packing behavior. This is a meaningful gap for a conversion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler or repeated information. It is slightly under-specified, but structurally it is concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too thin for a tool with no behavioral annotations and multiple parameters. It does not explain the required object_id input, what happens to the original SubD, or how the optional parameters affect the result. The output schema reduces the need to describe return values, but the side effects and selection context remain unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-level meaning beyond the schema. The input schema already explains object_id and packed, but name and layer are left undocumented in both the schema and description. With schema description coverage low, the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Convert'), source ('a SubD object'), and result ('a NURBS polysurface (Brep)'), making the core operation clear. It does not explicitly differentiate this from sibling conversion tools like rhino_to_nurbs, though the source/target types in the description imply the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this when a SubD object needs to become a NURBS Brep. However, the description gives no explicit when-to-use or when-not-to-use guidance, and does not mention alternatives such as rhino_mesh_to_nurbs or rhino_to_nurbs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_subd_torusA
Create a SubD torus primitive.
Args:
controller: RhinoController instance.
x: X coordinate of center.
y: Y coordinate of center.
z: Z coordinate of center.
major_radius: Torus major (outer) radius.
minor_radius: Torus minor (tube) radius.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| major_radius | No | ||
| minor_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only behavioral disclosure. It says the tool creates a SubD torus, which implies an additive document mutation, but it does not state orientation, current units, construction plane, or any effect beyond creation.
Agents need to know what a tool does to the 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 clear purpose line followed by a compact Args list. Every line adds information and the main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity primitive creation tool with an output schema, the parameter coverage is sufficient. However, with no annotations, the lack of orientation, units, insertion context, and usage guidance leaves the description only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the Args block defines all five schema parameters: x/y/z center coordinates and major/minor radii. The mention of a controller argument not present in the input schema slightly muddies the parameter mapping, so it loses one point.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and object: 'Create a SubD torus primitive.' This clearly distinguishes it from the many sibling primitives, especially rhino_torus, by explicitly naming the SubD form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context is only implied: if an agent wants a SubD torus, this tool fits. There is no explicit statement about when to prefer it over rhino_torus or rhino_cmd_torus, nor any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sun_pathB
Draw monthly sun-path polylines on a hemisphere of given radius around center_point.
Standalone draws into the active rhino3dm document; bridge mode
forwards so the path is visible in Rhino's viewport.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false already flags this as mutating, and the description's 'draws into the active rhino3dm document' is consistent with that. The standalone/bridge mode disclosure adds context beyond the annotations, explaining where the side effect lands. It does not address what happens to existing sun-path geometry on the default layer 'Site::SunPath' or whether the tool creates that layer.
Agents need to know what a tool does to the 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 with no filler; the core action and geometry are front-loaded in the first line, and the mode behavior earns the second. The indentation/whitespace is slightly awkward, but every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential what (sun-path polylines), the geometry framing (hemisphere, radius, center_point), and the destination of the output in both modes. An output schema exists, so return values need not be described. Still, for a 10-parameter tool the description leaves parameter semantics and selection criteria to inference, and never clarifies how this visual tool relates to the analysis siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must compensate, and it partially does: it clarifies center_point as the hemisphere center, radius as the hemisphere size, and months as the source of 'monthly' paths. But the numerous remaining parameters (hours, latitude, longitude, timezone_offset_h, year, layer, doc_id) are left entirely to the schema, whose own descriptions are minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Draw monthly sun-path polylines on a hemisphere of given radius around center_point.' This is precise enough for an agent to know it produces sun-path geometry, not analysis data. However, it does not differentiate itself from the several solar-related siblings (rhino_sun_position, rhino_sun_settings, rhino_shadow_project), so the agent must infer the distinction from the word 'Draw'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 only contrasts the two output modes ('Standalone draws into the active rhino3dm document; bridge mode forwards so the path is visible in Rhino's viewport'), which is environment context rather than usage guidance. There is no statement of when to choose this tool over the sun-analysis siblings, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sun_positionBRead-onlyIdempotent
Compute solar azimuth + altitude for a location/time. Pure calculation, no doc edits.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, covering the core no-side-effect profile. The description reinforces this with 'Pure calculation, no doc edits,' adding mild context about the tool being a standalone computation, but it does not disclose additional behavioral details such as timezone/coordinate assumptions or document-open 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?
Two short sentences with no filler, and the core function is front-loaded. 'Pure calculation, no doc edits' is a compact safety clarification that earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The annotations and output schema cover safety and return shape, and the description states the basic function. However, for a tool with several solar-analysis siblings, the absence of usage routing and parameter-semantics guidance leaves the definition slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is effectively 0%, so the description needed to compensate, but it only vaguely says 'for a location/time.' The schema itself provides property names, defaults, and ranges, but the description does not clarify semantics like whether datetime_iso is local or UTC, or what timezone_offset_h means for this calculation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Compute solar azimuth + altitude for a location/time,' giving a specific verb, resource, and the key inputs. 'Pure calculation, no doc edits' distinguishes it from the many document-mutating Rhino siblings, 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?
No alternatives or when-to-use conditions are mentioned. 'Pure calculation, no doc edits' only rules out document-mutation tasks; it does not help an agent choose between this and related solar tools such as rhino_sun_path, rhino_direct_irradiance, or rhino_shadow_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sun_settingsB
Configure the Rhino sun/sky system via Python.
Args:
enabled: Enable or disable the sun.
latitude: Observer latitude in degrees.
longitude: Observer longitude in degrees.
year, month, day: Date settings.
hour: Hour of day (24h float, e.g. 14.5 = 2:30 PM).
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | ||
| hour | No | ||
| year | No | ||
| month | No | ||
| enabled | No | ||
| latitude | No | ||
| longitude | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only lists parameters. It does not disclose persistence, document-level side effects, whether the sun/sky system is enabled by default, or how this affects rendering and solar analysis tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose, followed by a clear argument list. Minor filler includes 'via Python' and unnecessary leading whitespace.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers all parameters and an output schema exists, so return-value documentation is not required. Still, it omits context about how sun settings interact with sun position, sun path, shadow projection, or render setup, leaving the agent to infer the tool's place in a larger workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does by explaining all seven parameters: enabled, observer latitude/longitude in degrees, the date group, and hour with a concrete example. However, the hour example says '24h float' while the schema types it as integer, introducing a potential conflict.
Input schemas describe structure but not intent. Descriptions should explain 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 'Configure the Rhino sun/sky system,' which identifies a specific resource and a clear action. It does not, however, distinguish itself from closely related sibling tools like rhino_sun_position or rhino_sun_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many sun-, render-, or environment-related alternatives. The argument list does not provide selection criteria, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_surface_closest_pointARead-only
Find the UV parameters and 3D point closest to a test point on a surface.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the read-only nature is covered. The description adds useful behavioral detail by stating the two outputs: UV parameters and a 3D point. It does not overpromise or contradict the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes meaning, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query with one required argument and an output schema, the description is nearly complete. It could mention what happens if the test point does not project onto the surface or clarify surface type, but these are minor for this simple 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 reported as 0%, and the description does not compensate by explaining that object_id is a GUID or how test_point coordinates should be supplied. It only mentions 'test point' generically, leaving the parameter semantics under-specified from the description's perspective.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Find') with a clear resource ('surface') and a precise deliverable ('UV parameters and 3D point'). It unambiguously distinguishes this from surface creation or editing tools and from evaluation tools like rhino_evaluate_surface or rhino_surface_normal_at.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage scenario is implied: use this when you need the closest point on a surface to a given test point. However, the description does not explicitly state when not to use it or mention alternatives such as rhino_evaluate_surface or rhino_surface_normal_at, so the guidance is thin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_surface_curvature_atBRead-only
Evaluate true Gaussian / mean / principal curvatures at (u, v) (bridge only).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds the 'bridge only' scoping constraint, which is a genuine behavioral trait beyond the annotation, but it is not elaborated (e.g., what happens if a non-bridge surface is passed). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. The core verb and resource appear first, and the scoping constraint is appended compactly. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query tool with an output schema and readOnlyHint annotation, the description is mostly adequate. However, '(bridge only)' is left unexplained and could mislead an agent about which surface identifiers are valid. The description also never clarifies whether u/v are normalized parameter coordinates, though the schema bounds (0–1) partially cover this.
Complex tools with many parameters or behaviors need more documentation. Simple 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 core parameters (u, v, surface_id). The tool description at least ties u and v to the evaluation location on the surface, but it adds no detail about what u/v represent (parameter space coordinates), how surface_id is resolved, or the doc_id semantics. It does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb (Evaluate), a precise resource (surface curvature), the kinds of curvature computed (Gaussian / mean / principal), and the location ((u, v)). It clearly differentiates from close siblings like rhino_surface_normal_at and rhino_curvature_analysis without requiring the agent to open any other 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 only usage signal is the cryptic '(bridge only)' qualifier, which hints at a constraint but never explains what 'bridge' means or what surfaces are excluded. No explicit when-to-use versus-alternative guidance is given, despite closely related siblings (rhino_surface_normal_at, rhino_surface_developable_score, rhino_curvature_analysis) existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_surface_developable_scoreARead-only
Estimate how far a surface deviates from being developable.
Samples a (sample_u+1) x (sample_v+1) grid of normals; for each
interior 2x2 block computes the maximum angle (in radians) between
adjacent normals. Reports max / mean / RMS over the whole sheet
plus a 0..1 normalised score (0 = perfectly developable,
1 = π/2 normal swing within a single cell).
A truly developable surface (cone, cylinder, plane) returns ~0;
a sphere section returns a positive value proportional to the
spanned solid angle.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description explains exactly how the measurement is computed: sampling a grid of normals, computing maximum angles in 2x2 blocks, and reporting max/mean/RMS plus a normalized score. It also gives concrete reference behavior for developable and non-developable surfaces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and every subsequent sentence adds value: algorithm, metric definitions, normalization, and reference examples. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analysis tool with an output schema and readOnlyHint annotation, the description is complete. It defines what is measured, how it is measured, what the outputs mean, and how to interpret scores. No critical operational facts are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage reported as 0%, the description needed to explain the parameters, but it only indirectly references sample_u and sample_v via the grid formula. It does not explain surface_id, doc_id, defaults, or the effect of sample resolution, leaving the agent to infer parameter meaning from names and schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Estimate how far a surface deviates from being developable.' It then details the algorithm, output metrics, and expected values for example geometries, making the tool's role unmistakable among the many sibling analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use the tool: whenever developability of a surface is in question. It also provides interpretable examples (developable surfaces return ~0, spheres return positive values). It does not explicitly name alternatives or state when not to use it, stopping 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.
rhino_surface_from_pointsB
Create a NURBS surface from a 2D grid of control points.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title, so the description carries the full burden of behavioral disclosure. 'Create a NURBS surface' states the primary effect, but it does not mention that this adds a new object to the Rhino document, how name/layer handling works, what validation occurs on the point grid, or any side effects or requirements. For a document-modifying operation with zero annotation hints, this is a significant transparency 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 front-loaded sentence with no filler. Every word contributes meaning: the verb, the result object, and the required input structure are all present. It is concise without sacrificing the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of NURBS surface creation and the presence of degree, name, and layer parameters, this description is too sparse to be complete. It does not explain the role of degrees, the ordering or orientation of the point grid, or how this creation affects the active Rhino document. The schema provides defaults and bounds, but the description alone leaves important contextual gaps for an agent deciding how to construct a valid call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0%, so the description must compensate. It does clarify that the points are 'control points' in a '2D grid,' which adds meaning beyond the raw schema. However, it says nothing about degree_u/degree_v, name, layer, or how the point grid must be structured, leaving several parameters effectively unexplained in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create a NURBS surface' from 'a 2D grid of control points.' This clearly identifies the tool's core function and distinguishes it from curve, mesh, and extrusion tools. However, it does not explicitly differentiate it from sibling surface-creation tools such as rhino_network_surface or rhino_patch, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from a 2D grid of control points' implies when the tool is appropriate, but no explicit guidance is given about when to use this tool versus other surface-creation siblings like loft, sweep, patch, or network surface. There are no stated exclusions, alternatives, or conditions that would help an agent pick between this and similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_surface_normal_atARead-only
Evaluate the surface unit normal at a normalised (u, v).
``u`` and ``v`` are 0..1 ratios over the surface's domain; the
actual parameters are computed internally so the LLM doesn't need
to know the domain bounds.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, covering the safety profile. The description adds useful detail about the internal normalization of coordinates, but doesn't disclose return behavior, error cases, or what happens with non-surface or Brep inputs beyond the schema's phrase 'single-face Brep'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences. The first states the operation; the second clarifies the one non-obvious input detail. No filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only evaluation tool with an output schema and readOnlyHint annotation, the description covers the key conceptual trap (normalized coordinates). It omits alternative-tool routing and return details, but those are largely covered by the output schema and the overall simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain u and v as domain-normalized ratios and that conversion happens internally, which adds real meaning. However, it doesn't clarify doc_id or surface_id semantics beyond the schema field names and their own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Evaluate the surface unit normal at a normalised (u, v)', which names a specific verb and resource. It does not explicitly contrast with siblings like rhino_evaluate_surface or rhino_surface_curvature_at, so it doesn't fully earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear input conventions: u and v are 0..1 ratios and the actual surface domain parameters are computed internally, so the LLM does not need to know domain bounds. It does not name alternatives or exclusions, but the normalized-coordinate guidance is directly actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sweep1A
Sweep profiles along a single rail.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals mutation, and the description adds only the high-level behavior of sweeping profiles. It does not disclose whether a new surface is created, whether the input rail/profiles are consumed or modified, or how profile ordering affects the result. No contradiction exists, but the behavioral description is minimal beyond what the annotation and name imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or redundant phrasing. It is front-loaded and every word contributes to the meaning, making it appropriately sized for a straightforward sweep operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential operation and the two critical inputs, but it omits prerequisites such as existing curve objects, profile ordering, and handling of open vs. closed profiles. Since an output schema exists, return-value details may not be necessary, but the lack of usage nuance leaves the description only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does help map the two key parameters: rail_id is the single rail and profile_ids are the profiles being swept. However, it does not clarify profile ordering, whether profiles must be closed or planar, or the meaning of name/layer beyond their self-evident property 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 uses a specific verb and resource: 'Sweep profiles along a single rail.' The 'single rail' qualifier clearly distinguishes it from rhino_sweep2 and the subd sweep variants in the sibling list. An agent can immediately identify what this tool does 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?
The phrase 'along a single rail' gives clear implied usage for one-rail sweeps, but it does not explicitly state when to prefer this over rhino_sweep2, rhino_loft, network surface, or the rhino_cmd_sweep1 variant. There are no exclusion criteria or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_sweep2C
Sweep profiles along two rails.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not contradict the annotations, but it also adds no behavioral detail beyond the bare operation. It does not disclose that a new surface is created, whether the input profiles and rails are left intact, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no filler or redundancy. It loses a point because it is terse to the point of omitting useful detail, though that is largely a completeness concern rather than a conciseness issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and the required parameters are present in the input schema, the description is too sparse for confident selection and invocation among many surface-creation siblings. It fails to mention that the result is a surface, how profiles relate to the two rails, or any creation 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%, so the description needed to compensate, but it only rephrases the property titles: two rails and profiles. It adds no guidance about rail1_id, rail2_id, profile_ids ordering, optional name/layer/doc_id, or how the IDs should be obtained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear operation, 'Sweep profiles along two rails,' which is more specific than a tautology and implicitly distinguishes this from sweep1 by mentioning two rails. It does not explicitly name the resulting object type or closest sibling alternatives, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose sweep2 over rhino_sweep1, rhino_loft, rhino_network_surface, or rhino_subd_sweep2. The sentence describes what the tool does but provides no context for selection, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_system_infoB
Retrieve Rhino system information.
Args:
controller: RhinoController instance.
Returns:
Dict with system info output.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose that this is a read-only retrieval operation ('Retrieve') and that it returns a Dict, which covers the core behavior. However, it does not describe what data the system info contains, whether a live Rhino session is required, or any failure modes — though for a non-destructive info query the risk profile is low.
Agents need to know what a tool does to the 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 sentence is concise and front-loaded. But the Args block referencing a controller parameter is dead weight that contradicts the actual schema, and 'Dict with system info output' is a vague filler line that conveys almost nothing. The description is compact but not 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?
Complexity is low: zero parameters and an output schema exists, so the return shape is covered elsewhere. Still, the description leaves a notable gap in explaining what 'system information' encompasses and when the agent should prefer this tool over sibling info queries like rhino_status or rhino_document_summary. It is minimally adequate but thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters, which normally warrants a baseline of 4 since no parameter documentation is needed. However, the description's Args section states 'controller: RhinoController instance,' which implies an argument that does not exist in the schema. This mismatch could mislead an agent into thinking a controller must be supplied or that the schema 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 and resource: 'Retrieve Rhino system information.' This is clear and unambiguous on its own. However, it does not differentiate from sibling information tools like rhino_status, rhino_document_summary, or rhino_document_properties, leaving the agent to guess what 'system information' covers versus those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Sibling tools such as rhino_status, rhino_document_summary, and rhino_document_properties overlap in the informational space, but the description offers no exclusions, prerequisites, or conditions directing an agent to one tool over another. The agent must infer appropriateness from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_taperC
Taper objects along an axis with start/end radii.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations contain only a title ('Taper') with no readOnly or destructive hints, so the description carries the full behavioral burden. It does not disclose that make_copy defaults to false (implying in-place modification of the original objects), which object types are supported (curves, surfaces, solids, meshes?), or how the axis and radii interact. The single sentence adds no behavioral context beyond the nominal action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler; the verb and key concepts appear immediately. It is slightly under-sized for a tool with six effective parameters and no other documentation, but purely as a structural matter it is efficient and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 empty behavior annotations, 0% parameter coverage, and an ambiguous naming relationship to rhino_cmd_taper among hundreds of siblings, this description leaves too much to inference. It omits supported geometry, destructive in-place behavior, parameter semantics, and usage boundaries; the existence of an output schema covers return values but not the missing input 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 for parameter documentation, and it only partially does. The phrase 'along an axis with start/end radii' adds meaning to axis_start/axis_end and start_radius/end_radius, but object_ids and make_copy are left unexplained, and it does not clarify radius units, which end maps to which radius, or what happens if axis_start equals axis_end.
Input schemas describe structure but not intent. Descriptions should explain 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 ('taper') with a resource ('objects') and the governing mechanism ('along an axis with start/end radii'), which clearly conveys the core function. However, it does not differentiate this tool from the near-namesake sibling rhino_cmd_taper or related deformation tools like rhino_bend and rhino_twist, so it stops short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. With roughly 300 siblings including rhino_cmd_taper, rhino_bend, rhino_twist, rhino_flow_along_curve, and rhino_cage_edit, the description gives the agent no basis for choosing or excluding any of them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_textC
Add 3D text annotation. Bridge mode honours the active dim style; standalone uses text-dot fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does add behavioral context beyond readOnlyHint=false by noting that Bridge mode honors the active dimension style and standalone mode uses a text-dot fallback. However, the undefined 'Bridge mode' terminology weakens the usefulness of this 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?
The description is compact and front-loaded with the core action. The mode sentence is terse, though it introduces jargon that could confuse an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 large number of annotation-related siblings and the undefined mode terminology, the description is not sufficient for an agent to confidently choose and invoke this tool. The output schema helps, but the missing mode definition and lack of selection guidance leave clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the meaning or usage of the key parameters such as text, location, height, layer, or name. Schema description coverage is very low, and the description provides little compensation beyond implying that text is placed at a 3D location.
Input schemas describe structure but not intent. Descriptions should explain 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 phrase 'Add 3D text annotation' clearly states the verb and resource. The additional mode note adds context, though it does not explicitly differentiate this tool from siblings like rhino_text_dot or rhino_add_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus the many related annotation tools. The mention of 'Bridge mode' and 'standalone' implies a usage distinction, but these terms are not defined, so an agent cannot act on them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_text_dotA
Add a small label that always faces the camera in Rhino.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, which is consistent with the 'Add' verb, so no contradiction. The description adds the valuable behavioral detail that the resulting object is camera-facing, but does not disclose other useful traits such as the object being persisted in the document, undo implications, or whether an active document is required.
Agents need to know what a tool does to the 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 11-word sentence with zero waste: verb first, resource second, distinguishing behavior last. The 'in Rhino' fragment is mildly redundant given the tool namespace, but it does not detract from the crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with an output schema, the description conveys the core behavior adequately. Gaps remain: it never states that text and location are required inputs, gives no indication that doc_id can target a specific document, and offers no guidance distinguishing it from the related annotation siblings. It is workable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the top-level args parameter, and the description says nothing about parameters. The nested property titles (text, location, layer, doc_id) are somewhat self-explanatory and doc_id/x/y/z carry inline descriptions, but the tool description itself does not compensate for the coverage gap as required at this low coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Add') with a resource ('small label') and a distinguishing trait ('always faces the camera'), which is exactly what separates a text dot from plain text/annotation tools among the many siblings (rhino_text, rhino_add_text, rhino_add_text_object). An agent can tell what this does and when it differs 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 'always faces the camera' trait implies the use case: choose this when a view-independent/camera-facing label is needed. However, there is no explicit when-to-use or when-not-to-use guidance, and the sibling list contains highly similar tools like rhino_add_dot and rhino_text whose boundaries are left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_thickness_analysisA
Display a thickness analysis on selected closed polysurfaces.
Args:
controller: RhinoController instance.
max_thickness: Maximum thickness value for the colour scale.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| max_thickness | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does indicate this is a display action, works on closed polysurfaces, and uses max_thickness for the color scale. But it does not clarify behavior when nothing is selected, whether the analysis creates a persistent object, or what happens for open polysurfaces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a crisp purpose sentence and the Args/Returns structure is tight. The controller line is arguably unnecessary and inconsistent with the schema, but the overall description is compact and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter analysis tool, the description covers the operation, the required object type/selection state, the parameter's meaning, and the return type. It is less complete around failure cases and units, but the output schema reduces the need to document return values further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds useful meaning to max_thickness by explaining it controls the color scale maximum, which the bare schema lacks. However, it also documents a 'controller' argument that is not present in the input schema, creating potential confusion about what should actually be passed when invoking the 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 action ('Display a thickness analysis') on a specific resource/scope ('selected closed polysurfaces'). Among the many sibling analysis tools, this clearly identifies what makes this tool distinct: thickness analysis on closed polysurfaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool ('selected closed polysurfaces') and conveys the precondition that objects must be selected. However, it does not explicitly contrast it with alternatives such as curvature, draft angle, or zebra analysis, nor does it say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_toggle_gridA
Toggle the viewport construction grid on/off.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior, and it does so clearly: it flips the viewport construction grid between visible and hidden. It also implies low risk by targeting a viewport display setting rather than document geometry, though it does not mention whether the active viewport or all viewports are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence contains the verb, resource, and outcome with no filler or redundant information. It is front-loaded and immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 viewport display toggle, the description is complete enough to invoke correctly. The presence of an output schema covers return-value expectations, so the description needs only to state the action and 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?
The tool has zero parameters, so parameter semantics are not a real concern and the schema coverage is trivially 100%. The description correctly communicates that no arguments are needed by describing a simple toggle action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Toggle') and the target resource ('viewport construction grid'), with the on/off effect spelled out. It is clear on its own, though it does not explicitly differentiate itself from the similarly named sibling rhino_set_grid or rhino_place_grid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_set_grid or rhino_place_grid. It does not mention that this is only for the viewport grid visibility state, nor does it note when another grid-related tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_tolerance_getARead-only
Read absolute / angle / relative model tolerances.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Read' aligns with the readOnlyHint annotation, so there is no contradiction. It adds detail about the specific tolerance types returned, but does not disclose additional behavioral traits such as return format, side effects, or document targeting behavior. With annotations already covering read-only safety, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, compact sentence that front-loads the action and object. There is no filler or redundant restatement of the tool name; every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one well-documented parameter and an output schema, the description is nearly complete. It specifies what is read and the annotation covers the safety profile. The only minor gap is not explicitly stating that the default document is sufficient for most calls, but the schema already conveys this.
Complex tools with many parameters or behaviors need more documentation. 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 description does not mention the doc_id parameter, but the input schema provides a default ('active') and a description for it. Since there is only one parameter and the schema largely covers its meaning, the description adds minimal but not critical value. The 0% schema-description-coverage signal is offset by the nested schema's parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and a specific resource ('absolute / angle / relative model tolerances'), clearly identifying the operation. It is distinguishable from the sibling tool rhino_tolerance_set, which would perform the opposite write operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for retrieving tolerance values, and the presence of rhino_tolerance_set as a sibling suggests the alternative for writing. However, there is no explicit 'when to use vs. when not to use' guidance or naming of the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_tolerance_setA
Set absolute / angle / (optional) relative tolerances on the document.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, so the mutation nature is established and the description's 'Set' is consistent with no contradiction. The description adds the '(optional)' nuance for relative tolerance and document-level scope, but it does not disclose persistence of the settings, effects on existing geometry, or influence on subsequent modeling operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler: verb first, then the specific tolerance kinds, then document scope. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with a richly described nested schema and an output schema present, the description plus schema cover the essentials: what is set, which values are optional, and document scope. Missing are minor but useful notes on persistence/effects on existing objects and an explicit pointer to reading tolerances via rhino_tolerance_get.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps directly to three of the four parameters (absolute, angle_degrees, relative) and flags relative as optional, matching its null default. It omits doc_id, but the visible schema already describes it well ('Document handle id; 'active' targets the current document') and supplies units and constraints for every tolerance parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') with a clear resource: tolerances on the document, and enumerates the exact kinds (absolute / angle / optional relative). This cleanly distinguishes it from read-oriented siblings like rhino_tolerance_get and from broader settings tools like rhino_document_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case (changing document tolerance values) but never contrasts it with alternatives such as rhino_tolerance_get for reading tolerances or rhino_document_settings for other document configuration. No exclusions or when-not-to-use guidance is provided, leaving usage context implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_to_nurbsB
Convert selected SubD objects to NURBS surfaces.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Convert selected SubD objects' but does not explain whether the operation creates new objects, modifies originals, requires an active selection, or has any side effects in the Rhino document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is stated in one concise, front-loaded sentence. The extra 'Args' line is largely unnecessary since the schema declares no parameters, but the overall description remains short and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, a brief description may be adequate, and this one covers the core operation. However, it omits selection preconditions, what happens if no SubD objects are selected, and why an agent should choose this over rhino_subd_to_nurbs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so no user parameters need semantic explanation. The description's 'Args: controller: RhinoController instance' line is not reflected in the schema and reads like internal documentation, but it does not create a meaningful parameter ambiguity given the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: convert selected SubD objects to NURBS surfaces. It identifies both the input object type and the output type, which differentiates it from mesh conversion tools like rhino_mesh_to_nurbs. However, it does not distinguish itself from the very similar sibling rhino_subd_to_nurbs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage guidance is provided. It does not say when to prefer this tool over rhino_subd_to_nurbs, rhino_mesh_to_nurbs, or rhino_to_subd, nor does it state prerequisites such as requiring a current Rhino selection of SubD objects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_torusB
Add a torus primitive (mesh approximation in standalone mode).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the mutating nature is expected. The description adds that this produces a mesh approximation rather than a true NURBS/SubD torus, which is useful, but 'standalone mode' is vague and side effects or context are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no filler. The parenthetical adds useful mode information, though 'standalone mode' is used without definition, so it is not perfectly clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with an output schema and required geometry parameters, the description is mostly adequate. However, it leaves key questions unanswered: what 'standalone mode' means, whether this creates a mesh in the active document, and how it differs from sibling torus-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides only minimal parameter context by naming the torus primitive itself. It does not explain center, major_radius, minor_radius, layer, name, or doc_id, so it only weakly compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Add a torus primitive.' The parenthetical 'mesh approximation in standalone mode' adds a distinguishing trait from potential NURBS or SubD torus siblings, though it does not explicitly name any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in standalone mode' is an implied usage signal, but it is never explained and no alternatives are mentioned. An agent cannot tell from the description when to choose rhino_torus over rhino_cmd_torus or rhino_subd_torus.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_to_subdB
Convert selected NURBS or mesh objects to SubD.
Args:
controller: RhinoController instance.
method: Conversion method (e.g., 'FromNURBS', 'FromMesh').
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | FromNURBS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the basic conversion action but does not reveal side effects such as whether originals are replaced, whether new objects are created, what happens if nothing is selected, or whether the selection is consumed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core action, followed by a brief Args list. There is no fluff, though the controller reference in Args is not reflected in the schema, slightly reducing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool description is incomplete for an unannotated mutation-like conversion tool. It lacks usage context, side-effect disclosure, selection requirements, and method constraints. The output schema may document return values, but the description still leaves critical operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides examples for method ('FromNURBS', 'FromMesh') and mentions controller, but controller is not present in the schema and method semantics are not explained beyond examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Convert selected NURBS or mesh objects to SubD.' This clearly distinguishes the tool from sibling tools like rhino_create_subd (creation) and rhino_subd_to_nurbs (reverse conversion).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: the agent should call this when there are selected NURBS or mesh objects to convert to SubD. However, it does not explicitly mention alternatives, prerequisites, or when not to use this tool versus related SubD tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_triangulate_meshA
Convert all quad faces in selected meshes to triangles.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden. It does convey that the tool operates on selected meshes and transforms quad faces, which implies in-place modification. However, it does not disclose whether the operation is destructive, whether undo is available, or what happens if no meshes are selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one focused sentence with no filler. The core action is front-loaded, and the Args line adds minimal but acceptable context. Every word serves the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter mesh conversion tool with an output schema, the description is mostly complete. It identifies the target objects (selected meshes) and the operation. The main gap is that it does not state whether the conversion replaces the original meshes or creates new geometry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is little to document. The description's mention of 'controller: RhinoController instance' is not reflected in the schema but is boilerplate rather than a user-facing parameter. Baseline 4 applies for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Convert all quad faces in selected meshes to triangles.' It clearly differentiates this tool from siblings like rhino_quadrangulate_mesh and other mesh editing tools by defining the exact transformation performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when selected meshes contain quad faces that should be converted to triangles. However, it does not explicitly mention alternatives, exclusions, or when not to use it, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_trimB
Trim objects using selected cutting objects (interactive).
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the tool is interactive and returns a command result, but it does not mention that trimming is likely destructive, whether it depends on current selection, how the interactive prompt proceeds, or whether undo is available.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose. The Args/Returns block is somewhat generic, but it does not bloat the description. It is concise, though the boilerplate adds limited value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an interactive, likely destructive editing tool with no annotations, the description is incomplete. It does not explain how the cutting objects are selected, what happens to the trimmed objects, whether the operation is reversible, or what the agent should expect during interaction. This is not enough guidance for safe and correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty and there are no parameters, so there is little to document. The description adds useful context by mentioning a required RhinoController instance and implying the geometry comes from the current interactive selection, which helps the agent understand why no explicit geometry parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Trim objects') and the mechanism ('using selected cutting objects'), and notes it is interactive. It is easy to understand what the tool does, but it does not explicitly distinguish itself from closely related sibling tools such as rhino_split, rhino_refit_trim, rhino_untrim, or rhino_mesh_trim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor when not to use it. The word 'interactive' hints that user selection is involved, but there are no explicit when-to-use conditions, prerequisites, or excluded scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_truncated_coneA
Create a truncated cone (frustum) in Rhino using the TruncatedCone command.
Rhino prompts: base center -> base radius -> height -> top radius.
Args:
controller: RhinoController instance.
x, y, z: Center of the base circle.
bottom_radius: Radius of the base (larger) circle.
top_radius: Radius of the top (smaller) circle.
height: Height between the two circles.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| height | No | ||
| top_radius | No | ||
| bottom_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining side effects and behavior. It does disclose the prompt sequence (base center, base radius, height, top radius), which gives some insight into the underlying command's behavior, but it does not mention that the tool creates a new object in the Rhino document or any other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and to the point—two sentences with no extraneous information. The purpose is front-loaded, and the prompt order is delivered efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool, the description covers the action and input order, and the output schema handles return values. However, it lacks usage context, such as when to choose this over rhino_cone or how it fits among the many sibling tools. Additional context on prerequisites or typical use cases would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no parameter descriptions (coverage 0%), so the description must compensate. The prompt order implicitly maps x,y,z to base center, bottom_radius to base radius, height, and top_radius, but it does not elaborate on units, coordinate systems, or detailed meanings. This is a partial but not comprehensive 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?
The description clearly states the tool creates a truncated cone (frustum) using the TruncatedCone command, which distinguishes it from sibling shape-creation tools like cone, cylinder, or box. The verb 'Create' and the specific resource make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool over alternatives such as rhino_cone or rhino_cmd_cone. The description only states what it does and the prompt order, with no mention of scenarios or conditions that would make this the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_tubeB
Create a hollow cylindrical tube in Rhino.
Args:
controller: RhinoController instance.
x, y, z: Center of the base annulus.
outer_radius: Outer radius of the tube.
thickness: Wall thickness (inner_radius = outer_radius - thickness).
height: Height of the tube.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| height | No | ||
| thickness | No | ||
| outer_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It only says it creates a tube and returns a status/command dict, with no mention of document side effects, units, coordinate system, failure behavior, or whether the action is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into concise Args and Returns sections with no fluff. Every sentence contributes purpose or parameter meaning, though the controller line hints at an argument not present in the actual schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The parameter definitions and return note are adequate for a simple shape-creation call. However, it omits when to use this vs alternatives, geometric constraints, units, and prerequisites, and the controller argument is not represented in the input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must define parameters, and it does: center x/y/z, outer_radius, thickness with the inner_radius formula, and height. It lacks constraints such as thickness < outer_radius and units, and it mentions a controller argument that is absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a hollow cylindrical tube in Rhino.' The 'hollow' and wall-thickness semantics distinguish it from a plain cylinder, but it does not explicitly differentiate from siblings like rhino_cylinder or rhino_pipe_from_curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many shape-creation siblings. It does not state prerequisites, exclusions, or alternatives; the description only defines what the tool does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_turntableC
Render a turntable animation to output_path (PNG sequence or GIF).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=false, indicating this is a mutating/state-changing operation, likely creating files. The description discloses output is a PNG sequence or GIF, but does not state that it generates a file on disk, whether it requires an active document or view, whether it spins the camera/object, or any other side effects. With no readOnlyHint=true, the agent needs more behavioral detail but gets only a terse instruction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, communicates core function and output format. Could be improved by naming alternatives or adding context but it is efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool generates an animation, requires output_path, has width/height/frames, and has an output schema. Missing context: how frames relate to rotation angle, whether it exports PNG sequence or GIF based on file extension, whether it renders current view or spins model, and relationship with rhino_turntable_render. Agent may call it correctly from schema but will lack key behavioral semantics.
Complex tools with many parameters or behaviors need more documentation. Simple 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 no parameters have descriptions except doc_id. However, the description mentions output_path as destination and parameters are semantically clear from names: frames, width, height, doc_id. It adds no extra meaning beyond the schema, so 3 is baseline given low coverage is compensated by self-explanatory 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?
Description states 'Render a turntable animation to output_path (PNG sequence or GIF)', which clearly identifies the verb, resource, and output format. It distinguishes from siblings like rhino_render_preview, rhino_render_viewport, and rhino_turntable_render by focusing on animation, though it doesn't explicitly name those alternatives or explain difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Sibling tools like rhino_turntable_render and rhino_render_viewport overlap conceptually, but the description does not clarify which one to pick for a turntable animation task. Context is implied by the word 'turntable' but no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_turntable_renderC
Render a turntable sequence (camera orbits around target) to output_dir.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a rendering operation and mentions writing to output_dir, but it does not disclose side effects such as file creation, overwriting behavior, render time, or failure modes. The readOnlyHint: false annotation is consistent with the described behavior, so there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that directly states the operation and key references. It is concise and front-loaded, with no unnecessary words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex input schema and numerous parameters, the description is too sparse. It does not explain the meaning or defaults of key parameters like frame count, radius, or sample settings, and it lacks context about expected output or prerequisites, making it incomplete for an agent to use correctly without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only clarifies target and output_dir, which are already partially named in the schema. Many parameters such as width, height, radius, samples, frame_count, and render_height are left unexplained, so the description 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 clearly states the tool renders a turntable sequence with the camera orbiting a target, which distinguishes it from general render or camera tools. However, it does not mention specific output format or additional behavior, so it is clear but not fully differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives like rhino_turntable, rhino_render_to_file, or rhino_render_preview. The implied usage is present but not stated, and no when-not-to-use conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_tween_surfacesA
Generate tween (morphed intermediate) surfaces between two surfaces.
Pre-select the two source surfaces before calling.
Args:
controller: RhinoController instance.
count: Number of intermediate tween surfaces to generate.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the selection prerequisite and the return shape (Dict with 'status' and 'command'), which is helpful. However, it does not explain the side effects on the Rhino document (e.g., whether new surfaces are created and whether source surfaces remain untouched), error behavior when selection is invalid, or whether the operation is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized and front-loaded: the core purpose and selection prerequisite appear before the Args section. The Args/Returns format is efficient, though the inclusion of the schema-missing 'controller' parameter adds slight noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool, the description covers the key action, the selection prerequisite, and the output format. But because there are no annotations and no mention of validation behavior or document-level side effects, an agent is left without enough information to fully anticipate the outcome of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain count as 'Number of intermediate tween surfaces to generate,' which is meaningful. However, it references a 'controller' argument that is absent from the input schema, creating confusion about the actual callable interface, and it gives no constraints or range for count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Generate'), a specific resource ('tween/morphed intermediate surfaces'), and a precise input context ('between two surfaces'). It is clearly distinct from sibling surface tools like rhino_blend_surface or rhino_match_surface because it emphasizes morphing between two pre-selected surfaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 an explicit and important prerequisite: 'Pre-select the two source surfaces before calling.' This provides clear operational context. It does not, however, name alternative tools or explain when not to use this tool, 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.
rhino_twistC
Twist objects around an axis by a specified angle.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title 'Twist' with no read-only or destructive hints, so the description carries the behavioral burden. It states that objects are twisted but does not disclose that this is a mutating operation, whether make_copy preserves originals, how angle direction sign is determined, or whether the twist is permanent. The schema shows make_copy exists, but the description does not explain the behavioral consequence of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence that is immediately informative. It names the operation, the target objects, the mechanism (axis), and the key parameter (angle). No filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a transform modifying objects, the description is too thin. It does not mention that the operation is destructive unless make_copy is true, how the angle sign behaves along the axis, which object types are supported, or how results relate to the original geometry. With no output schema details in the description and 0% schema coverage, an agent lacks enough context to correctly predict outcomes or decide between twist alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple 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 5 parameters (object_ids, axis_start, axis_end, angle_degrees, make_copy) nested under args. The description only mentions 'axis' and 'angle' generically, but does not explain how axis_start/axis_end define the twist axis direction, that angle_degrees is in degrees, or what make_copy=false does to the original objects. The Point3dModel nested schema covers coordinates, but the top-level twist semantics remain under-explained.
Input schemas describe structure but not intent. Descriptions should explain 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 'Twist objects around an axis by a specified angle' provides a clear verb ('Twist'), resource ('objects'), and key geometric parameters (axis and angle). It distinguishes itself from related transforms like rotate/taper/bend by specifying the axis-based twist operation. However, it doesn't explicitly differentiate from rhino_cmd_twist, its closest sibling, which could reduce clarity slightly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_rotate, rhino_bend, rhino_taper, or rhino_cmd_twist. There is no mention of object types, prerequisites, or scenarios where twisting is the appropriate transform. An agent would have to infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_undoA
Undo the last operation(s) in the Rhino document.
Each step reverses one undo record. Changes made by MCP tools are grouped into undo records automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the sparse annotation by stating that MCP tool changes are automatically grouped into undo records and that each step reverses one record. However, it does not disclose potential destructive effects, whether undo can be reversed via redo, or what happens when there are no undoable operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with the core action front-loaded. The second sentence adds essential grouping semantics without unnecessary detail 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 single-parameter tool with an output schema, the description covers the operation, the step semantics, and the MCP-specific grouping behavior. The main gap is not mentioning the closely related rhino_cmd_undo and rhino_redo tools, but no critical call-time information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the 'steps' parameter as 'Number of operations to undo,' but the tool description adds the important nuance that one step equals one undo record and that MCP changes are batched automatically. This helps prevent the misconception that steps count each individual MCP tool call.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Undo the last operation(s) in the Rhino document,' and clarifies that each step maps to one undo record. It is clear about what the tool does, but it does not differentiate it from the closely related sibling rhino_cmd_undo or reference rhino_redo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rhino_redo or rhino_cmd_undo. The intended use is implied, but no explicit when/when-not conditions or alternative-tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_ungroupA
Ungroup selected groups, releasing individual objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It communicates that this is a mutating operation and that individual objects are released from the group. It does not discuss edge cases or selection prerequisites, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every phrase contributes meaning: the action, the target, and the result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 operation, the description sufficiently conveys the action, target, and expected outcome. It leaves the selection mechanism implicit, but the phrase 'selected groups' is enough to guide correct invocation in the Rhino context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties and full coverage, so there are no parameters for the description to clarify. The phrase 'selected groups' correctly refers to Rhino's document selection state rather than a formal argument, which the empty schema makes clear.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Ungroup') and resource ('selected groups'), and clarifies the outcome ('releasing individual objects'). This distinguishes it from related operations like rhino_group, rhino_explode, or rhino_block_explode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the context of use: groups must be selected in the Rhino document. It does not explicitly name exclusions or alternatives, but for a zero-parameter selection-based tool this provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_unify_mesh_normalsB
Unify the normals of selected mesh faces to all point outward.
Args:
controller: RhinoController instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It does disclose that normals are unified to point outward, but it does not mention whether the operation is destructive/reversible, whether a selection is required, or what side effects may occur on disconnected mesh objects. This is under-disclosed for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is concise and front-loaded, but the 'Args: controller: RhinoController instance.' line does not correspond to any input schema property and adds noise. The description is short but not every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema and no parameters, so the description is mostly sufficient for a basic call. However, it lacks explicit selection prerequisites, behavior when nothing is selected, and any comparison to the closely related rhino_flip_mesh_normals tool, making it incomplete for an agent deciding between related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds no meaningful parameter semantics for user-supplied arguments, and the 'Args: controller' line is an implementation detail rather than a callable parameter. This is slightly noisy but does not misrepresent the actual tool parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: 'Unify the normals of selected mesh faces to all point outward.' This clearly identifies the verb, resource, and intended result. However, it does not explicitly differentiate itself from the closely related sibling rhino_flip_mesh_normals, 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 guidance is provided about when to use this tool versus rhino_flip_mesh_normals or other mesh-normal tools. It also does not mention prerequisites such as having mesh faces selected, or what happens if no mesh is selected. The usage context is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_unjoin_edgeB
Un-join selected edges from a polysurface.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states the action but does not disclose side effects, reversibility, or any impact on the selection or document state, which is important for a modifying operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of a single purpose sentence plus a brief list of arguments and return type. It is not overly verbose and conveys the necessary information without extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description includes the return type ('Dict with command result') and identifies the controller argument, which helps set context. However, it lacks details about error conditions, selection requirements, or any expected side effects, leaving some ambiguity for a complex Rhino operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema indicates zero parameters, but the description mentions an 'Args: controller: Rhino instance' parameter, creating a contradiction. The description adds information that conflicts with the schema, confusing the agent about whether a controller argument is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Un-join') on a specific resource ('selected edges from a polysurface'), making the tool's purpose immediately understandable and distinguishable from other edge-related tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool operates on the current selection in Rhino, but it does not explicitly state when to use this tool versus alternatives like rhino_split or rhino_merge_edge, nor does it mention any prerequisites (e.g., edges must be selected).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_unlock_allA
Unlock all locked objects in the document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It names the operation and scope but omits edge cases and consequences, such as whether objects locked via locked layers are affected, whether undo covers the action, or whether any confirmation/output is produced. The mutating nature is only implied by the verb 'unlock.'
Agents need to know what a tool does to the 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 zero filler. Every word earns its place, and the core semantics are immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-argument command with an output schema present, the description pins down the exact state transition (all locked objects become unlocked) and the scope (document-wide). The only missing context is when to use it, which is already penalized under usage_guidelines.
Complex tools with many parameters or behaviors need more documentation. 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 zero parameters with 100% coverage, so the baseline is 4. There is nothing for the description to add about arguments, and it correctly does not invent any.
Input schemas describe structure but not intent. Descriptions should explain 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 ('unlock') with an explicit resource and scope ('all locked objects in the document'). This clearly differentiates it from siblings like rhino_lock_selected (locks a selection) and rhino_layer_lock (locks a layer).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over related siblings such as rhino_lock_selected, rhino_layer_lock, or rhino_show_selected. An agent receives no hint about the typical workflow, such as 'unlock everything before batch editing' or 'use this instead of unlocking objects individually.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_unrollA
Unroll a developable surface or polysurface flat.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title and no readOnly or destructive hints, so the description carries the behavioral disclosure burden. It says the surface is unrolled flat but does not disclose whether this creates new geometry, modifies the original, or how non-developable inputs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one focused sentence with no filler. The verb, resource, and key condition 'developable' are front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 command with an output schema, the description conveys the core operation adequately. However, it omits practical details such as failure on non-developable surfaces, whether the original geometry is preserved, and what the unrolled result consists of beyond being flat.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no explicit parameter-level guidance, but the input schema already documents both object_id and explode meaningfully. The word 'developable' indirectly reinforces what object_id should reference, though behavior of the explode option is not expanded beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Unroll', with a clear resource, 'a developable surface or polysurface', and states the intended outcome, 'flat'. It is distinct from the many surface creation and editing sibling tools because only this tool performs unrolling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool when you have a developable surface or polysurface and want it flattened. It does not explicitly list exclusions or alternative tools for non-developable or other flattening scenarios, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_untrimA
Remove trim boundaries from selected surfaces.
Args:
controller: RhinoController instance.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only source of behavioral disclosure. It communicates the core mutation: removing trim boundaries from surfaces. But it does not add context about reversibility, whether the original trim geometry is destroyed, or what happens if no valid surface is selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one clear action sentence followed by minimal Args/Returns boilerplate. There is no filler, and the key behavior is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter selection-based command, the description covers the primary behavior and target object type. However, it omits useful contextual details such as requiring an active Rhino document, handling of mixed selections, and the no-op/error case when nothing is selected. The output schema exists, so return-value details are not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description mentions 'controller: RhinoController instance,' which is an internal detail rather than a user-facing parameter, but since the tool operates on the current selection, no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and object: 'Remove trim boundaries from selected surfaces.' This clearly identifies the action and the resource, and it distinguishes rhino_untrim from related tools like rhino_trim, which adds trims, and rhino_refit_trim, which modifies trims rather than removing 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?
The description implies usage by saying the tool acts on 'selected surfaces,' which tells the agent that selection must already exist. However, it does not explicitly state when to prefer rhino_untrim over alternatives, nor does it mention exclusions or failure conditions such as non-surface selections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_unweld_meshC
Unweld vertices to break mesh smoothing.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation via readOnlyHint=false, and the description only adds the effect 'break mesh smoothing'. It does not disclose whether all vertices are unwelded or only selected ones, whether smoothing/normals are permanently changed, or what the undo/destructive profile is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is compact and easy to scan, though the brevity comes at the cost of important operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return shape, but the description lacks essential invocation context: how the target mesh is selected, whether the unweld applies to the entire mesh, and how this operation relates to welding or smoothing. An agent would likely need to inspect the schema and sibling tools to use this 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% and the description does not mention object_id, doc_id, name, or layer. The agent is given no help understanding that object_id is required to target the mesh or what the optional name/layer fields do. The schema titles provide only minimal, generic hints.
Input schemas describe structure but not intent. Descriptions should explain 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 names the specific verb 'Unweld' and the resource 'vertices', and states the intended effect 'to break mesh smoothing'. This is clear enough to identify the operation and distinguish it from rhino_weld_mesh, though it does not explicitly reference any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rhino_weld_mesh, rhino_cmd_unweld_mesh, or other mesh-editing operations. The intended usage must be inferred entirely from the tool name and the single-sentence description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_uv_grid_panelsA
Sample a surface on a regular UxV grid and emit it as panels.
``output='mesh'`` writes a single quad mesh (one face per panel) to
the doc; ``'curves'`` writes count_u+count_v isocurves; ``'corners'``
only returns the (count_u+1) x (count_v+1) sample points without
writing geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by clearly disclosing side effects: 'output='mesh'' writes a quad mesh to the doc, 'curves' writes iso-curves, and 'corners' returns points without writing geometry. This is valuable behavioral context that readOnlyHint=false alone does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-sentence summary followed by clearly formatted explanations of the three output modes. Every sentence earns its place, and code formatting makes the options easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three distinct output behaviors, the description covers what geometry is produced, whether each mode writes to the document, and the exact sample-point count for the corners mode. Return-value details are presumably handled by the output schema, and layer/doc_id behavior is documented in the schema, leaving only minor gaps around usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents surface_id, count_u/count_v bounds, output choices, layer, and doc_id defaults, so the description adds little parameter-level detail. Its mention of count_u+count_v and sample-point counts reinforces the schema but does not meaningfully extend it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific operation ('Sample a surface on a regular UxV grid') and a clear output concept ('panels'), and the description then enumerates three concrete output modes. It is specific and understandable, but it does not explicitly distinguish itself from similarly named siblings like rhino_panelize_surface or rhino_create_uv_grid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 makes the tool's behavior clear enough that an agent can infer it is for generating UV-grid panel geometry from a surface. However, it never explicitly states when to choose this tool over related alternatives such as rhino_mesh_from_surface, rhino_panelize_surface, or rhino_create_uv_grid, and it offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_validate_brepBRead-only
Validate a Brep — closed/solid/manifold, face/edge counts, log of issues.
Standalone surfaces ``IsValid``/``IsSolid``/``IsManifold``/edge+face
counts and the rhino3dm validation log. Bridge mode adds a list of
naked-edge identifiers and lengths via RhinoCommon.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true, so the description does not need to re-state safety. It adds useful behavioral detail beyond annotations: standalone mode returns IsValid/IsSolid/IsManifold, counts, and a validation log, while bridge mode adds naked-edge identifiers and lengths. The only notable gap is that 'Bridge mode' is not defined in terms of inputs or environment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise and front-loaded with the main purpose. The second sentence adds valuable detail, though the indentation and unexplained 'Bridge mode' phrase add minor ambiguity. Overall, every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are already documented elsewhere, and the readOnlyHint annotation covers mutation concerns. However, the tool has at least one important ambiguity—what triggers bridge mode and how it changes validation—and no guidance on selecting this tool over related validation/checking tools. This is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0%, and the description does not explain the parameters or how doc_id/object_id affect behavior. The mention of 'Standalone' vs 'Bridge mode' is relevant to behavior but is not mapped to a parameter, leaving the agent without enough information about how to select a mode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Validate a Brep', followed by the key validation dimensions (closed/solid/manifold, face/edge counts, issue log). This clearly identifies the tool's function, though it does not explicitly differentiate it from nearby validation tools like rhino_check_naked_edges or rhino_check_bad_objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. It implies a validation use case but leaves the agent to infer when this is the right choice among many similar geometry-analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_variable_blend_srfA
Create a variable-radius blend surface between two surface edges.
Pre-select the two naked edges before calling.
Args:
controller: RhinoController instance.
Returns:
Dict with 'status' and 'command' keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It reveals a stateful precondition and states that the return is a dict with 'status' and 'command' keys, which suggests a command-wrapper behavior. However, it does not disclose side effects on the original surfaces, how variable radii are provided, or what happens if the selected edges are not naked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main action, and includes a necessary precondition. The Args/Returns boilerplate is slightly redundant given the schema, but it is minimal and does not waste significant space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the output schema being present, key operational context is missing. The tool is called 'variable-radius' but has zero radius parameters and the description never explains how radii are specified. It also omits whether the original surfaces are altered or trimmed, and what the command flow is after pre-selection. An agent has enough to initiate the call but not enough to fully predict the outcome or troubleshoot.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero schema parameters and schema coverage is 100%, so the description does not need to explain parameters. It does mention a controller argument in the Args block, which is not in the schema; this adds slight ambiguity but does not hurt usability much.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'variable-radius blend surface between two surface edges,' which is specific and distinguishes it from plain blend or fillet tools. However, it does not explicitly name a sibling alternative, so it stops short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 precondition: 'Pre-select the two naked edges before calling.' This tells the agent when and how to set up the operation. It does not mention when not to use the tool or name alternative tools, but the context is strong enough to score above average.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_variable_filletA
Create a variable-radius fillet surface between two surfaces.
The start/end radii are passed as option overrides; edge selection
is performed interactively.
Args:
controller: RhinoController instance.
start_radius: Fillet radius at the start of the edge.
end_radius: Fillet radius at the end of the edge.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| end_radius | No | ||
| start_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose the key non-obvious traits: the radii are supplied as option overrides, edge selection is interactive, and a command-result dict is returned. It does not detail prerequisites or side effects on existing geometry, but the core interaction warning is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is compact and front-loaded: purpose, interaction behavior, args, and return type each get one short section with no filler. Minor redundancy and the ghost controller parameter keep it from a perfect structure score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 interactive tool it covers the essentials: what is created, which radii to pass, that edge selection is interactive, and the return shape. Still, it omits whether the user must preselect the two surfaces/edge, and it does not route to the constant-radius sibling, so an agent is left to infer some setup steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions, and the description gives meaning to start_radius and end_radius as radii at the start/end of the edge, which is genuinely helpful. The Args block also lists a controller parameter that does not exist in the input schema, creating a confusing mismatch that prevents a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a variable-radius fillet surface between two surfaces.' The 'variable-radius' qualifier and the start/end radii distinction separate it from the constant-radius fillet_surface siblings without needing to name 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 tells the agent that radii are option overrides and that edge selection will be interactive, so the agent knows user participation is required. However, it never explicitly states when to prefer this over rhino_fillet_surface or rhino_variable_blend_srf, so the when-to-use guidance remains mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_view_capture_to_clipboardA
Capture the active viewport to the clipboard.
Args:
width: Image width in pixels.
height: Image height in pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the core behavior—capturing the active viewport and sending it to the clipboard—but does not mention potential side effects like overwriting existing clipboard contents or what happens if no viewport is active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the key action. The parameter documentation is minimal and directly useful, with no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple two-parameter utility with an output schema, so the description covers nearly everything needed to invoke it correctly. It could be improved by noting clipboard overwrite behavior or differentiating from file-capture tools, but the core invocation context 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. The Arg docs add meaningful semantics by specifying that width and height are image dimensions in pixels, which the schema alone does not provide. No constraints or minimums are given, but the two parameters are adequately explained for typical use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: capture the active viewport to the clipboard. It is distinct from likely siblings like rhino_view_capture_to_file because the destination is explicit, though it does not name or differentiate from those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rhino_view_capture_to_file, rhino_screenshot, or rhino_render_viewport. The description explains what the tool does but not the conditions that would make it the best choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_view_capture_to_fileA
Capture the active viewport to a PNG file.
Args:
file_name: Output filename (saved to D:/RhinoFiles/).
width: Image width in pixels.
height: Image height in pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| file_name | No | capture.png |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals that the output is saved to D:/RhinoFiles/ as a PNG, which is useful, but it does not mention whether existing files are overwritten, whether a viewport must be active, or any side effects. For a non-destructive capture tool, the disclosed behavior is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose in the first sentence. The parameter list uses minimal words per parameter, with no fluff, repetition, or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple capture tool with an output schema, the description covers the essential context: what is captured, the output format, the destination directory, and the meaning of all parameters. It lacks only usage guidance and overwrite behavior, which are not critical for a basic viewport capture but would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the generic parameter titles. It does: file_name is explained as the output filename with a fixed directory, width as image width in pixels, and height as image height in pixels. This adds real meaning beyond the schema, though it does not mention constraints or 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 clear verb and resource: capture the active viewport to a PNG file. This differentiates it from siblings like rhino_view_capture_to_clipboard and rhino_screenshot by specifying both the active viewport as the source and a PNG file as the destination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose this tool over alternatives such as rhino_view_capture_to_clipboard, rhino_screenshot, or rhino_render_to_file. There are no exclusions, prerequisites, or context cues beyond the core action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_viewport_imageA
Save the current viewport pixels to a PNG file.
Lightweight alternative to ``rhino_render_to_file`` — no render engine
is invoked, just a viewport bitmap dump. Use 0 for ``width``/``height``
to inherit the on-screen viewport size.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a meaningful behavioral trait beyond the annotations: no render engine is invoked, just a viewport bitmap dump. This helps the agent predict cost and side effects. It also notes that width/height of 0 inherit the on-screen viewport size. It does not discuss file overwrite behavior, but 'save to a PNG file' is sufficient for this simple operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. The second sentence adds a justification and a parameter hint without wasted words. Every sentence earns its place, and the structure is easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 viewport capture tool, the description plus schema provides enough to select and invoke it correctly. It covers the action, the lightweight mechanism, and the key width/height behavior. The output schema handles return-value expectations, so not explaining the return shape is acceptable. The main gap is sparse explanation of the remaining parameters in the description itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds valuable meaning for width and height ('Use 0 to inherit the on-screen viewport size'), which is not obvious from the schema alone. However, schema description coverage is reported as 0%, and the description does not compensate for the remaining parameters such as transparent_bg, view_name, doc_id, or output_path, even though some of those do have descriptions inside the nested schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save the current viewport pixels to a PNG file') with a specific verb and resource. It also distinguishes itself from rhino_render_to_file by noting it is a lightweight viewport bitmap dump rather than a rendered output. However, it does not explicitly differentiate from very similar sibling capture tools like rhino_view_capture_to_file or rhino_screenshot, so it stops short of full sibling separation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: use this tool when you need a fast viewport capture without invoking a render engine, and it explicitly names rhino_render_to_file as the heavier alternative. It could be stronger by mentioning when one of the other capture siblings would be more appropriate, but the main decision boundary is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_viewport_previewA
Capture a viewport preview restricted to a selection or layer set.
Spotlights ``selection_ids`` and/or objects on ``layers``; everything
else is either ghosted (default) or hidden during the capture and
restored afterwards. Useful for multi-step LLM verification flows
where only the recently added objects need to be visualised. Bridge
only.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only readOnlyHint=false), so the description carries most of the burden. It discloses that non-target objects are 'ghosted (default) or hidden during the capture and restored afterwards' and notes 'Bridge only,' which is genuine behavioral context. However, it omits the zoom_to_selection camera side effect and any persistent state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place. The purpose statement is front-loaded, the ghost/hide-restore behavior is compactly explained, and the use case plus Bridge-only constraint add necessary context without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary. The description covers the filtering behavior, default ghosting, restoration, and the intended verification-flow usage. It could be more complete by explicitly contrasting with unfiltered capture tools and clarifying what 'Bridge only' implies, but nothing critical 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?
The schema itself already provides descriptions for path, doc_id, layers, ghost_others, selection_ids, and zoom_to_selection, so the structured data does the heavy lifting. The description adds the spotlight/ghost conceptual framing and confirms the ghosting default, but adds little meaning beyond what the schema supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and scope: 'Capture a viewport preview restricted to a selection or layer set.' The 'Spotlights selection_ids and/or objects on layers' sentence makes the filtering behavior unmistakable, clearly distinguishing this from plain capture siblings like rhino_viewport_image, rhino_screenshot, and rhino_view_capture_to_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use context: 'Useful for multi-step LLM verification flows where only the recently added objects need to be visualised.' It does not name alternative tools or state when-not-to-use, stopping short of full routing guidance but providing clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_view_setC
Activate a saved named view.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide readOnlyHint=false, and the description says 'activate,' implying a state change. But the description adds no further behavioral context beyond that: it does not say whether the document is modified, whether a missing named view causes an error, or what side effects occur. No contradiction with annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the core action immediately and uses only six words, so every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and an output schema, the description is minimally adequate. Still, it lacks usage routing and behavioral side-effect disclosure, so an agent might invoke a sibling tool or be surprised by the lack of feedback if the named view does not exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds only the general notion of a 'named view,' which partially maps to the name parameter. The nested schema does document name and doc_id, but the stated schema description coverage is 0%, and the description itself does not mention doc_id or the args wrapper. It therefore does not sufficiently 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?
The description clearly states the action: 'Activate a saved named view.' It names the resource (a saved named view) and the verb (activate), and the word 'saved' helps distinguish it from view-creation or view-listing tools. However, it does not explicitly differentiate it from nearby siblings like rhino_set_view or rhino_named_views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as rhino_named_view_save, rhino_named_views, or rhino_set_view. There is no mention of prerequisites, exclusions, or context that would help an agent choose among view-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_volumeARead-onlyIdempotent
Compute the volume of a closed mesh (Brep volume requires bridge).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuine behavioral constraints — requiring a closed mesh and stating that Brep volume requires a bridge — which are the operational limits an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly packed sentence of 14 words. The core action is front-loaded, the input constraint follows immediately, and the Brep caveat is appended last. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple measurement tool with a read-only annotation and an output schema, the description is mostly adequate. However, the 'bridge' reference is unexplained, behavior on open meshes is unstated, and the overlap with rhino_cmd_volume is not resolved.
Complex tools with many parameters or behaviors need more documentation. Simple 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 reported as 0%, so the description carries the burden. It adds the key semantic that object_id must reference a closed mesh, but it doesn't explain doc_id or otherwise clarify the parameters; doc_id's schema description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Compute the volume of a closed mesh' — and adds the closure constraint plus the Brep caveat. However, it doesn't differentiate from closely related siblings such as rhino_cmd_volume or rhino_volume_centroid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use it for closed meshes, and not for Breps unless a 'bridge' is available. This is a partial when-not exclusion, but no alternative tool is named and the bridge mechanism is left vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_volume_centroidA
Calculate the volume centroid of selected closed solids.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing centroid coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'calculate' suggests a read-only operation and the return type is noted, but there is no explicit statement about side effects, selection changes, or behavior on invalid or inadequate selections. With no annotations, this is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences and front-loads the main purpose, followed by the return information. It contains no fluff or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only centroid query, the description covers what is computed and what is returned. It does not specify behavior for missing selections or invalid closed solids, but the output schema likely fills the remaining detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no schema parameters to document, so the high schema coverage means little additional explanation is required. The mention of the controller argument is minimal but consistent with the tooling pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (calculate), the object (volume centroid), and the target (selected closed solids). It is distinct from related tools such as rhino_area_centroid and rhino_volume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to use this tool instead of alternatives or mention any preconditions beyond having selected closed solids. It leaves the usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_weld_meshB
Weld coincident vertices in a mesh.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, so the mutation risk is known. The description adds that the operation merges coincident vertices, which is useful context. However, it does not disclose whether the input mesh is modified in-place, what tolerance is used, or whether the operation can be undone.
Agents need to know what a tool does to the 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, terse sentence with no filler. The core operation is front-loaded and every word 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 definition is minimally adequate for a simple single-object mesh operation, and an output schema exists so return values need no explanation. However, the lack of usage guidance, parameter descriptions, and side-effect details leaves gaps for an agent deciding when and how 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%, and the description does not compensate by explaining the required object_id or the optional name, layer, and doc_id parameters. It only implies that the target is a mesh, leaving the agent to infer parameter roles from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Weld coincident vertices in a mesh.' It identifies what the tool does with enough precision to distinguish it from most mesh operations. However, it does not differentiate itself from the sibling rhino_cmd_weld_mesh, which appears to perform the same operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as rhino_unweld_mesh, rhino_cmd_weld_mesh, or mesh repair tools. There is no mention of prerequisites, target object selection, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_whatB
Display detailed properties of selected objects.
Args:
controller: RhinoController instance.
Returns:
Dict with command result containing object information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Display' suggests a read-only operation, and the return type is noted, but the description does not disclose whether selection state is modified, what happens with no selection or multiple object types, or any side effects. This is shallow for a tool with zero annotation support.
Agents need to know what a tool does to the 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 sentence is short and front-loaded: 'Display detailed properties of selected objects.' The Args/Returns boilerplate is minimal and does not add much noise. It is concise, though the Returns line is generic enough that it earns little substantive credit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 inspection tool with an output schema, the description is minimally viable: it states the operation and the object scope. However, it omits important context such as the requirement to have objects selected before calling, behavior on empty selection, and how this differs from the many similar object-info sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no properties, so there is little for the description to clarify; per the zero-parameter baseline this rates well. The mention of a RhinoController instance adds some context, although it is not reflected in the schema and may be an implementation detail rather than a user-supplied parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb+resource combination: 'Display detailed properties of selected objects.' It identifies both the action and the target, and the scope ('selected objects') helps distinguish it from tools operating on named objects. It does not explicitly differentiate it from similar sibling tools such as rhino_object_info or rhino_list_objects, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when properties of currently selected objects are needed, but it gives no explicit guidance about when to choose this tool over rhino_object_info or rhino_get_object_info, and does not mention prerequisites such as making a selection or what happens if nothing is selected. No alternatives or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_wire_cutB
Cut a solid with a wire (curve) extruded through the object.
Args:
controller: RhinoController instance.
depth: Cut depth (extrusion distance of the wire).
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It reveals the cut mechanism and depth, but does not state whether the operation is destructive, what happens to the original solid, whether it operates on the current selection, or what the result objects are. The undocumented 'controller' argument in the description also conflicts with the schema, adding confusion.
Agents need to know what a tool does to the 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 one concise sentence and the parameter note is brief. The Args block includes a controller entry not reflected in the schema, which is minor noise but not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool performs a nontrivial modeling mutation with no annotations and no object parameters in the schema, yet the description never explains how the solid and wire are selected or what the expected document state is. A successful agent call requires inferring hidden selection semantics, which is a significant completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds real meaning to the only schema parameter by explaining depth as the extrusion distance of the wire. It leaves units and direction unspecified, and it lists a controller parameter that does not appear in the schema, so it is not fully precise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Cut'), resource ('a solid'), and mechanism ('wire (curve) extruded through the object'), which makes the tool's core purpose understandable and distinguishable from many sibling modeling tools. It does not explicitly mention selection or the resulting split, so it stops short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case—cutting a solid with a curve/wire—is implied by the first sentence, but the description gives no explicit when-to-use guidance and does not distinguish this from related operations such as rhino_split, rhino_boolean_split, or rhino_boolean_difference. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zebraCRead-only
Run zebra-stripe surface continuity analysis (bridge required).
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds one useful behavioral fact: the tool requires the Rhino bridge to be present. It does not disclose what happens when the bridge is missing or whether the analysis applies to a selected object versus the supplied object_id, but with annotations present this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and contains no filler. The key prerequisite is included in a parenthetical, though placing it at the end slightly reduces its prominence. Overall, this is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and read-only annotation, the description still leaves important gaps: it does not explain what object to pass, whether it analyzes an existing selection or the supplied object_id, or how it differs from the near-duplicate sibling `rhino_zebra_analysis`. The bridge requirement is helpful but not sufficient for confident tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter-level meaning. The single top-level `args` parameter and the required `object_id` are undocumented in the description, so an agent does not know how to identify the target surface. The phrase 'surface continuity analysis' only weakly implies that a surface object is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Run zebra-stripe surface continuity analysis.' It is immediately understandable and not a tautology. However, it does not distinguish itself from the sibling tool `rhino_zebra_analysis`, which appears to be the same or closely related operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage hint is the parenthetical 'bridge required,' which is a prerequisite rather than guidance about when to prefer this tool over alternatives. No mention is made of how this differs from `rhino_zebra_analysis`, `rhino_curvature_analysis`, or `rhino_curve_continuity`, so the agent receives no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zebra_analysisC
Display zebra stripe analysis on selected surfaces.
Args:
controller: RhinoController instance.
stripe_direction: 'Horizontal' or 'Vertical'.
stripe_size: Size of the zebra stripes.
Returns:
Dict with command result.
| Name | Required | Description | Default |
|---|---|---|---|
| stripe_size | No | ||
| stripe_direction | No | Horizontal |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully communicate behavioral traits. 'Display' implies a non-destructive visual operation, but it does not state whether geometry is modified, whether the analysis replaces a previous display, or what 'selected surfaces' means operationally. The generic 'Returns: Dict with command result' adds little transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose in the first sentence. The Args and Returns sections are cleanly structured and add relevant information without significant verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, but the description is incomplete for reliable agent use. It does not mention that surfaces must be preselected, does not distinguish the tool from the sibling rhino_zebra, and leaves key behavioral details unspecified. The schema also lacks descriptions, so the tool description must carry more weight than it does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 0%, the description is the only source of parameter meaning. It adds useful value by listing 'Horizontal' or 'Vertical' for stripe_direction and identifying stripe_size as the stripe size. However, it lacks units, ranges, or typical values for stripe_size, and it lists a 'controller' argument that is not present in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Display zebra stripe analysis on selected surfaces.' This is clear and distinguishes the tool as a visual analysis operation. However, it does not differentiate it from the closely named sibling tool 'rhino_zebra', so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives such as rhino_zebra or rhino_curvature_analysis. It also omits the implied prerequisite that surfaces must already be selected before calling the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zoom_extentA
Zoom the active view to the extent of selected (or all) objects.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description doesn't disclose any side effects beyond the obvious view change, and the annotation readOnlyHint=false already indicates it modifies the view state. It adds little extra behavioral context, such as how object visibility or layer state might influence the zoom result.
Agents need to know what a tool does to the 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, unambiguous sentence that conveys the essential action and optional scope without any fluff. It is well-structured and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 view-zoom command, the description fully covers the action, target view, and the optional object restriction. No further context is necessary for a user to understand or invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The phrase 'selected (or all)' loosely corresponds to the object_ids parameter, but the schema already provides descriptive comments for doc_id and object_ids. The description does not add meaningful detail beyond what the schema already specifies, so it does not elevate the parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: zooming the active view to the extent of selected or all objects. It uses a specific verb ('Zoom') and resource ('active view'), but does not explicitly differentiate it from sibling view-zoom tools like rhino_zoom_object or rhino_zoom_window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 some usage context by indicating that zooming can be restricted to selected objects via object_ids, otherwise it targets all visible objects. However, it does not reference alternative tools or provide guidance on when to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zoom_extentsA
Zoom to the extents of all geometry.
Args:
all_viewports: If True, zoom all viewports; otherwise only the active one.
| Name | Required | Description | Default |
|---|---|---|---|
| all_viewports | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does clearly specify the scope ('all geometry') and viewport behavior ('all' vs 'active one'). It does not explicitly state that the operation is view-only and does not modify geometry, but the verb 'zoom' and absence of mutation language make that reasonably clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is minimal and well-organized: one clear sentence for the core purpose and one sentence for the parameter. There is no filler, no restatement of the name, and no redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, low-complexity view tool with an output schema, the description covers purpose, scope, and parameter behavior adequately. The main missing piece is explicit sibling differentiation, though the 'all geometry' wording provides a usable selection signal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only provides a boolean named 'All Viewports' with a default value, but the description explains the exact conditional behavior: true means zoom all viewports, false means only the active one. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Zoom') and the target ('extents of all geometry'), which tells an agent what the tool does. However, it does not explicitly distinguish this tool from closely related siblings such as rhino_zoom_extent, rhino_zoom_selected, or rhino_zoom_layer; the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'all geometry' implies this is the right tool when the user wants to see the whole model, and the all_viewports parameter adds context for multi-viewport behavior. But there is no explicit guidance about when to prefer this over the many sibling zoom tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zoom_layerA
Zoom the active viewport to fit every object on layer.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly states the primary behavior—zooming the active viewport—and is consistent with readOnlyHint=false. It does not disclose further behavioral details such as whether selection is preserved, whether hidden or locked objects are included, or what happens if the layer is missing or empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word contributes to stating the action, target, and object scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter, the description plus schema provides enough to invoke it correctly: layer path, doc_id default, active viewport, and the zoom action. It does not cover failure modes or alternative zoom tools, but an output schema exists and the operation is straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents layer as 'Full layer path' and doc_id as 'Document handle id; active targets the current document.' The tool description only echoes the layer placeholder and adds no extra meaning beyond the schema, though it does not need to compensate because the schema is descriptive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states an explicit verb and resource: 'Zoom the active viewport to fit every object on `layer`.' The layer-scoped object set clearly distinguishes this tool from sibling zoom operations such as rhino_zoom_extents, rhino_zoom_selected, and rhino_zoom_window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the use case: fitting all objects on a given layer into the active viewport. However, it provides no explicit when-to-use guidance, no exclusions, and does not mention alternatives among the many sibling zoom tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zoom_objectA
Zoom the active viewport to fit the given object ids exactly.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly communicates the main behavior: the active viewport's view changes to fit the specified objects. It does not dwell on side effects because this is a view-state change, not a destructive operation. A minor gap is that it does not clarify whether the active viewport belongs to the document referenced by the optional doc_id, which could slightly confuse agents using a non-active document handle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. The verb, target, scope, and criterion are all present, and every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-required-parameter zoom operation with an output schema, this description is nearly complete. It covers the key intent and scope, but it stops short of explaining the exact object_id semantics and how the optional doc_id affects the 'active viewport' wording.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for object_ids (0% coverage), and the tool description only restates 'given object ids' without explaining what those IDs are, where they come from, or whether they must correspond to valid objects in the target document. The doc_id parameter is documented in the schema, but object_ids semantics are not meaningfully enriched by 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?
The description names a specific verb and resource: zooming the active viewport to fit provided object IDs. It also distinguishes itself from sibling zoom tools like rhino_zoom_extent, rhino_zoom_selected, and rhino_zoom_window by focusing on explicit object IDs rather than all objects, current selection, or a window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when you have object IDs and want the active viewport framed exactly to those objects. It does not explicitly name alternatives or exclusion cases, but the 'given object ids' qualifier makes the intended use evident among the many zoom-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zoom_selectedA
Zoom to fit the currently selected objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose the core behavior: the view is zoomed to fit the current selection. It also correctly implies a non-destructive viewport operation. It does not mention edge cases like empty selection or multi-viewport behavior, but the primary behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. Every word contributes meaning, and the main action is front-loaded before the target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 viewport tool with an output schema, the description is nearly complete. It defines the operation, target, and scope. The main gap is not specifying what happens when nothing is selected, but this is a minor omission given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema needs no elaboration. The description adds useful semantic context by identifying the current selection as the implicit input, which is sufficient for an agent to understand how the tool operates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('zoom') and resource ('currently selected objects'), making the tool's purpose immediately clear. It is naturally distinguished from siblings like rhino_zoom_extent (all objects) or rhino_zoom_layer (a layer) by explicitly scoping to the current selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently selected objects' implies the prerequisite that objects must be selected, but the description does not explicitly say when to use this tool versus alternatives like rhino_zoom_object, rhino_zoom_extent, or rhino_zoom_window. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rhino_zoom_windowA
Enter zoom-window mode (user draws a rectangle to zoom into).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys that this is an interactive modal operation, but it does not disclose that the tool waits for a user gesture, that the current viewport is changed/overwritten, whether the mode exits after one rectangle, or that no data is returned even though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence of about ten words with zero wasted content. The verb and core interaction appear first, and the parenthetical clarifies the mechanism without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 0-parameter tool with an output schema, the existing description is largely sufficient on parameters and return values. However, with no annotations and many sibling zoom tools, it falls short on explaining the modal, blocking nature of the interaction, the viewport-changing effect, and how this choice differs from zoom_extent/zoom_selected/zoom_layer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and per the baseline for 0-param tools, the description is not required to document parameters. The mention that 'user draws a rectangle' correctly signals that input is captured through canvas interaction rather than through arguments, which adds useful meaning beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Enter zoom-window mode') and adds the defining interaction ('user draws a rectangle to zoom into'). This distinguishes it from the many zoom siblings in the list, such as rhino_zoom_extent, rhino_zoom_object, and rhino_zoom_layer, which zoom based on extents, objects, or layers rather than a user-drawn rectangle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context is implied: use this when you want to zoom by drawing a rectangle around a region of the viewport. However, there is no explicit when-to-use versus alternatives, no exclusions, and no mention of the more targeted sibling tools (zoom_object, zoom_layer, zoom_selected) that an agent might confuse it with.
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.
542 tool updates
v1.0.0- First observed
gh_add_component - First observed
gh_bake_to_rhino - First observed
gh_bind_template_parameter - First observed
gh_cluster_create - First observed
gh_cluster_expand - First observed
gh_component_list - First observed
gh_components_search - First observed
gh_connect_components - First observed
gh_connect_many - First observed
gh_data_tree_get - First observed
gh_data_tree_get_batch - First observed
gh_data_tree_set - First observed
gh_data_tree_set_batch - First observed
gh_delete_component - First observed
gh_get_parameter - First observed
gh_load_template - First observed
gh_new_canvas - First observed
gh_open_file - First observed
gh_place_slider - First observed
gh_plugin_list - First observed
gh_preview_toggle - First observed
gh_reset - First observed
gh_run - First observed
gh_run_template - First observed
gh_save_file - First observed
gh_set_panel - First observed
gh_set_parameter - First observed
gh_set_slider - First observed
gh_set_toggle - First observed
gh_template_list - First observed
rhino_1view - First observed
rhino_3view - First observed
rhino_4view - First observed
rhino_add_clipping_plane - First observed
rhino_add_control_point - First observed
rhino_add_dimension_angular - First observed
rhino_add_dimension_linear - First observed
rhino_add_dimension_ordinate - First observed
rhino_add_dimension_radial - First observed
rhino_add_directional_light - First observed
rhino_add_dot - First observed
rhino_add_hatch - First observed
rhino_add_leader - First observed
rhino_add_objects_to_block - First observed
rhino_add_point - First observed
rhino_add_point_cloud - First observed
rhino_add_point_light - First observed
rhino_add_spotlight - First observed
rhino_add_text - First observed
rhino_add_text_object - First observed
rhino_align - First observed
rhino_align_mesh_vertices - First observed
rhino_angle - First observed
rhino_annotation_callout - First observed
rhino_annotation_dimension_style - First observed
rhino_annotation_north_arrow - First observed
rhino_annotation_revision_cloud - First observed
rhino_annotation_scale_bar - First observed
rhino_arc - First observed
rhino_area - First observed
rhino_area_centroid - First observed
rhino_array_linear - First observed
rhino_array_on_curve - First observed
rhino_array_polar - First observed
rhino_array_rectangular - First observed
rhino_assign_material_to_object - First observed
rhino_attractor_displace_points - First observed
rhino_axis_ribs - First observed
rhino_batch_call - First observed
rhino_batch_modify - First observed
rhino_bend - First observed
rhino_bim_metadata_set - First observed
rhino_bim_pset_delete - First observed
rhino_bim_pset_get - First observed
rhino_bim_pset_set - First observed
rhino_blend_srf - First observed
rhino_blend_surface - First observed
rhino_blend_surface_edges - First observed
rhino_block_define - First observed
rhino_block_explode - First observed
rhino_block_insert - First observed
rhino_block_instance_count - First observed
rhino_block_list - First observed
rhino_block_manager - First observed
rhino_block_redefine - First observed
rhino_boolean_difference - First observed
rhino_boolean_intersection - First observed
rhino_boolean_split - First observed
rhino_boolean_union - First observed
rhino_bounding_box - First observed
rhino_box - First observed
rhino_bridge_list_instances - First observed
rhino_bridge_select_instance - First observed
rhino_cage_edit - First observed
rhino_camera_set - First observed
rhino_cap_holes - First observed
rhino_cap_planar_holes - First observed
rhino_chamfer_edges - First observed
rhino_chamfer_surface - First observed
rhino_check_bad_objects - First observed
rhino_check_naked_edges - First observed
rhino_circle - First observed
rhino_clipping_plane - First observed
rhino_close_hole - First observed
rhino_cmd_arc - First observed
rhino_cmd_area - First observed
rhino_cmd_array_linear - First observed
rhino_cmd_array_polar - First observed
rhino_cmd_bend - First observed
rhino_cmd_boolean_difference - First observed
rhino_cmd_boolean_intersection - First observed
rhino_cmd_boolean_union - First observed
rhino_cmd_bounding_box - First observed
rhino_cmd_box - First observed
rhino_cmd_circle - First observed
rhino_cmd_cone - First observed
rhino_cmd_contour - First observed
rhino_cmd_curvature_analysis - First observed
rhino_cmd_cylinder - First observed
rhino_cmd_distance - First observed
rhino_cmd_ellipse - First observed
rhino_cmd_fillet_surface - First observed
rhino_cmd_flow_along_curve - First observed
rhino_cmd_get_user_text - First observed
rhino_cmd_helix - First observed
rhino_cmd_import - First observed
rhino_cmd_layer_create - First observed
rhino_cmd_layer_delete - First observed
rhino_cmd_layer_list - First observed
rhino_cmd_line - First observed
rhino_cmd_loft - First observed
rhino_cmd_mesh_boolean_difference - First observed
rhino_cmd_mesh_boolean_union - First observed
rhino_cmd_mirror - First observed
rhino_cmd_move - First observed
rhino_cmd_offset_surface - First observed
rhino_cmd_patch - First observed
rhino_cmd_plane_surface - First observed
rhino_cmd_polygon - First observed
rhino_cmd_polyline - First observed
rhino_cmd_rebuild_curve - First observed
rhino_cmd_rectangle - First observed
rhino_cmd_redo - First observed
rhino_cmd_reduce_mesh - First observed
rhino_cmd_render_to_file - First observed
rhino_cmd_revolve - First observed
rhino_cmd_rotate - First observed
rhino_cmd_save - First observed
rhino_cmd_scale - First observed
rhino_cmd_section - First observed
rhino_cmd_set_user_text - First observed
rhino_cmd_shell - First observed
rhino_cmd_sphere - First observed
rhino_cmd_spiral - First observed
rhino_cmd_sweep1 - First observed
rhino_cmd_sweep2 - First observed
rhino_cmd_taper - First observed
rhino_cmd_torus - First observed
rhino_cmd_turntable - First observed
rhino_cmd_twist - First observed
rhino_cmd_undo - First observed
rhino_cmd_unweld_mesh - First observed
rhino_cmd_volume - First observed
rhino_cmd_weld_mesh - First observed
rhino_cone - First observed
rhino_contour - First observed
rhino_count_objects - First observed
rhino_create_block - First observed
rhino_create_subd - First observed
rhino_create_uv_grid - First observed
rhino_curvature_analysis - First observed
rhino_curvature_graph - First observed
rhino_curve_continuity - First observed
rhino_curve_length - First observed
rhino_curve_point_at - First observed
rhino_curve_split - First observed
rhino_cylinder - First observed
rhino_daylight_factor - First observed
rhino_delete_selected - First observed
rhino_dimension_aligned - First observed
rhino_dimension_angular - First observed
rhino_dimension_linear - First observed
rhino_dimension_style - First observed
rhino_direct_irradiance - First observed
rhino_display_mode_set - First observed
rhino_display_show_edges - First observed
rhino_distance - First observed
rhino_distribute - First observed
rhino_document_properties - First observed
rhino_document_settings - First observed
rhino_document_summary - First observed
rhino_document_units_get - First observed
rhino_document_units_set - First observed
rhino_draft_angle - First observed
rhino_draft_angle_analysis - First observed
rhino_drawing_export_pdf - First observed
rhino_drawing_section_cut - First observed
rhino_drawing_sheet_create - First observed
rhino_drawing_title_block_add - First observed
rhino_drawing_view_place - First observed
rhino_dup_border - First observed
rhino_dup_edge - First observed
rhino_edge_srf - First observed
rhino_edit_points_off - First observed
rhino_edit_points_on - First observed
rhino_ellipse - First observed
rhino_ellipsoid - First observed
rhino_environment_set - First observed
rhino_eval_expression - First observed
rhino_evaluate_surface - First observed
rhino_execute_csharp - First observed
rhino_execute_python - First observed
rhino_explode - First observed
rhino_explode_block - First observed
rhino_export - First observed
rhino_export_dxf - First observed
rhino_export_gbxml - First observed
rhino_export_ifc - First observed
rhino_export_iges - First observed
rhino_export_obj - First observed
rhino_export_step - First observed
rhino_export_stl - First observed
rhino_extend_curve - First observed
rhino_extend_surface - First observed
rhino_extrude - First observed
rhino_extrude_curve - First observed
rhino_extrude_surface - First observed
rhino_fair_curve - First observed
rhino_fillet_edges - First observed
rhino_fillet_surface - First observed
rhino_flip - First observed
rhino_flip_mesh_normals - First observed
rhino_flow - First observed
rhino_flow_along_curve - First observed
rhino_freeform_curve - First observed
rhino_get_control_points - First observed
rhino_get_document_text - First observed
rhino_get_module_functions - First observed
rhino_get_object_info - First observed
rhino_get_object_name - First observed
rhino_get_rhinoscript_docs - First observed
rhino_get_user_text - First observed
rhino_group - First observed
rhino_group_selected - First observed
rhino_hatch - First observed
rhino_helix - First observed
rhino_hide_selected - First observed
rhino_import - First observed
rhino_import_ifc - First observed
rhino_insert_block - First observed
rhino_interpcrv - First observed
rhino_interpolate_curve - First observed
rhino_isocurve - First observed
rhino_join - First observed
rhino_launch - First observed
rhino_layer_color - First observed
rhino_layer_count - First observed
rhino_layer_create - First observed
rhino_layer_delete - First observed
rhino_layer_get_current - First observed
rhino_layer_isolate - First observed
rhino_layer_list - First observed
rhino_layer_lock - First observed
rhino_layer_purge_unused - First observed
rhino_layer_rename - First observed
rhino_layer_set_color - First observed
rhino_layer_set_current - First observed
rhino_layer_set_material - First observed
rhino_layer_unisolate - First observed
rhino_layer_visible - First observed
rhino_leader - First observed
rhino_length - First observed
rhino_light_add - First observed
rhino_line - First observed
rhino_list_blocks - First observed
rhino_list_objects - First observed
rhino_list_rhinoscript_modules - First observed
rhino_list_saved_files - First observed
rhino_lock_selected - First observed
rhino_loft - First observed
rhino_make2d - First observed
rhino_match_srf - First observed
rhino_match_surface - First observed
rhino_material_assign - First observed
rhino_material_create - First observed
rhino_material_preset_create - First observed
rhino_material_preset_list - First observed
rhino_materials_manager - First observed
rhino_merge_all_coplanar_faces - First observed
rhino_merge_all_faces - First observed
rhino_merge_edge - First observed
rhino_merge_surfaces - First observed
rhino_mesh_boolean_difference - First observed
rhino_mesh_boolean_intersection - First observed
rhino_mesh_boolean_union - First observed
rhino_mesh_box - First observed
rhino_mesh_from_brep - First observed
rhino_mesh_from_nurbs - First observed
rhino_mesh_from_surface - First observed
rhino_mesh_repair - First observed
rhino_mesh_split - First observed
rhino_mesh_to_nurbs - First observed
rhino_mesh_trim - First observed
rhino_mirror - First observed
rhino_modify_offset_curve - First observed
rhino_move - First observed
rhino_move_objects_to_layer - First observed
rhino_move_uvn - First observed
rhino_multi_pipe - First observed
rhino_named_view_save - First observed
rhino_named_views - First observed
rhino_network_srf - First observed
rhino_network_surface - First observed
rhino_new_document - First observed
rhino_nurbs_curve - First observed
rhino_object_delete - First observed
rhino_object_info - First observed
rhino_object_move_to_layer - First observed
rhino_object_properties_dialog - First observed
rhino_object_quantity - First observed
rhino_object_select - First observed
rhino_offset_curve - First observed
rhino_offset_mesh - First observed
rhino_offset_srf - First observed
rhino_offset_subd - First observed
rhino_offset_surface - First observed
rhino_open - First observed
rhino_open_file - First observed
rhino_orient - First observed
rhino_orient_3pt - First observed
rhino_orient_on_crv - First observed
rhino_orient_on_srf - First observed
rhino_origin_set - First observed
rhino_pack_textures - First observed
rhino_pan - First observed
rhino_panel_curvature_classify - First observed
rhino_panel_frames - First observed
rhino_panel_planarity - First observed
rhino_panelize_surface - First observed
rhino_paraboloid - First observed
rhino_patch - First observed
rhino_perspective_angle - First observed
rhino_pipe_from_curve - First observed
rhino_place_grid - First observed
rhino_planar_srf - First observed
rhino_plane_surface - First observed
rhino_point - First observed
rhino_point_deviation - First observed
rhino_points_off - First observed
rhino_points_on - First observed
rhino_points_solid_on - First observed
rhino_polygon - First observed
rhino_polyline - First observed
rhino_probe_intersection - First observed
rhino_project_to_cplane - First observed
rhino_purge - First observed
rhino_push_pull - First observed
rhino_pyramid - First observed
rhino_quad_remesh - First observed
rhino_quadrangulate_mesh - First observed
rhino_radius - First observed
rhino_rail_revolve - First observed
rhino_rebuild - First observed
rhino_rebuild_curve - First observed
rhino_rebuild_mesh - First observed
rhino_rebuild_surface - First observed
rhino_rebuild_uv - First observed
rhino_rectangle - First observed
rhino_redo - First observed
rhino_reduce_mesh - First observed
rhino_refit_trim - First observed
rhino_remove_control_point - First observed
rhino_remove_crease - First observed
rhino_render - First observed
rhino_render_preview - First observed
rhino_render_queue_cancel - First observed
rhino_render_queue_list - First observed
rhino_render_queue_status - First observed
rhino_render_queue_submit - First observed
rhino_render_setup - First observed
rhino_render_to_file - First observed
rhino_render_viewport - First observed
rhino_repair_subd - First observed
rhino_reparameterize - First observed
rhino_replace_block - First observed
rhino_replicate_along_curve - First observed
rhino_report_mesh_health - First observed
rhino_revert - First observed
rhino_revolve - First observed
rhino_rib - First observed
rhino_rotate - First observed
rhino_rotate_3d - First observed
rhino_run_command - First observed
rhino_run_macro - First observed
rhino_run_python - First observed
rhino_run_script_file - First observed
rhino_save - First observed
rhino_save_as - First observed
rhino_save_copy - First observed
rhino_save_script_to_file - First observed
rhino_scale - First observed
rhino_scale_1d - First observed
rhino_scale_2d - First observed
rhino_scale_nu - First observed
rhino_scatter - First observed
rhino_schedule_by_layer - First observed
rhino_schedule_by_material - First observed
rhino_schedule_by_user_text - First observed
rhino_schedule_export_csv - First observed
rhino_screenshot - First observed
rhino_seam - First observed
rhino_search_rhinoscript_functions - First observed
rhino_section - First observed
rhino_section_at_axis - First observed
rhino_sel_all - First observed
rhino_sel_bad_objects - First observed
rhino_sel_by_color - First observed
rhino_sel_by_name - First observed
rhino_sel_by_type - First observed
rhino_sel_chain - First observed
rhino_sel_connected - First observed
rhino_sel_duplicates - First observed
rhino_sel_invert - First observed
rhino_sel_last - First observed
rhino_sel_layer - First observed
rhino_sel_none - First observed
rhino_sel_small_objects - First observed
rhino_selection_bbox - First observed
rhino_set_background_color - First observed
rhino_set_control_points - First observed
rhino_set_cplane - First observed
rhino_set_display_mode - First observed
rhino_set_document_text - First observed
rhino_set_grid - First observed
rhino_set_object_color - First observed
rhino_set_object_layer - First observed
rhino_set_object_material - First observed
rhino_set_object_name - First observed
rhino_set_osnap - First observed
rhino_set_point_weight - First observed
rhino_set_render_resolution - First observed
rhino_set_snap - First observed
rhino_set_units - First observed
rhino_set_user_text - First observed
rhino_set_view - First observed
rhino_shadow_project - First observed
rhino_shell - First observed
rhino_show_dir - First observed
rhino_show_edges - First observed
rhino_show_endpoints - First observed
rhino_show_selected - First observed
rhino_shrink_trimmed_srf - First observed
rhino_shrink_wrap - First observed
rhino_silhouette - First observed
rhino_skin_from_sections - First observed
rhino_slab - First observed
rhino_smooth - First observed
rhino_smooth_polyline - First observed
rhino_soft_edit_curve - First observed
rhino_soft_edit_surface - First observed
rhino_solar_exposure_estimate - First observed
rhino_solid_pt_on - First observed
rhino_sphere - First observed
rhino_spiral - First observed
rhino_split - First observed
rhino_srf_from_3_4_pts - First observed
rhino_stack_floors - First observed
rhino_status - First observed
rhino_stitch - First observed
rhino_subd_box - First observed
rhino_subd_cone - First observed
rhino_subd_crease - First observed
rhino_subd_cylinder - First observed
rhino_subd_display_toggle - First observed
rhino_subd_expand_edges - First observed
rhino_subd_loft - First observed
rhino_subd_plane - First observed
rhino_subd_sphere - First observed
rhino_subd_sweep1 - First observed
rhino_subd_sweep2 - First observed
rhino_subd_to_nurbs - First observed
rhino_subd_torus - First observed
rhino_subdivide - First observed
rhino_sun_path - First observed
rhino_sun_position - First observed
rhino_sun_settings - First observed
rhino_surface_closest_point - First observed
rhino_surface_curvature_at - First observed
rhino_surface_developable_score - First observed
rhino_surface_from_points - First observed
rhino_surface_normal_at - First observed
rhino_sweep1 - First observed
rhino_sweep2 - First observed
rhino_system_info - First observed
rhino_taper - First observed
rhino_text - First observed
rhino_text_dot - First observed
rhino_thickness_analysis - First observed
rhino_to_nurbs - First observed
rhino_to_subd - First observed
rhino_toggle_grid - First observed
rhino_tolerance_get - First observed
rhino_tolerance_set - First observed
rhino_torus - First observed
rhino_triangulate_mesh - First observed
rhino_trim - First observed
rhino_truncated_cone - First observed
rhino_tube - First observed
rhino_turntable - First observed
rhino_turntable_render - First observed
rhino_tween_surfaces - First observed
rhino_twist - First observed
rhino_undo - First observed
rhino_ungroup - First observed
rhino_unify_mesh_normals - First observed
rhino_unjoin_edge - First observed
rhino_unlock_all - First observed
rhino_unroll - First observed
rhino_untrim - First observed
rhino_unweld_mesh - First observed
rhino_uv_grid_panels - First observed
rhino_validate_brep - First observed
rhino_variable_blend_srf - First observed
rhino_variable_fillet - First observed
rhino_view_capture_to_clipboard - First observed
rhino_view_capture_to_file - First observed
rhino_view_set - First observed
rhino_viewport_image - First observed
rhino_viewport_preview - First observed
rhino_volume - First observed
rhino_volume_centroid - First observed
rhino_weld_mesh - First observed
rhino_what - First observed
rhino_wire_cut - First observed
rhino_zebra - First observed
rhino_zebra_analysis - First observed
rhino_zoom_extent - First observed
rhino_zoom_extents - First observed
rhino_zoom_layer - First observed
rhino_zoom_object - First observed
rhino_zoom_selected - First observed
rhino_zoom_window
TDQS
Scored across 542 tools
Dozens of tools appear to do the same thing: rhino_box and rhino_cmd_box, rhino_sphere and rhino_cmd_sphere, rhino_boolean_union and rhino_cmd_boolean_union, rhino_execute_python and rhino_run_python, plus many overlapping render/capture tools. An agent cannot reliably tell which variant to call without extensive inferencing.
The rhino_ prefix and mostly snake_case naming provide some consistency, but conventions are mixed across what look like multiple API generations: rhino_cmd_* coexists with direct rhino_* calls, run_* coexists with execute_*, sel_* coexists with object_select, and some pairs reverse verb order (rhino_set_view vs rhino_view_set, rhino_set_display_mode vs rhino_display_mode_set). The gh_* tools add a second naming world.
542 tools is an extreme mismatch for a coherent MCP surface, even for a broad CAD application. The count is inflated by large numbers of duplicate and near-duplicate operations rather than by genuinely distinct capabilities.
The set covers an unusually broad range of Rhino domains: primitives, curves, surfaces, meshes, SubD, booleans, transforms, layers, materials, rendering, annotations, blocks, BIM, analysis, import/export, and Grasshopper. There are minor gaps such as curve-level fillet/chamfer and some bridge-only limitations, but the generic rhino_run_command and rhino_execute_python tools let agents work around most omissions.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Create projects, nodes, and tasks in UluP Spaces by conversation with Claude.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects Rhino3D to Claude AI via the Model Context Protocol, enabling AI-assisted 3D modeling and design workflows through direct control of Rhino's functionality.14-
- AlicenseNot gradedqualityBmaintenanceGOLEM-3DMCP implements the Model Context Protocol to give AI agents direct, programmatic control of Rhino 8 — create geometry, run booleans, drive Grasshopper, capture viewports, and execute arbitrary Python scripts, all through natural language. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible host.13MIT
- AlicenseBqualityCmaintenanceEnables Claude to drive Rhino 8 and Grasshopper for geometry creation, manipulation, and analysis via natural language.1005MIT
- AlicenseNot gradedqualityCmaintenanceConnects Rhino and Grasshopper to Claude AI via the Model Context Protocol, enabling prompt-assisted 3D modeling, scene manipulation, and control through tools like object creation, layer management, and code execution.27MIT