rhino-mcp
Provides tools to create, modify, and analyze 3D models in McNeel Rhino 8, including geometry, layers, materials, scripting, and Grasshopper automation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rhino-mcpCreate a sphere at the origin with radius 5"
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: vn-autocad-claude
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
244 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
244 tool updates
v0.6.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_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_array_linear - First observed
rhino_array_polar - First observed
rhino_array_rectangular - 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_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_list - First observed
rhino_block_redefine - First observed
rhino_boolean_difference - First observed
rhino_boolean_intersection - 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_check_naked_edges - First observed
rhino_circle - First observed
rhino_clipping_plane - First observed
rhino_cone - First observed
rhino_contour - First observed
rhino_create_subd - First observed
rhino_create_uv_grid - First observed
rhino_curvature_analysis - 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_dimension_aligned - First observed
rhino_dimension_angular - First observed
rhino_dimension_linear - First observed
rhino_direct_irradiance - First observed
rhino_display_mode_set - First observed
rhino_distance - 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_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_ellipse - First observed
rhino_environment_set - First observed
rhino_evaluate_surface - First observed
rhino_execute_csharp - First observed
rhino_execute_python - 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_extrude - First observed
rhino_fillet_surface - First observed
rhino_flow - First observed
rhino_flow_along_curve - First observed
rhino_get_control_points - First observed
rhino_get_module_functions - First observed
rhino_get_rhinoscript_docs - First observed
rhino_get_user_text - First observed
rhino_group - First observed
rhino_hatch - First observed
rhino_helix - First observed
rhino_import - First observed
rhino_import_ifc - First observed
rhino_interpolate_curve - First observed
rhino_isocurve - First observed
rhino_layer_create - First observed
rhino_layer_delete - First observed
rhino_layer_list - First observed
rhino_layer_set_color - First observed
rhino_layer_set_material - First observed
rhino_leader - First observed
rhino_light_add - First observed
rhino_line - First observed
rhino_list_objects - First observed
rhino_list_rhinoscript_modules - First observed
rhino_loft - First observed
rhino_make2d - 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_merge_surfaces - First observed
rhino_mesh_boolean_difference - First observed
rhino_mesh_boolean_union - First observed
rhino_mesh_box - First observed
rhino_mesh_from_brep - First observed
rhino_mesh_from_surface - First observed
rhino_mirror - First observed
rhino_move - First observed
rhino_named_view_save - First observed
rhino_network_surface - 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_quantity - First observed
rhino_object_select - First observed
rhino_offset_surface - First observed
rhino_open - First observed
rhino_orient - First observed
rhino_origin_set - First observed
rhino_panel_curvature_classify - First observed
rhino_panel_frames - First observed
rhino_panel_planarity - First observed
rhino_panelize_surface - First observed
rhino_patch - First observed
rhino_place_grid - First observed
rhino_plane_surface - First observed
rhino_point - First observed
rhino_polygon - First observed
rhino_polyline - First observed
rhino_probe_intersection - First observed
rhino_rebuild_curve - First observed
rhino_rebuild_surface - First observed
rhino_rectangle - First observed
rhino_redo - First observed
rhino_reduce_mesh - 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_replicate_along_curve - First observed
rhino_report_mesh_health - First observed
rhino_revolve - First observed
rhino_rotate - First observed
rhino_save - First observed
rhino_scale - 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_search_rhinoscript_functions - First observed
rhino_section - First observed
rhino_section_at_axis - First observed
rhino_selection_bbox - First observed
rhino_set_control_points - First observed
rhino_set_user_text - First observed
rhino_shadow_project - First observed
rhino_shell - First observed
rhino_skin_from_sections - First observed
rhino_smooth_polyline - First observed
rhino_solar_exposure_estimate - First observed
rhino_sphere - First observed
rhino_spiral - First observed
rhino_stack_floors - First observed
rhino_subd_to_nurbs - First observed
rhino_sun_path - First observed
rhino_sun_position - 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_taper - First observed
rhino_text - First observed
rhino_text_dot - First observed
rhino_tolerance_get - First observed
rhino_tolerance_set - First observed
rhino_torus - First observed
rhino_turntable - First observed
rhino_turntable_render - First observed
rhino_twist - First observed
rhino_undo - First observed
rhino_unroll - First observed
rhino_unweld_mesh - First observed
rhino_uv_grid_panels - First observed
rhino_validate_brep - First observed
rhino_view_set - First observed
rhino_viewport_image - First observed
rhino_viewport_preview - First observed
rhino_volume - First observed
rhino_weld_mesh - First observed
rhino_zebra - First observed
rhino_zoom_extent - First observed
rhino_zoom_layer - First observed
rhino_zoom_object
TDQS
Scored across 244 tools
Each tool has a distinct purpose, even with 244 tools. Overlaps are minimal and descriptions clearly differentiate them. For example, multiple boolean tools are well-separated, and viewport capture tools have specific use cases.
All tools start with 'rhino_' (or 'gh_' for Grasshopper), but the verb-noun ordering is inconsistent: some use verb_noun (e.g., rhino_list_objects) while others use noun_verb (e.g., rhino_object_info). This could cause minor confusion for an LLM.
244 tools is large, but the server covers an extremely broad domain (3D modeling, analysis, BIM, rendering, Grasshopper, etc.). Each tool has a defined role, so the count is justified, though a more focused scope might be easier to navigate.
The tool set is remarkably complete, covering creation, modification, analysis, annotation, rendering, BIM, Grasshopper integration, and utilities. It supports a full modeling workflow with few obvious gaps.
Maintenance
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
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.
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
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-
- AlicenseAqualityCmaintenanceEnables Claude to control AutoCAD—draw, edit, query, layers, blocks, annotations, screenshots, plot to PDF—using plain language.82MIT
- 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
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered 3D modeling in Rhino 8 through 135+ tools for geometry, transformations, booleans, layers, materials, and more, using natural language.6MIT