fxhoudinimcp
Provides tools for interacting with SideFX Houdini, enabling AI agents to create and manipulate 3D scenes, simulations, renderings, and more through Houdini's Python API.
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., "@fxhoudinimcpcreate a sphere and add a mountain"
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.
Related MCP server: HoudiniMCP
Table of Contents
About
A comprehensive MCP (Model Context Protocol) server for SideFX Houdini. Connects AI assistants like Claude directly to Houdini's Python API, enabling natural language control over scene building, simulation setup, rendering, and more.
206 tools, 8 resources, and 9 prompts serving 31 written workflow guides out of the box.
Features
Category | Tools | Description |
Graph Intelligence | 6 | Atomic validated network building, network verification, node doc cards, cook profiling, frame-range cooking with per-frame evidence, cook status |
Documentation | 2 | Full-text search + page retrieval over Houdini's own shipped manual (version-exact) |
Scene Management | 10 | Open, save, import/export, scene info, connection status, undo/redo |
Node Operations | 22 | Create, delete, copy, connect, layout, flags, network boxes, sticky notes, object transforms |
Parameters | 12 | Get/set values in bulk, expressions, keyframes, spare parameters |
Geometry (SOPs) | 14 | Points, prims, attributes, attribute statistics, volume inspection, groups, sampling, nearest-point search |
LOPs/USD | 18 | Stage inspection, prims, layers, composition, variants, lighting |
DOPs | 8 | Simulation info, DOP objects, step/reset, memory usage |
PDG/TOPs | 12 | Cook, work items, failed items and logs, schedulers, dependency graphs |
COPs (Copernicus) | 7 | Image nodes, layers, VDB data |
HDAs | 11 | Create, install, manage Digital Assets, their versions and sections |
Animation | 9 | Keyframes, playbar control, frame range |
Rendering | 9 | Viewport capture, render nodes, settings, render launch |
VEX | 5 | Create/edit wrangles, validate VEX code |
Code Execution | 6 | Python, HScript, expressions, env variables, file references, update mode |
Viewport/UI | 14 | Pane management, viewer context, verified camera and renderer state, screenshots, error detection |
Scene Context | 8 | Network overview, cook chain, selection, scene summary, error analysis |
Workflows | 8 | One-call Pyro/RBD/FLIP/Vellum setup, SOP chains, render config |
Materials | 4 | List, inspect, create materials and shader networks |
CHOPs | 4 | Channel data, CHOP nodes, export channels to parameters |
Cache | 4 | List, inspect, clear, write file caches |
Takes | 4 | List, create, switch takes with parameter overrides |
Shelf Tools | 3 | Find, read and run Houdini's own shelf tools (setups build_network cannot produce) |
Architecture
flowchart LR
subgraph Client[" ๐ค AI Client "]
direction TB
A1("Claude Desktop")
A2("Cursor / VS Code")
A3("Claude Code")
end
subgraph MCP[" โก FXHoudini MCP Server "]
direction TB
B1("๐ง 206 tools")
B2("๐ฆ 8 Resources")
B3("๐ฌ 9 Prompts")
end
subgraph Houdini[" ๐ถ SideFX Houdini "]
direction TB
C1("๐ hwebserver")
C2("๐ก Dispatcher")
C3("๐๏ธ hou.* Handlers")
C1 --> C2 --> C3
end
Client -. "MCP Protocol ยท stdio" .-> MCP
MCP -. "HTTP / JSON ยท port 8100" .-> Houdini
classDef clientBox fill:#f0f4ff,stroke:#b8c9e8,stroke-width:1px,color:#2d3748,rx:12,ry:12
classDef mcpBox fill:#eef6f0,stroke:#a8d5b8,stroke-width:1px,color:#2d3748,rx:12,ry:12
classDef houdiniBox fill:#fff5f0,stroke:#e8c4a8,stroke-width:1px,color:#2d3748,rx:12,ry:12
classDef clientNode fill:#dbe4f8,stroke:#96b0dc,stroke-width:1px,color:#2d3748,rx:8,ry:8
classDef mcpNode fill:#d4edda,stroke:#82c896,stroke-width:1px,color:#2d3748,rx:8,ry:8
classDef houdiniNode fill:#fde4d0,stroke:#e0a87c,stroke-width:1px,color:#2d3748,rx:8,ry:8
class Client clientBox
class MCP mcpBox
class Houdini houdiniBox
class A1,A2,A3 clientNode
class B1,B2,B3 mcpNode
class C1,C2,C3 houdiniNodeUses Houdini's built-in hwebserver. No custom socket servers, no rpyc. Uses hdefereval.executeInMainThreadWithResult() to safely run hou.* calls on the main thread.
Installation
FXHoudini-MCP has two halves: a Houdini plugin that runs inside Houdini, and an MCP server that your AI client starts and which relays to it over loopback. Both ship in the same Python package, so one install command sets up both and one upgrade moves them together.
Requirements
Houdini 20.5+ (integration suite green on 20.5.278, 20.5.487, 20.5.613, 20.5.654, 21.0.440 and 22.0.368)
Python 3.10+, separate from the one inside Houdini
MCP SDK (
mcppackage) 1.8+, installed for you as a dependency
Install
pip install fxhoudinimcp
python -m fxhoudinimcp installThen restart Houdini, restart your MCP client, and check the MCP menu in Houdini's menu bar.
install does both halves. It writes a Houdini package file pointing at this
exact install, and registers the server with Claude Code and Claude Desktop,
whichever it finds, using the absolute path of the Python you ran it with.
Use python -m fxhoudinimcp install rather than the bare fxhoudinimcp install
if you have more than one Python. Both work, but the module form is
self-correcting: whichever interpreter runs it is the one written into your
client config, so if the command runs at all, the path it registers is correct.
Add --dry-run first if you want to see every file it would touch and change
nothing.
It asks nothing and it finishes. If you have several Houdini versions, it writes into every packages directory it finds:
Houdini plugin
Wrote C:\Users\you\Documents\houdini21.0\packages\fxhoudinimcp.json
Wrote C:\Users\you\Documents\houdini22.0\packages\fxhoudinimcp.jsonThat is safe rather than lazy. The files are identical and point at the same
plugin, so whichever directory your Houdini reads, it finds a correct one. It
also settles the Windows case where OneDrive's Documents redirection makes a
desktop-launched Houdini and a shell-launched one disagree: both paths get a
file, so both work. The cost is an MCP menu in a Houdini version you may not
use, which uninstall clears in one go.
Because it never stops to ask, the same command works unchanged from a terminal, from Houdini's MCP menu, or from a setup script. To target one directory only:
python -m fxhoudinimcp install --houdini-dir "~/Documents/houdini22.0/packages"If your MCP client already has an fxhoudini entry pointing at a different
interpreter, it is repointed at this one and the old value is printed. That is
the common case after switching Python versions or recreating a virtualenv.
Flag | What it does |
| Report every change, make none |
| Which packages directory to write into |
| Register a client, leave Houdini untouched. Needs no packages directory, so it works when several exist |
| Which client to register. |
Upgrading later moves both halves at once, because the plugin lives inside the wheel:
pip install --upgrade fxhoudinimcpThe one thing to know: if you told Houdini to load the plugin from a git
clone instead of the installed package (see by hand),
pip install --upgrade will not move that half. Those two halves are then
independent, and the server warns at startup when it finds a plugin older than
itself.
Uninstalling
pip uninstall moves neither half. The Houdini package file and the client
registration both outlive it, and both fail quietly once the package is gone: a
package file pointing at a plugin directory that no longer exists is skipped by
Houdini without a word, and a stale client entry shows up only as
"disconnected". So take the two halves out first, then the package:
python -m fxhoudinimcp uninstall
pip uninstall fxhoudinimcpuninstall lists everything it found and asks before removing any of it. Unlike
install it does not need to know which Houdini you meant: every
fxhoudinimcp.json it finds is a leftover, and the one you forget is exactly
what silently overrides your next install. Narrow it with --houdini-dir when
you only want one Houdini cleaned.
Flag | What it removes |
| Nothing. Lists what it would remove |
| Only this packages directory, instead of every one found |
| Only the client registration, leaving the package files |
| Which client to unregister from |
| Skip the confirmation. Required when stdin is not a terminal |
Configuring the plugin
The package file install writes is also where the Houdini-side settings live.
It ships every one of them at its default, so they are all visible in one place:
FXHOUDINIMCP_PORT, FXHOUDINIMCP_BIND, FXHOUDINIMCP_AUTOSTART,
FXHOUDINIMCP_AUTO_LAYOUT, FXHOUDINIMCP_PROJECT_ROOT, FXHOUDINIMCP_TIMEOUT
and FXHOUDINIMCP_OUTPUT_GRACE (see Environment Variables
for what each does). Edit the values in place; running install again refreshes
the plugin path and keeps every value you changed, along with any variable you
added. Two things to know:
Because the package sets these explicitly, it wins over the same variable set in your shell. Change them here, not in your environment. Houdini's package format has no "only if unset" method, and it rejects JSON comments, so there is no way to ship them inert.
hou.putenvin a running session still wins over both.HOUDINI_HOST,HOUDINI_PORT,MCP_TRANSPORTandLOG_LEVELdo not belong here. They are read by the MCP server process that your client launches, not by Houdini, so setting them in this file has no effect -- configure those in your MCP client instead. If you changeFXHOUDINIMCP_PORT, setHOUDINI_PORTto match on the client side.
Note that pinning HOUDINI_PORT on the client switches off the port scan. A
second Houdini moves itself to the next free port, and the client normally finds
it by scanning 8100-8115 and taking the lowest that answers. Pin it only when you
want one specific session.
Installing by hand
install is the recommended route and the rest of this section is the manual
equivalent, for contributors working from a clone, locked-down machines, or when
something needs untangling. It is the same two halves.
1. Point Houdini at the plugin
fxhoudinimcp houdini-packageThat prints the package file with the plugin path filled in for this install and every Houdini-side setting at its default, plus the Houdini packages directories found on your machine. Write it with:
fxhoudinimcp houdini-package --write "~/Documents/houdini22.0/packages"Do not type the plugin path by hand. It lives inside the Python environment you
installed into, so it changes if you recreate a virtualenv, switch to uv or
pipx, or move between Python versions, and Houdini says nothing when a package
path stops resolving. --path-only prints just the path for scripting.
Like install, this deliberately does not pick a packages directory for you, and
it warns if another fxhoudinimcp.json exists elsewhere, because Houdini
processes every packages directory and lets the last one win. That is how a stale
clone silently overrides a fresh install.
Pointing at a clone instead. Contributors, or anyone wanting the plugin tracked by git, can write the package file against a checkout:
{ "env": [ { "FXHOUDINIMCP": "C:/Users/you/code/fxhoudinimcp/houdini" } ],
"path": "$FXHOUDINIMCP" }Forward slashes work on every platform. The path must end in /houdini and must
contain scripts/, MainMenuCommon.xml and the python3.Xlibs/ folders. Do not
do this and the CLI, or the two package files will fight. Remember that
pip install --upgrade cannot move a clone.
Copyinghoudini/ into your Houdini preferences directory also works, but it
is not recommended: pip cannot update a copy, so the plugin drifts behind the
server, which is the skew the startup compatibility warning exists to catch.
Use a package file so there is one copy of the plugin.
2. Point your MCP client at the server
Both examples need the absolute path to the Python that has fxhoudinimcp
installed. Clients start their servers without your shell environment, so a bare
python resolves against a PATH they may not share, and the only symptom is the
client reporting disconnected with nothing explaining why. Find the path
with:
python -c "import sys; print(sys.executable)"Claude Code (user scope, available in every project):
claude mcp add --scope user fxhoudini -- "C:\Program Files\Python311\python.exe" -m fxhoudinimcpThere is no in-place update. To repoint an existing entry, remove it first:
claude mcp remove fxhoudini -s userClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"fxhoudini": {
"command": "C:\\Program Files\\Python311\\python.exe",
"args": ["-m", "fxhoudinimcp"]
}
}
}After any change, fully quit Claude Desktop (system tray โ Quit) and relaunch; closing the window is not enough.
To scope the server to a single project instead, add a .mcp.json in the project
root with the same mcpServers block.
python -m fxhoudinimcp install --client-only does this step for you, with the
right path already filled in, and leaves the Houdini side alone. MCP > Connect
a Client... inside Houdini prints the same command along with the port that
session actually ended up on.
When Houdini does not load the plugin
No MCP menu means the package file was skipped, and Houdini does that without printing anything. Start it with the package log enabled and look for your file:
# Windows (PowerShell)
$env:HOUDINI_PACKAGE_VERBOSE=1; houdini
# Linux / macOS
HOUDINI_PACKAGE_VERBOSE=1 houdiniA working package prints both a Loading: and a Processing: line for
fxhoudinimcp.json. Three ways this fails quietly:
A path that does not exist. Houdini skips the package and says nothing. Nothing loads: no menu, no auto-start, no
fxhoudinimcp_servermodule.A UTF-8 BOM. Houdini's JSON parser rejects a leading BOM and skips the whole package. On Windows,
Set-Content -Encoding UTF8adds one; use-Encoding utf8NoBOM(PowerShell 7+) or an editor that can save without one. The file looks correct either way, which is what makes this one nasty. Bothinstallandhoudini-packagewrite without a BOM.A second
fxhoudinimcp.json. Houdini processes every packages directory and the last one wins, so a leftover file can override a fresh install. Both commands warn when they find another one.fxhoudinimcp houdini-packagelists every one it can see, and what each points at, andfxhoudinimcp uninstallremoves the lot.No package file for the Houdini you launched. Each Houdini version reads its own preference directory, so a file in
houdini21.0/packagesdoes nothing for a Houdini 22 you start afterwards.installwrites to every candidate for exactly this reason; you only see this if you narrowed it with--houdini-dir, or if that Houdini'spackagesdirectory did not exist when you ran it. Create it and re-run.
On Windows, note that OneDrive's Documents redirection means a desktop-launched Houdini and a shell-launched one can resolve different preference directories. The package log is what settles which one your Houdini actually reads.
Checking what you are actually running
An editable install reports the version it was created at, not whatever the working tree has become since, so an old checkout can be running while the metadata claims otherwise:
python -m fxhoudinimcp --versionWorth checking first whenever a documented subcommand behaves as though it does
not exist. Before 2.5.0, an unrecognised argument was ignored and the MCP server
started instead, so python -m fxhoudinimcp install on an older install printed
a warning about not reaching Houdini and then sat there, looking like a hung
installer. It now exits with unknown command and the list of real ones.
Usage
Launch Houdini normally. The plugin auto-starts once when the UI is ready (controlled by FXHOUDINIMCP_AUTOSTART env var). The startup script uses uiready.py, which stacks correctly with other Houdini packages. You can also control it manually from the MCP menu (Start Server, Stop Server, Connect a Client, Server Status).
MCP > Connect a Client... prints the claude mcp add line for the port this
session actually ended up on, and copies it to the clipboard. That matters with
more than one Houdini open: a second session moves itself to the next free port,
so the configured port and the real one differ.
Startup verifies that Houdini's mcp.health endpoint answers from the current
Houdini process before printing that the server is ready. If your assistant
cannot reach Houdini after an app restart, call get_houdini_connection_status
for structured diagnostics, then relaunch Houdini or align FXHOUDINIMCP_PORT
and HOUDINI_PORT if another process owns the port.
Once connected, your AI assistant can:
"Create a procedural rock generator with mountain displacement"
"Set up a Pyro simulation with a sphere source"
"Build a USD scene with a camera, dome light, and ground plane"
"Create an HDA from the selected subnet"
"Debug why my scene has cooking errors"Environment Variables
Variable | Default | Description |
|
| Houdini host address |
|
| Houdini hwebserver port |
|
| Seconds the MCP client waits for one command before reporting a timeout. Keep it above the plugin's deadline, and raise it alongside any |
|
| Port for the Houdini plugin to listen on |
|
| Set to |
|
| Off by default: tools never re-arrange existing nodes. Freshly created nodes are still placed next to their inputs instead of piling up at the origin, and an explicit |
|
| Address the Houdini plugin binds. Loopback by default: the bridge runs arbitrary Python in your Houdini session and has no authentication, so only widen this on a network you trust |
| unset | When set, hip files, imports, exports and HDA libraries must live under this directory. See Security for what it does not cover |
|
| Seconds a command may run before the plugin reports a timeout |
| unset | Per-command override, the dotted command name uppercased with dots as underscores: |
|
| Seconds a clean render or cache write may take to show its file before the tool reports that nothing was written. Raise it when output lands on a slow network share |
|
| MCP transport ( |
|
| Logging level |
Security
Treat a connection to this server as a shell inside your Houdini session.
execute_python runs arbitrary code, and there is no authentication,
authorization, per-tool permission model or audit log. The threat model is a
single artist's workstation and an MCP client they trust.
What the plugin does on its own:
Binds to loopback. Nothing on the network reaches the port unless you set
FXHOUDINIMCP_BINDto something wider on purpose.Refuses browsers. A web page you have open is also on loopback, and it can POST a form-encoded body to
127.0.0.1without any CORS preflight. Any request carrying anOriginheader is refused with HTTP 403, and so is anyHostthat is not a loopback name (DNS rebinding) while the bind is loopback.Confines file operations when asked. With
FXHOUDINIMCP_PROJECT_ROOTset, the paths the handlers themselves open, save, load or install (hip files, imports, exports, HDA libraries) must resolve under that directory.
What it does not do, and you should know about:
The sandbox does not inspect parameter values. A file path written into a File SOP or a ROP output parameter with
set_parameteris evaluated later by the node, not by the plugin. Checking it would mean inspecting every string parameter on every set, and the gap is left open rather than half-closed.execute_pythonandexecute_hscriptare not sandboxed at all.One undo step per tool call is the recovery path for a bad change; there is no confirmation flow before one.
If those limits do not fit your situation, run the plugin only on disposable scenes, or do not run it.
Development
See CONTRIBUTING.md for the checks CI runs and how pull request titles are used. The rest of this section is the detail behind it.
# Install dev dependencies
pip install -e ".[dev]"
# Run linter
ruff check python/
# Run tests
pytest
# Run integration tests inside a real Houdini (requires a license seat;
# uses the newest installed Houdini, override with the HYTHON env var).
# Works on Windows, macOS, and Linux:
python tests/run_integration.py
# Convenience wrappers: tests/run_integration.ps1 / tests/run_integration.sh
# Contribute this machine's Houdini builds to the node-availability table and
# regenerate the version annotations in server_instructions.md:
python tools/gen_node_versions.py
# Regenerate the derived search hints and the plugin-command manifest
# (run gen_node_domains after gen_node_versions, it reads that table):
python tools/gen_node_domains.py
python tools/gen_required_commands.py
# Regenerate the node vocabulary tables in the workflow prompts. Edit the
# groupings in tools/prompt_vocab.json, never the tables in the markdown:
python tools/gen_prompt_vocab.py
python tools/gen_node_versions.py --check # verify the table against this machine
python tools/gen_prompt_vocab.py --check # needs no Houdini; runs in tests too
HYTHON=/path/to/hython python tools/gen_node_versions.py # one specific buildNo node name in prompts/markdown/ is hand-written any more. The tables come
from tools/prompt_vocab.json through gen_prompt_vocab.py, which rejects a
name no sampled build has and dates the ones that exist in only part of the
20.5-22.0 range. tests/test_prompt_vocab.py enforces both, and also checks the
hand-written prose around the tables, since that names nodes too, plus that every
shipped help page the prompts cite still resolves.
Prompt file layout
prompts/markdown/ has three subdirectories, so what a file is for is visible at
every call site (load_markdown("workflows/pyro.md")):
instructions/โ what the server tells every client at connect time.workflows/โ one guide per subject, named after the SideFX help scope it draws on, sopyro.mdpairs with thepyro/manual andsolaris.mdwithsolaris/. 31 of them.shared/โ fragments injected into the above (housekeeping.md,layout_on.md,layout_off.md), never served alone.
Most subjects are reached through houdini_workflow(topic), where topic is the
scope name, so adding a subject means adding a markdown file and nothing else. simulation_setup dispatches on its sim_type argument
through an alias map, because SideFX files FLIP under fluid/ and RBD under
destruction/ while users ask for "flip" and "rbd"; anything with no specific
guide falls back to dyno.md, the general dynamics one.
The server searches every help corpus the install ships, zipped or loose. On
a full 22.0 that is 56 scopes and 11,451 pages, including the workflow manuals
(pyro/, fluid/, vellum/, destruction/, model/, assets/, copy/) and
the unzipped ones (copernicus/, mpm/, heightfields/, ml/). It costs about
half a second of lazy load and ~69 MB inside Houdini, and nothing in the
assistant's context until a lookup happens.
tools/node_versions.json accumulates. It records which builds have been
sampled and what node types each had, so one installed Houdini is enough:
your build merges into the shared evidence and the annotations are derived from
everything sampled so far. A contributor with a single Houdini produces exactly
the same table as someone with six. If a version has never been sampled by
anyone, the generator says so rather than guessing, and --check reports only
contradictions with the builds you actually have.
That evidence file is ~1 MB and is not shipped. The generator also writes
python/fxhoudinimcp/data/sampled_versions.json, a few hundred bytes listing
only which versions have been sampled, which does ship: the server compares the
connected Houdini against it at startup and warns when a version has never been
checked, so a marker like (21.0+) silently covering a future 23.0 becomes
visible instead. get_houdini_connection_status reports the same thing. It is
advisory: build_network(dry_run=True) validates node types against the running
Houdini and cannot go stale.
If Red Giant / Maxon Universe is installed, its OpenFX plug-in crashes hou
initialisation on Houdini 20.5.487 and later, so hython cannot start at all.
Set HOUDINI_DISABLE_OPENFX_DEFAULT_PATH=1 when running any of the above.
This is a Houdini/Universe conflict, not something this repo causes.
Unit tests mock hou and run anywhere. The integration suite in
tests/integration/ executes all 206 commands against live Houdini via
hython โ including end-to-end user scenarios (procedural modeling,
simulation, animation, lookdev) โ and prints per-command timing and
coverage reports; it is skipped automatically when hou is not
available. tests/integration/perf_sweep.py benchmarks handlers on
large scenes, and python tests/integration/bridge_e2e.py validates the
full HTTP transport (real hwebserver in hython driven by the MCP
server's own bridge).
How It Works
Houdini Plugin (
houdini/): Runs inside Houdini's Python environment. Registers@hwebserver.apiFunctionendpoints that receive JSON commands. Useshdefereval.executeInMainThreadWithResult()to safely executehou.*calls on the main thread.MCP Server (
python/fxhoudinimcp/): A standalone Python process using FastMCP. Exposes 206 tools, 8 resources, and 9 prompts via the MCP protocol. Forwards tool calls to Houdini over HTTP.Bridge (
python/fxhoudinimcp/bridge.py): Async HTTP client that sends commands to Houdini's hwebserver and deserializes responses. Handles connection errors and timeouts.
What a call costs
That main-thread hop in step 1 is not free, and it is the single biggest thing
to know when driving this. hou.* can only run on Houdini's main thread, so
every command is queued with hdefereval and waits for the next event-loop
tick. Measured on Houdini 22.0.368 with an idle scene:
| 0.5 ms |
any real command, including | ~50 ms |
10 nodes created one call at a time | ~800 ms |
the same 10 nodes in a single round trip | ~66 ms |
The floor is flat: a trivial query costs the same as a real one, because you are
paying for the tick, not the work. So the cost of a session is set by how many
calls it makes, not how much they each do, and batching is worth roughly an
order of magnitude rather than being a matter of neatness. That is why the
server instructions tell an assistant to design a whole graph and submit it as
one build_network, and why set_parameters, connect_nodes_batch and
verify_network exist alongside their single-item equivalents.
Numbers are from one Windows machine and will move with hardware and with how busy Houdini is; the ratio is the durable part.
Contact
Project Link: fxhoudinimcp
License
MIT
Available Tools
206 toolsassign_materialC
Assign a material to a geometry node via a Material SOP.
Args: geo_path: Target geometry node path. material_path: Material to assign.
| Name | Required | Description | Default |
|---|---|---|---|
| geo_path | Yes | ||
| material_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the operation ('Assign a material') but does not disclose side effects, such as whether the Material SOP is created/modified, whether existing material assignments are overwritten, or whether the scene is modified irreversibly. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main action, followed by a concise parameter list. It earns its place with no filler, though the parameter list is somewhat redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It does not explain what happens after assignment, how to verify success, or what errors might occur. An agent would need to infer prerequisites and side effects from the tool name and sibling 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. It does add minimal meaning by naming the parameters ('geo_path: Target geometry node path', 'material_path: Material to assign'), which clarifies their roles beyond the bare schema titles. However, it does not explain expected path formats (e.g., '/obj/geo' vs relative paths) or whether the material path must point to a specific node type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Assign') and resource ('material to a geometry node via a Material SOP'), which clearly identifies the operation. It does not explicitly distinguish it from sibling tools like create_material or list_materials, but the action is specific enough that an agent can infer its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as create_material, list_materials, or set_parameter. It does not mention prerequisites (e.g., the geometry node must exist, the material must already be created) or context for when this 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.
build_networkA
Build a whole node network in ONE atomic call โ the PREFERRED way to construct anything of 3+ nodes (massively faster than node-by-node calls, and either the whole network builds or nothing does).
Every node type, parameter name, and input reference is validated against the running Houdini BEFORE anything is created; errors come back with did-you-mean suggestions. Use dry_run=True to prove a plan when using unfamiliar node types. The result includes cooked evidence: per-node errors and the display node's geometry counts โ read them instead of assuming success.
Each node spec dict supports: type (required), name, parms (lists set whole parm tuples), inputs (list of source names โ earlier spec names, existing children, or absolute paths; or dicts with index or input_name / source / source_output, where input_name is a connector name or label as get_node_card lists them; or {"indirect_input": n} to wire from connector n of the parent subnet itself), flags (display/render/bypass/ template), color [r,g,b], comment.
Args: parent_path: Network to build inside (e.g. "/obj/geo1"). nodes: Ordered node specs (see above). dry_run: Validate the whole spec without creating anything. layout: Also lay out the parent network afterwards (default True; honoured only when auto-layout is enabled). The nodes this call creates are always positioned, each relative to its inputs, regardless of this flag; nodes that already existed keep their exact positions, so building into a hand-arranged network is safe.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | ||
| layout | No | ||
| dry_run | No | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers: it discloses atomicity (all-or-nothing), pre-validation against the running Houdini, did-you-mean error suggestions, cooked evidence in the result (per-node errors and display node geometry counts), and the layout behavior (created nodes positioned relative to inputs, existing nodes keep positions). This is rich, honest behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every section earns its place: the atomicity pitch, the validation behavior, the dry_run tip, the layout caveat, and the spec format. It is front-loaded with the most important usage guidance. It loses one point only because the node-spec enumeration is dense and could be slightly tightened, but it is not bloated or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 4-parameter tool with no annotations and no output schema, the description is remarkably complete. It covers what the tool does, when to use it, how parameters behave, what the result contains, and edge-case behavior (layout with existing nodes). An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does thoroughly. It explains parent_path ('Network to build inside'), nodes (ordered specs with a full breakdown of the spec dict format, including type, name, parms, inputs with multiple wiring forms, flags, color, comment), dry_run (validate without creating), and layout (default True, honored only when auto-layout is enabled, with precise positioning semantics). This far exceeds what the bare schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Build'), a precise resource ('a whole node network in ONE atomic call'), and the key differentiator from node-by-node construction. It also names the preferred use case (3+ nodes) and contrasts with the slower alternative, making the tool's identity unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('the PREFERRED way to construct anything of 3+ nodes') and why (massively faster, atomic). It also gives a concrete usage tip: use dry_run=True to prove a plan with unfamiliar node types. This is strong, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_sop_chainA
Build a sequential chain of SOP nodes wired together in a single call.
PREFERRED over individual create_node calls for linear SOP chains โ builds and wires the entire chain in one round-trip, which is significantly faster.
Each step dict: {"type": str, "name": str (optional), "params": dict (optional)}. Nodes are created in order and each is automatically connected to the previous.
Example: steps=[ {"type": "box"}, {"type": "polybevel", "params": {"offset": 0.05}}, {"type": "scatter", "params": {"npts": 200}}, {"type": "copy_to_points", "name": "copy1"}, ]
Args: parent_path: Parent SOP network path. steps: List of step dicts defining the chain.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | ||
| parent_path | No | /obj/geo1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose key behaviors: nodes are created in order, automatically connected to the previous node, and all done in one call. It does not mention return values or handle edge cases like invalid node types, but it is substantially transparent about what the operation does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description opens with a one-sentence purpose statement, immediately adds usage guidance, gives a compact schema for the step dict, and includes a concrete example and Args section. There is no filler; every section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema and no annotations, the description covers the essential invocation details: parent path, step format, ordering behavior, and automatic wiring. The only notable gap is no mention of the return value or how the created nodes are identified afterward, which is a minor omission given the otherwise strong 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?
The schema has 0% description coverage, so the description must compensate. It compensates well by defining the step dict structure with its fields ('type', optional 'name', optional 'params'), explaining parent_path as the parent SOP network path, and providing a concrete example. It does not enumerate all possible node type strings, but the example clarifies enough for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Build a sequential chain of SOP nodes wired together in a single call.' It also distinguishes itself from the relevant sibling create_node by explicitly stating it is preferred for linear SOP chains, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool: 'PREFERRED over individual create_node calls for linear SOP chains.' It names the alternative, gives the condition, and gives the rationale (single round-trip, significantly faster). The word 'linear' also implicitly excludes branching/non-linear networks from its intended use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_top_cookC
Cancel active cooking on a TOP network.
Args: ctx: MCP context. node_path: TOP node or TOPnet path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It says 'Cancel active cooking' but does not disclose that this stops all cooking on the network, whether it clears the work item states, or how it affects the PDG graph. This opacity is a gap for a cancellation action that can have significant 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 short and direct, with two sentences and a simple Args list. It is not verbose or padded. However, it is under-specified for the complexity of the action, sacrificing completeness for brevity. Still, it earns a 4 for front-loading the core statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a cancellation tool with no annotations and no output schema, the description is missing key context: prerequisites, side effects (e.g., does it delete cooked results?), and how to verify cancellation. Given the complexity of PDG cooking and the existence of pause_top_cook, the definition is incomplete for an agent to use it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain node_path. It merely restates 'TOP node or TOPnet path' without adding context like whether it accepts a string that can be a root path or how to specify a node inside a network. This is minimal and does not compensate for the schema's lack of description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (cancel active cooking) on a TOP network, but it is terse and lacks detail about what this means in practice. It distinguishes from siblings like pause_top_cook and cook_top_node, but does not explicitly differentiate behavior. A 3 reflects the clear verb and resource without deeper explanation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like pause_top_cook or dirty_work_items. It does not state prerequisites (e.g., node must be cooking) or typical use cases. The only hint is the name and description, which imply it cancels cooking, but an agent cannot determine when to prefer it over pause_top_cook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_network_editorA
Capture a screenshot of the network editor.
The image is written to disk only; open output_path with your file
reader to look at it. Prefer get_node_info or list_children for inspecting
node connections unless visual confirmation of wiring is genuinely needed.
Args: output_path: Image file path. node_path: Node path to navigate to before capture.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | No | ||
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure burden. It transparently states the side effect: 'The image is written to disk only; open output_path with your file reader to look at it,' clarifying the output is not returned but persisted. It does not mention failure conditions or file format, hence the slight deduction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The purpose is stated first, followed by behavior, usage guidance, and parameter details. Every sentence adds information without redundancy. The structure is ideal for quick scanning by 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?
The tool is simple (two params, no output schema, no annotations), and the description covers all essential dimensions: purpose, side effects, file usage, alternatives, and parameter meaning. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameters. It provides concise but meaningful semantics for both: 'output_path: Image file path' and 'node_path: Node path to navigate to before capture.' These go well beyond the schema's bare titles, making invocation unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Capture a screenshot of the network editor.' It also distinguishes itself from siblings by explicitly steering away from get_node_info/list_children for inspection, making its unique purpose (visual wiring confirmation) 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 explicit guidance: 'Prefer get_node_info or list_children for inspecting node connections unless visual confirmation of wiring is genuinely needed.' This tells the agent exactly when this tool is the right choice and names the preferred alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_screenshotA
Capture a screenshot of the viewport or a specific pane tab.
The image is written to disk only; open output_path with your file
reader to look at it. Prefer get_geometry_info, get_node_info or
get_scene_summary unless visual confirmation is genuinely needed.
Args: output_path: Image file path. pane_name: Pane tab name. settle_seconds: Wait this long before capturing, without blocking Houdini, so a Karma viewport can converge after a change. Use this instead of a shell sleep between calls. Capped at 120.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_name | No | ||
| output_path | Yes | ||
| settle_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the side effect (file written to disk only), how to inspect it (open output_path), and the non-blocking wait behavior of settle_seconds. It could mention overwrite behavior or return value, but the disclosed traits are genuinely useful 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?
Every sentence earns its place: capability, disk-only behavior, alternative guidance, and per-parameter clarifications. It is tight, front-loaded, and free of 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 no annotations and no output schema, this description covers what the tool captures, where the output goes, how to view it, when to avoid it, and all three parameters. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter meaning, and it does: each arg is explained with purpose, behavior, and the 120 cap on settle_seconds. This is far beyond what the bare schema names provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Capture') and resource ('screenshot of the viewport or a specific pane tab'). The phrase 'written to disk only' differentiates it from rendering or network-capture siblings, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly directs the agent to prefer text-based tools (get_geometry_info, get_node_info, get_scene_summary) unless visual confirmation is genuinely needed. Also tells the agent to use settle_seconds instead of a shell sleep, which is concrete and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_node_typeA
Change a node's type in place, keeping wires, name, position, flags, parameter values and (for subnets/assets) network contents.
This is how an HDA instance is moved to an installed newer version
(building::2.0) without losing its edits, and how a placeholder is
swapped for the real node. Every value set before the swap and not after
it is named in parms_dropped (no such parameter on the new type) or
parms_reset (back at its default). Unversioned names map to the
preferred version, as create_node does.
Args: node_path: Node to change. new_type: Type name in the node's own category. keep_name: Keep the node's name. keep_parms: Carry parameter values over by name. keep_network_contents: Keep a subnet's/asset's children (False resets an asset to its definition's contents, also on a node that is already of new_type).
| Name | Required | Description | Default |
|---|---|---|---|
| new_type | Yes | ||
| keep_name | No | ||
| node_path | Yes | ||
| keep_parms | No | ||
| keep_network_contents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explains what is preserved, what happens to dropped/reset parameters, that unversioned names map to the preferred version, and that keep_network_contents=False resets an asset to its definition's contents even if already of the new type. It does not mention failure modes, permissions, or return behavior, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a compact behavioral summary, contextual examples, and a clear Args list. The prose is detailed but every sentence contributes meaningful information, so it earns its length without being bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, no annotations, and no output schema, the description covers the core semantics well: what the tool does, when to use it, and the behavior of key flags. Missing return-value or error-condition details are minor for this kind of in-place mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section must compensate. It documents all five parameters, with useful additions for new_type ('in the node's own category'), keep_parms ('by name'), and keep_network_contents ('False resets an asset to its definition's contents'). However, node_path and keep_name are essentially restatements of their names and add minimal 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 states a specific verb, resource, and behavior: 'Change a node's type in place' while preserving wires, name, position, flags, parameter values, and network contents. This clearly distinguishes it from sibling operations like create_node, delete_node, rename_node, and copy_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 concrete use cases: moving an HDA instance to a newer installed version and swapping a placeholder for a real node. It also references create_node for version-name behavior, but it does not explicitly state when not to use this tool or compare it with a direct alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_cacheA
Delete cached files on disk for a cache node.
Args: ctx: MCP context. node_path: Path to the cache node. frame_range: [start, end] frame range to limit deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| frame_range | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does clearly disclose the destructive nature of the operation by specifying that cached files on disk are deleted, and it adds useful context by noting frame_range can limit deletion. However, with no annotations provided, the description carries the full burden and does not mention whether the operation is reversible, what happens to the cache node itself, or how missing paths 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 primary behavior is front-loaded in the first sentence, and the parameter explanations are compact and directly useful. The 'Args:' block is mostly efficient, though including the non-schema ctx argument adds slight noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple destructive tool with no annotations and no output schema, and the description covers the required node_path and the optional frame_range semantics. It is minimally viable, but it lacks any statement about return behavior, failed lookups, or whether deletion is permanent, which would make the tool safer for an agent to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 0%, the description compensates by explaining node_path as 'Path to the cache node' and explaining frame_range as a '[start, end] range that limits deletion. It adds meaning beyond the bare schema property names, though it also lists a ctx param that does not appear in the input schema, which is a minor distraction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states the operation: 'Delete cached files on disk for a cache node.' This is a specific verb plus resource that clearly differentiates it from siblings like list_caches, get_cache_status, and write_cache. No ambiguity remains about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose clear_cache over related cache-management tools such as write_cache, list_caches, or get_cache_status. The usage context is only implied by the verb 'Delete' and the tool name. No explicit prerequisites, exclusions, or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_snapshotsC
Take or compare scene state snapshots.
Args: action: "take" or "compare". snapshot_name: Snapshot name.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | take | |
| snapshot_name | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, but it only discloses the operation and parameter names. It does not say whether taking a snapshot mutates the scene, whether compare returns output, or what side effects occur, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose, and the Args block is compact. It is efficient, though the snapshot_name line is redundant with the schema's property title and adds little 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?
Even though the tool is simple, there is no output schema and no annotation safety information, so the description should explain what taking or comparing snapshots does, how results are returned, and what happens to existing snapshots. That context is absent. An agent cannot confidently predict the tool's observable 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?
With 0% schema description coverage, the description does contribute meaning by listing the allowed values 'take' or 'compare' for action, which is useful since the schema has no enum. However, 'snapshot_name: Snapshot name' just restates the parameter title and adds no deeper semantics about scope, format, or behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear operation: 'Take or compare scene state snapshots,' and the action argument enumerates the two supported modes. It is understandable on its own, though it does not explicitly differentiate itself from similar sibling tools such as create_take or list_takes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 rather than snapshot- or take-related siblings, and no mention of alternatives or exclusions. The intended use cases are only implied by the phrase 'take or compare,' so an agent gets little routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_nodesA
Connect two nodes together.
To feed a node INSIDE a subnet from one of the subnet's own input connectors (a SubnetIndirectInput โ not a node, it has no path), pass the subnet as source_path and the connector index as indirect_input.
Args: ctx: MCP context. source_path: Upstream node path; with indirect_input, the subnet whose input connector is the source. dest_path: Downstream node path. output_index: Source output index. input_index: Destination input index. input_name: Destination connector name or label (e.g. "base_color" on a VOP shader); wins over input_index. indirect_input: Index of the subnet input connector at source_path to wire from (dest_path must live inside that subnet).
| Name | Required | Description | Default |
|---|---|---|---|
| dest_path | Yes | ||
| input_name | No | ||
| input_index | No | ||
| source_path | Yes | ||
| output_index | No | ||
| indirect_input | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses parameter precedence ('input_name ... wins over input_index') and special subnet behavior, but does not state side effects such as whether existing connections are replaced or error/validation behavior. This is a meaningful gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by a focused special-case note and a compact Args list. No filler; every line adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all six parameters and the tricky subnet case despite no output schema and no annotations. Minor gap: it does not mention what the tool returns or how it handles invalid inputs, but the calling semantics are clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the Args section documents every parameter with meaningful semantics, including path roles, index meaning, the input_name precedence, and indirect_input constraint ('dest_path must live inside that subnet'). Fully compensates for the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource, 'Connect two nodes together,' and clarifies the special subnet indirect-input case, making it distinguishable from sibling tools like connect_nodes_batch and disconnect_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use the indirect_input form ('To feed a node INSIDE a subnet from one of the subnet's own input connectors...') and explains path semantics. Does not explicitly name alternatives or when-not conditions, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_nodes_batchA
Connect multiple node pairs in a single call.
Args: connections: List of connections. Each dict has keys: source_path (str), dest_path (str), output_index (int, default 0), input_index (int, default 0), input_name (str, optional: connector name or label, wins over input_index), indirect_input (int, optional: source_path is then a subnet and this is the index of its input connector to wire from โ for the first node of a chain built inside that subnet).
| Name | Required | Description | Default |
|---|---|---|---|
| connections | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains the input mechanics well, but it does not state side effects, whether existing connections are replaced, failure behavior, or whether the operation is atomic, leaving important behavioral ambiguity for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the single-sentence purpose and then provides a compact, structured parameter breakdown. It is dense but each line adds necessary information; the only cost is that the explanation is technical and requires careful reading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 mutation tool with no annotations and no output schema, the description adequately documents the complex connections parameter but omits expected returns, error/partial-failure semantics, and any limits on batch size. This leaves agents uncertain about what to expect after invocation, beyond the operation itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the schema only declares an untyped array of objects. The description compensates thoroughly by documenting every expected key, its type, defaults for output_index and input_index, precedence of input_name over input_index, and the nuanced behavior of indirect_input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Connect multiple node pairs in a single call,' which names a specific verb, resource (node pairs), and batch scope. This clearly distinguishes it from sibling connect_nodes and other network 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 batch intent is explicit in 'multiple node pairs in a single call,' giving clear context for when this tool is appropriate. It does not explicitly name connect_nodes as the alternative for single connections, but that exclusion is strongly implied by the sibling name and the phrase 'in a single call.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cook_frame_rangeA
Cook a node frame by frame and report what changed on each frame.
This is how you advance a sequential solver and how you prove a simulation is doing something. Frames are cooked in order, so a SOP solver, a DOP network or an animated chain all accumulate correctly, and per-frame cook time, errors, counts and attribute aggregates come back in ONE round trip instead of one per frame.
Prefer this over set_frame in a loop, and over stepping by hand: a 100-frame check is one call rather than 100. The frame is left where the cook ended, ready to screenshot.
Args: node_path: Node to cook; its output is what gets measured. start: First frame. Defaults to the playbar start. end: Last frame, inclusive. Defaults to the playbar end. step: Frame increment. Keep at 1.0 for any solver, since skipping frames gives it a discontinuous time step and invalid results. attribs: Point attributes to aggregate per frame (min/max/mean/sum). volumes: Also report per-volume name, resolution and value range.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| step | No | ||
| start | No | ||
| attribs | No | ||
| volumes | No | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries behavioral disclosure: frames are cooked in order so solvers accumulate correctly, results come in one round trip, per-frame errors and aggregates are reported, and the frame is left at the end for screenshots. It also warns that skipping frames produces discontinuous time steps and invalid 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 front-loaded with the core operation, then gives usage rationale, and ends with a compact parameter walkthrough. Each sentence adds informationโeven the repeated 'one call vs. one per frame' point is used to reinforce the alternative comparison.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description covers the key invocation facts: what it does, when to use it, parameter semantics, side effects, and the shape of returned information (per-frame cook time, errors, counts, attribute aggregates, volume details). A precise JSON return layout is not specified, but the description provides enough for an agent to select and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides types, defaults, and required status but no descriptions, so the Args section must and does compensate. It explains node_path as the measured output, start/end defaults to the playbar, step's solver-specific warning, the aggregate math for attribs, and exactly what volumes adds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb ('cook'), a resource ('a node'), and the output ('report what changed on each frame'), which clearly distinguishes it from sibling tools like set_frame and get_cook_status. The usage note that this is how you advance a sequential solver further reinforces its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to prefer this over set_frame in a loop or stepping by hand, and explains the advantage in a single call for a 100-frame check. It also gives a strong condition for when not to set step above 1.0 (any solver), making selection guidance actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cook_top_nodeB
Cook a TOP node to execute its work items.
Args: ctx: MCP context. node_path: TOP node path. block: Wait for cooking to complete. generate_only: Only generate work items, do not cook.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | ||
| node_path | Yes | ||
| generate_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose the blocking behavior and the generate_only mode, which is useful, but it does not mention side effects, failure modes, or that cooking can be a long-running operation. This is partial but not comprehensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, followed by a clean parameter list. The only minor waste is 'ctx: MCP context,' which is generic and adds little, but overall the structure is efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, yet the description does not explain what the tool returns, what happens when block is false, or what errors/prerequisites exist. For a cooking action with many related TOP tools, an agent still lacks important 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 must compensate, and it does. Each parameter receives a meaningful one-line explanation, especially generate_only ('Only generate work items, do not cook') and block ('Wait for cooking to complete'), which add real semantics beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Cook a TOP node') and the effect ('execute its work items'), which goes beyond the bare tool name. However, it does not explicitly differentiate from related siblings like cook_frame_range or get_cook_status, so it stops 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 guidance is given on when to use this tool versus alternatives such as cancel_top_cook, get_cook_status, or cook_frame_range. The intended context is only implied by the verb 'cook' and the parameter names, with no explicit when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_nodeC
Copy a node, optionally into a different parent network.
Args: ctx: MCP context. node_path: Source node path. dest_parent: Destination parent path. new_name: Name for the copy.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | No | ||
| node_path | Yes | ||
| dest_parent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It states that it copies a node but does not mention whether the copy is deep, what happens to connections, dependencies, or how name conflicts are handled. It also does not disclose any side effects or required permissions, making it incomplete for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single sentence summarizing the purpose plus a structured Args docstring. It is front-loaded with the primary action and avoids unnecessary verbosity, though the docstring format is somewhat redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description must fully equip an agent to use the tool correctly. It lacks critical details such as error handling, naming conflict behavior, whether the copy is recursive, and how the tool relates to sibling operations like move_node or create_node. This is insufficient for a tool that manipulates scene graph nodes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, so the description must compensate. The docstring provides brief explanations for each parameter (source node path, destination parent path, name for the copy), which adds some meaning beyond the bare titles. However, it does not clarify optionality, defaults, or the behavior when dest_parent or new_name are omitted, leaving significant 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 clearly states the action (copy) and the resource (node), with an optional variation (into a different parent network). It is specific enough to distinguish from move_node and create_node, though it does not explicitly mention the new_name parameter, which is implied but not highlighted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 move_node, rename_node, or create_node. It does not state when copying is appropriate or when a different tool should be used instead, leaving the agent to infer the 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.
create_chop_nodeA
Create a new CHOP node.
Before using this, call list_node_types(context='Chop', filter='') to verify the correct node type. CHOPs has many dedicated nodes for motion and timing โ noise, wave, spring, jiggle, lag, limit, filter, math, function, blend, shift, stretch, trim, cycle, speed, constraintlookatat, constraintpath โ that may already do what you need.
Args: parent_path: Parent network path. chop_type: CHOP node type to create. name: Node name override.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| chop_type | Yes | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states "Create a new CHOP node," implying mutation but offering no details about potential errors, behavior on duplicate names, whether the tool validates chop_type, or what happens if parent_path is invalid. This leaves the agent with insufficient knowledge of side effects or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-sentence purpose, a focused usage note, and an args list. The list of CHOP node types is a bit lengthy but serves the usage guidance by illustrating alternatives. Overall, no redundant sentences are present, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter creation tool with no output schema or annotations, the description covers the purpose, pre-call validation, and parameter meanings. However, it does not explain what the tool returns (e.g., node path) or error behavior, which is important for an agent to confirm successful creation. The pre-call guidance helps but the description remains incomplete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does provide concise definitions for all three parameters: parent_path (parent network path), chop_type (CHOP node type to create), and name (node name override). This adds meaning beyond the raw schema, but the definitions are terse and lack constraints, examples, or format details, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Create a new CHOP node." This clearly differentiates it from siblings like create_cop_node, create_lop_node, and the generic create_node, because the CHOP context is explicit. The additional list of dedicated CHOP node types reinforces the tool's scope 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 explicitly instructs the agent to call list_node_types(context='Chop', filter='<keyword>') before using this tool to verify the correct node type, and warns that many dedicated nodes already exist that may do what is needed. This provides clear when-to-use and when-not-to-use guidance, effectively steering the agent away from unnecessary creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cop_nodeA
Create a COP node in the specified network.
Before using this, call list_node_types(context='Cop', filter='') for Copernicus nodes (Houdini 20+), or context='Cop2' for legacy COPs. Copernicus is the modern image processing system and is preferred over COP2 (deprecated as of Houdini 20.5). COPs has many dedicated image-processing nodes โ blur, sharpen, levels, contrast, over, multiply, luminance, premultiply, channelcopy, noise, ramp, fractalnoise, worleynoise, rasterizegeo, heighttonormal, sdfshape โ that may cover the operation without needing a VEX COP or Python.
Args: parent_path: Path to the parent COP network. cop_type: COP node type to create. name: Override node name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| cop_type | Yes | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does explain the Copernicus vs COP2 distinction and notes that Copernicus is preferred over deprecated COP2. However, it doesn't disclose what happens on failure, whether the node is created with default parameters, or whether the operation is destructive to existing nodes. The description adds some context but not comprehensive behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, a usage note, and an Args section. It's moderately sized but every sentence earns its place. The front-loaded purpose statement and the practical pre-call instruction are valuable. The list of example node types is somewhat long but serves a real purpose in guiding tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 3 parameters and no output schema, the description covers the essential context: what the tool does, how to determine the correct cop_type, and the meaning of each parameter. It doesn't explain return values or error behavior, but given the tool's simplicity and the absence of an output schema, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The description lists the three parameters (parent_path, cop_type, name) in an Args section, but only provides minimal context: parent_path is 'Path to the parent COP network', cop_type is 'COP node type to create', and name is 'Override node name'. This adds some meaning beyond the schema's bare titles, but doesn't explain formats, defaults, or constraints beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a COP node in the specified network.' It identifies the resource (COP node), the action (create), and the target context (specified network). It also distinguishes between Copernicus (Houdini 20+) and legacy COP2 contexts, which helps differentiate it from sibling tools like create_chop_node, create_lop_node, and create_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it instructs the agent to call list_node_types(context='Cop', filter='<keyword>') before using this tool, and explains when to use Cop vs Cop2. It also lists many dedicated COP node types that may cover the operation without needing a VEX COP or Python, which helps the agent decide when this tool is appropriate versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_hdaC
Create a new HDA from an existing subnet node.
Args: ctx: MCP context. node_path: Subnet node path. hda_file: Destination HDA file path. type_name: Operator type name. label: Human-readable label. version: Version string.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| version | No | 1.0 | |
| hda_file | Yes | ||
| node_path | Yes | ||
| type_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals only that the tool creates an HDA from a subnet node. It doesn't state whether the source subnet is modified, whether the destination file is overwritten or errors if it exists, whether a cook is triggered, or any side effects. For a creation tool this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded, followed by a compact structured args list. It is reasonably efficient with no obvious filler. Minor waste: the 'ctx: MCP context.' line references a non-schema parameter, but overall the structure is clean and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no output schema and no annotations, the description is incomplete. It doesn't explain the return value, preconditions (e.g., what makes a node a valid 'subnet node'), error behavior if the destination file exists, or side effects on the scene. An agent would have to guess at these details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The args section does add one-line meaning to each parameter ('Subnet node path', 'Destination HDA file path', 'Operator type name', 'Human-readable label', 'Version string') beyond the bare schema titles. However, these are minimal glosses, and the description lists 'ctx' as an arg even though it isn't in the schema, which is slightly confusing. It helps but doesn't fully 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 states a specific verb (Create) and resource (HDA) with the source material ('from an existing subnet node'). This distinguishes it from siblings like install_hda, update_hda, reload_hda, and uninstall_hda, which are different lifecycle operations. It's clear but doesn't explicitly name the siblings it differs 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?
No guidance on when to use this tool versus alternatives such as update_hda (for existing HDAs) or install_hda. No exclusions, preconditions, or contextual cues are given. The args listing describes what each parameter is, not when the operation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lightB
Create a USD light in a LOP network.
Args: parent_path: Parent LOP network path. light_type: "dome", "distant", "rect", "sphere", "disk", or "cylinder". name: Light node name. intensity: Light intensity. color: [r, g, b] color values. position: [x, y, z] world position.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | ||
| position | No | ||
| intensity | No | ||
| light_type | No | dome | |
| parent_path | No | /stage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It states it creates a light but doesn't disclose side effects, permissions, failure behavior, or whether it modifies existing lights. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded with purpose, and efficiently lists parameters without fluff. The format is clean and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Incomplete for a creation tool with 6 parameters: no mention of return value, prerequisites (like LOP network existence), edge cases, or assumptions. Assumes familiarity with USD/LOP concepts and doesn't explain optionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It lists all parameters with brief descriptions (e.g., light_type options), adding meaning beyond the schema. However, lacks ranges/units for intensity, color, and position, and doesn't indicate defaults, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (create) and resource (USD light in LOP network), clearly distinguishing from list_lights and set_light_properties. The verb+resource is precise 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?
No guidance on when to use this tool vs. alternatives like create_light_rig or set_light_properties. The description is silent on selection criteria, 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.
create_light_rigA
Create a preset lighting rig in a LOP network.
Args: parent_path: Parent LOP network path. preset: "three_point", "studio", "outdoor", or "hdri". intensity_mult: Multiplier for all light intensities.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | three_point | |
| parent_path | No | /stage | |
| intensity_mult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only says 'create' and lists parameters. It does not explain whether existing lights are replaced or added, if the parent LOP network must already exist, or what side effects occur. This is insufficient for a creation 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 compact, front-loaded with the main purpose, and uses a simple Args list without fluff. It could be slightly more structured, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 flat params) and all params are described, but there is no mention of return values or side effects, and no output schema exists to clarify what the agent should expect. Prerequisites and failure behavior are also omitted, leaving moderate 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%, yet the description fully compensates by defining all three parameters: parent_path, preset with an explicit list of allowed strings, and intensity_mult as a multiplier. This is exactly the information an agent needs to call the tool correctly and goes well beyond the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('create') and resource ('preset lighting rig in a LOP network'), clearly distinguishing it from siblings like create_light (single light) and set_light_properties. The preset keyword reinforces that this is a higher-level, packaged 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 on when to choose this tool over alternatives such as create_light or create_lop_node. The 'preset' phrasing implies a convenient higher-level tool, but there is no explicit when/when-not or alternative mention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lop_nodeA
Create a new LOP node.
Before using this, call list_node_types(context='Lop', filter='') to verify the correct node type. Solaris ships many specialized LOPs โ sublayer, reference, materiallibrary, assignmaterial, karmarendersettings, editproperties, xform, prune, configurelayer, collection, addvariant โ that may not be obvious from their names.
Args: parent_path: Parent node path. lop_type: LOP node type (e.g. "sphere", "sublayer", "merge"). name: Node name. prim_path: USD prim path to set on the node.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| lop_type | Yes | ||
| prim_path | No | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It states the creation action and lists examples, but does not disclose side effects such as whether creating the node triggers a cook, what happens with null name or prim_path, whether the parent must already exist, or what the tool returns on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a short intro, a focused prerequisite, and a compact Args list. The list of specialized LOP types is long but earns its place because it prevents incorrect tool 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?
The description covers the main workflow and parameter meanings, which is more than minimal. However, with no output schema and no annotations, it omits return behavior, error conditions, and mutation side effects, leaving the agent with an incomplete picture after 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 Args section compensates by documenting all four parameters and giving clarifying examples for lop_type and prim_path. It does not fully explain default behavior for name and prim_path, but the added semantics are 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 the action (create) and the resource (a LOP node), and the LOP qualifier distinguishes it from similar create_chop_node and create_cop_node tools. It does not explicitly contrast with the generic create_node tool, so it misses the strongest form of 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 an explicit precondition: call list_node_types(context='Lop', filter='<keyword>') to verify the correct node type, and it names many specialized LOP types the agent might not guess. It does not state when to prefer create_node over this tool, but 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.
create_materialA
Create a material in /mat with configurable surface properties.
Args: name: Material node name. mat_type: Material type ("principled", "materialx"). base_color: [R, G, B] base color, 0-1 per channel. roughness: Surface roughness, 0-1. metallic: Metallic factor, 0-1. opacity: Opacity, 0-1.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | material1 | |
| opacity | No | ||
| mat_type | No | principled | |
| metallic | No | ||
| roughness | No | ||
| base_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that this is a write operation that creates a material in /mat, which is core behavior. It does not mention collision/overwrite behavior, whether a material network is required, or what the tool returns, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-line summary and follows with a compact Args block. Every line adds needed value, and there is no filler or repetition of schema defaults beyond useful constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation tool with no output schema, the description is sufficient to invoke correctly, but it is not fully complete: it omits usage alternatives, side effects, and any expected return/confirmation. Missing context is not severe because the parameter semantics are fully 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?
Schema description coverage is 0%, but the description compensates fully by documenting all six parameters: name semantics, valid mat_type values ('principled', 'materialx'), base_color format and range, and roughness/metallic/opacity ranges. This goes well beyond the bare input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Create'), resource ('material'), and location ('/mat'), and adds that surface properties are configurable. It is clear enough to separate creation from read-only material tools like list_materials/get_material_info, though it does not explicitly distinguish itself from the sibling create_material_network or assign_material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is implied: use this when you need to create a new material node in /mat. However, it does not state when to prefer assign_material, create_material_network, or list_material_types, and there are no explicit exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_material_networkA
Create a new material network in /mat.
The keys base_color ([r, g, b]), roughness, metalness and opacity are accepted on both shader types and mapped to the shader's own parameter names (base_colorr/g/b and specular_roughness on MaterialX, basecolor, rough, metallic and opac on Principled). Any other key must be the shader's real parameter name; a list sets the whole parm tuple. The reply lists what was applied and, under "skipped", every key that matched no parameter, with the reason.
Args: ctx: MCP context. name: Name for the new material node. shader_type: "principled" (principledshader::2.0), "materialx" (mtlxstandard_surface), or any material node type name. params: Parameter name-value pairs to set on the shader.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| params | No | ||
| shader_type | No | principled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure, and it does so well: it explains mapping of common keys to shader-specific names, that arbitrary keys must be real parameter names, that lists set the whole parm tuple, and that the reply reports skipped keys with reasons. It does not cover all possible side effects or permissions, but for a create tool the key mutation and failure behavior are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence adds value: scope, parameter mapping behavior, unknown-key handling, and response shape. The Args list is cleanly structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no annotations and no output schema, the description covers the input semantics and the response enough to call it correctly. Minor gaps such as name-uniqueness expectations or what happens with a null params object are not material to successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate; the Args section fully explains name, shader_type (including valid values), and params (name-value pairs, accepted keys, and list semantics). It adds substantial meaning beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and target: 'Create a new material network in /mat.' This is a specific verb+resource, and the name/behavior differentiates it from merely assigning materials. However, it does not explicitly distinguish itself from sibling tools like create_material or assign_material, so it misses the full 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 the tool (when creating a material network in /mat) and details accepted parameters, but it does not state when not to use it or mention alternatives. Compared to the calibration example that explicitly routes to a sibling, this leaves the choice 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.
create_network_boxA
Draw a titled network box around nodes, to document a graph you built.
Args: ctx: MCP context. parent_path: Network the box lives in. node_paths: Sibling nodes to enclose; the box fits around them. comment: Title shown on the box. color: RGB in 0..1.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| comment | No | ||
| node_paths | No | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It states that the box is drawn, titled, and fits around the given sibling nodes, implying a visual, non-destructive operation, but it does not mention what is returned, whether the box is a created node, or any side effects on the existing graph.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a clean bulleted argument list. Every line adds value, with no filler or redundant restatement 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?
The tool is simple and all parameters are explained, but there is no output schema and the description omits return behavior, default behavior when node_paths is null, and any constraints or prerequisites. This leaves some uncertainty for an agent trying to confirm successful execution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by explaining each real parameter: parent_path, node_paths, comment, and color with 'RGB in 0..1.' The inclusion of 'ctx: MCP context' is slightly confusing because ctx is not in the input schema, but the other parameters are meaningfully documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The lead sentence is specific: 'Draw a titled network box around nodes, to document a graph you built.' It names the verb, the object, and the purpose, and clearly distinguishes this from sibling tools like create_sticky_note or set_node_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 phrase 'to document a graph you built' provides a clear context for when the tool is appropriate. It does not explicitly name alternatives or exclusions, but the intended use case is evident from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_nodeA
Create a node inside a parent network.
Before using this, call list_node_types(context='', filter='') to verify a dedicated node exists for the operation. Houdini has thousands of nodes โ many common operations (boolean, scatter, copy to points, fracture, ocean, hair, vellum, pyro, etc.) have dedicated nodes that are better than writing VEX or Python.
Args: ctx: MCP context. parent_path: Parent network path. node_type: Node type (e.g. 'geo', 'box', 'grid'). name: Node name. position: [x, y] network editor position.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| position | No | ||
| node_type | Yes | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals that the tool can create any node type, implying significant flexibility and potential side effects (dependencies on parent path, etc.), but it doesn't explicitly state whether this is destructive or requires specific permissions. It doesn't discuss error cases (e.g., if node_type is invalid) or confirm whether the node is created immediately or requires cooking. Given the lack of annotations, this is a moderate gap, not severe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it starts with a clear one-sentence purpose, then provides a context paragraph explaining the importance of checking dedicated nodes, and ends with a parameter list. It is concise with no wasted words; every sentence earns its place, though the parameter list could be a little more compact. Overall, it's efficient and front-loaded with the key 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?
The tool is a creation operation with moderate complexity (4 parameters, no enums, no output schema). The description covers the purpose, usage guidance, and parameter semantics, which is sufficient for an agent to call it correctly. It doesn't discuss error handling or return values, but those are not critical given the lack of output schema. The guidance to check list_node_types adds important context that ensures correct usage. This is nearly complete, missing only edge-case behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does, by listing each parameter with a brief explanation: 'parent_path: Parent network path', 'node_type: Node type (e.g. 'geo', 'box', 'grid')', 'name: Node name', 'position: [x, y] network editor position'. This adds meaning beyond what the schema provides (which only has type and default), giving the agent concrete information on how to use each parameter. The examples for node_type are particularly 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 clearly states the tool creates a node inside a parent network, with a specific verb ('Create') and resource ('node'). It also distinguishes itself by referencing the need to check for dedicated node types, which is unique and differentiates it from siblings like create_wrangle or create_vex_expression. The purpose is unambiguous and easy to understand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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: it instructs the agent to call list_node_types first to verify a dedicated node exists, and explains that Houdini has thousands of nodes with many common operations having dedicated nodes that are better than writing VEX/Python. This explicitly tells when to use this tool and when to prefer alternatives, which is well above average.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_render_nodeB
Create a new render (ROP) node in /out.
Args: renderer: Renderer type ('karma', 'opengl', 'mantra', 'rop_geometry', 'rop_alembic', 'usdrender', 'fetch', 'merge', 'rop_fbx', 'rop_gltf'). name: Node name. camera: Camera node path. output_path: Output file path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| camera | No | ||
| renderer | Yes | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the node is created in /out, but does not mention whether the renderer starts, whether name collisions are handled, what the tool returns, or any side effects beyond node 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 purpose is front-loaded in one clear sentence, followed by a compact argument list. It is appropriately sized, though the 'name' line adds little value beyond the schema's parameter 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 four-parameter creation tool, the description covers the purpose, location, and input semantics adequately. However, with no annotations or output schema, it leaves gaps around expected return values, failure behavior, and whether the created node is automatically rendered or cooked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates well by listing valid renderer values and clarifying semantic roles like 'Camera node path' and 'Output file path.' Only 'name: Node name' is largely redundant with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a new render (ROP) node in /out.' This clearly identifies what the tool does and where, and distinguishes it from generic node creation or render configuration siblings like create_node or setup_render.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. Siblings such as setup_render, start_render, and render_node_network suggest related workflows, but the description does not explain where create_render_node fits 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.
create_spare_parameterB
Add a spare parameter to a node.
Args: node_path: Node path. parm_name: Internal parameter name. parm_type: "float", "int", "string", "toggle", or "menu". label: UI label. default_value: Default value. min_val: Minimum value (float/int only). max_val: Maximum value (float/int only).
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| max_val | No | ||
| min_val | No | ||
| node_path | Yes | ||
| parm_name | Yes | ||
| parm_type | Yes | ||
| default_value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Add' without mentioning side effects, required permissions, reversibility, or what happens on success. It does not even state whether the tool returns anything or modifies the node in place, which is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a standard docstring with a one-line summary and a bulleted arg list. It is concise, front-loaded, and every line contributes. No redundant information, but it could be slightly more structured with parameter groupings or examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameters well but omits behavioral context such as return values, error conditions, or side effects. There is no output schema and no annotations, so the agent is left without knowing what to expect after invocation. It also does not clarify when to use this tool versus the plural variant, leaving a gap in 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 schema has zero description coverage, so the description must compensate. It provides brief but meaningful explanations for all 7 parameters, including valid values for 'parm_type' and the type restriction for 'min_val'/'max_val' (float/int only). This adds value beyond the schema's bare titles, though it could be more detailed about 'default_value' and format expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and target: 'Add a spare parameter to a node.' It is specific and unambiguous. However, it does not explicitly differentiate from the sibling tool 'create_spare_parameters' (plural), leaving the distinction to the name rather than the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'create_spare_parameters' or general node creation tools. The description lacks any context about scenarios, prerequisites, or constraints that would help an agent decide to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_spare_parametersA
Batch-create multiple spare parameters in one call, optionally in a folder tab.
Args: node_path: Node path. parameters: List of parameter specs. Each dict has keys: parm_name (str), parm_type (str: "float"/"int"/"string"/"toggle"/"menu"), label (str), default_value (optional), min_val (optional), max_val (optional). folder_name: If provided, wraps all parameters in a named folder tab. folder_type: Folder style: "Tabs", "Collapsible", or "Simple".
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| parameters | Yes | ||
| folder_name | No | ||
| folder_type | No | Tabs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the creation behavior, batch nature, folder wrapping option, and parameter types. However, it does not reveal what happens on duplicate parameter names, whether existing parameters are replaced, or what side effects or errors may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core purpose, and uses a clean Args list with no filler. Each line adds necessary information about argument semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 to construct a call because all parameters and nested spec keys are documented. However, with no annotations and no output schema, it omits return behavior, error conditions, and prerequisites such as node_path validity or duplicate-name handling, leaving some gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does. It explains parameters as a list of spec dicts with keys and types, clarifies folder_name behavior, and enumerates folder_type values. Node_path is thinly described as 'Node path', but the nested parameter spec detail is the main value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action: 'Batch-create multiple spare parameters in one call', with an optional folder tab. The batch aspect distinguishes it from the sibling create_spare_parameter, so the tool's purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Batch-create multiple spare parameters in one call' implies the tool is for multi-parameter creation, and a singular sibling exists. However, it never explicitly states when to prefer this over create_spare_parameter, nor does it mention exclusions or prerequisites beyond the arguments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sticky_noteA
Leave a sticky note in a network.
Args: ctx: MCP context. parent_path: Network the note lives in. text: Note text. position: [x, y] in network editor units. size: [width, height] in network editor units. color: RGB in 0..1.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| text | Yes | ||
| color | No | ||
| position | No | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to lean on, so the description must disclose behavior. It only says 'Leave a sticky note' and lists parameters, with no mention of side effects, return behavior, persistence, or error conditions. For a mutating creation tool with zero annotation coverage, that is a clear 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 lean: one purpose sentence followed by a terse, well-aligned arg list. Every line adds information about parameter semantics; there is no filler or repetition. The purpose is front-loaded, and the structure makes the parameter mapping 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 parameter semantics are well covered, and the tool is a simple create operation. However, with no annotations and no output schema, the description should also mention what successful creation looks like or whether parent_path must already exist. It is adequate for basic invocation but not fully contextual.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are entirely empty, so this arg list carries full weight. It explains each parameter: parent_path is 'Network the note lives in,' and it adds units for position and size ('network editor units') and the color range ('RGB in 0..1'). This fully compensates for the 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 opens with a specific verb and resource: 'Leave a sticky note in a network.' This clearly identifies what the tool creates and where it acts. Among a large sibling set, this is the only sticky-note creation tool, and the wording distinguishes it from generic node-creation tools like create_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 create_node or set_node_color, and no mention of preconditions like parent_path needing to be a valid network. The description gives no when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_takeC
Create a new take, optionally under a parent take.
Args: name: Name for the new take. parent_name: Parent take name (defaults to current take).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| parent_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It fails to disclose whether creating a take modifies the current take, whether it can be undone, or any side effects. It does not state if the tool changes state or just creates a record.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with a single purpose sentence and a compact Arg list. It is front-loaded with the main verb. However, it could be more structured with clear sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 there is no output schema and no annotations, the description is incomplete for an agent to understand the result of the operationcars. It does not mention return value, error conditions, or how it interacts with the current take system, which is critical for proper 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 coverage is 0%, so the description must compensate. It explains 'name' and 'parent_name' briefly, but omits details like the format of parent_name, whether 'current take' is required to exist, and any constraints on names. The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create a take) and the optional parent relationship. It is distinguishable from sibling tools like get_current_take and set_current_take, 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 does not specify when to use this tool versus alternatives. It lacks context on whether this is a one-time operation, how it relates to current take, or any prerequisites. 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.
create_vex_expressionC
Set a VEX expression on a parameter.
Args: node_path: Path to the node. parm_name: Parameter name. vex_code: VEX expression code.
| Name | Required | Description | Default |
|---|---|---|---|
| vex_code | Yes | ||
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It only states the action (setting) without mentioning side effects, prerequisites (e.g., whether the parameter must exist), reversibility, or potential errors. For a mutation tool, this is insufficient 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 concise and well-structured: a one-sentence action statement followed by a clear parameter list. It is front-loaded with the core purpose and avoids unnecessary words, though it could be expanded with useful context without sacrificing 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 tool with 3 required parameters, no annotations, and no output schema, the description omits critical details such as value formats, error conditions, whether the parameter must already exist, and the effect on existing expressions. It is incomplete for an agent to call it correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must compensate by explaining parameter semantics, but it merely restates the parameter names with minimal phrases (e.g., 'Path to the node', 'Parameter name', 'VEX expression code') that add little beyond the schema. It does not provide expected formats, examples, 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 clearly states the action: setting a VEX expression on a parameter. It specifies the resource (parameter) and the type of value (VEX expression), which distinguishes it from siblings like set_parameter (generic value) and set_expression (possibly generic expression). The parameter list further reinforces the 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 no guidance on when to use this tool versus alternatives such as set_expression, validate_vex, or set_parameter. It does not mention any exclusions or conditions for selection, leaving the agent to infer the appropriate context from the name and parameter list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_wrangleA
Create an Attribute Wrangle node with VEX code.
LAST RESORT. VEX is for attribute math that no node expresses โ NEVER for modeling, scattering, copying, deforming, grouping, or randomizing, which all have dedicated nodes. Building geometry in a wrangle when a native node exists is a failure, not a shortcut.
The justification parameter is mandatory: state which list_node_types searches you ran and why none of the results can do this. If you cannot write that sentence honestly, you have not checked โ check first.
Args: parent_path: Parent SOP network path. vex_code: VEX snippet to set. justification: Which native nodes you checked (the actual list_node_types filters used) and why none can express this logic. run_over: Element to run over ("Points", "Vertices", "Primitives", "Detail", "Numbers"). name: Node name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| run_over | No | Points | |
| vex_code | Yes | ||
| parent_path | Yes | ||
| justification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and largely meets it by disclosing that this is a last-resort mutation with mandatory justification and clear prohibitions. It does not mention side effects such as existing node overwrite behavior or return values, but it does disclose the high-risk purpose and guardrails effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and the most important constraint ('LAST RESORT), then gives compact, meaningful parameter documentation. The emphatic warnings are repetitive but purposeful and directly prevent misuse rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description covers the main call requirements: when to use, how to justify, and every parameter's meaning. It omits concrete return-value expectations and error behavior, but the usage contract is detailed enough that an agent can invoke and validate appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate, and it does by explaining all five parameters in the Args list. It adds real value by specifying run_over's allowed values and by detailing exactly what justification must contain, which goes beyond the schema's bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific operation: creating an Attribute Wrangle node with VEX code and immediately scopes VEX to attribute math that no native node expresses. This clearly distinguishes it from generic node creation and from sibling tools like create_vex_expression or set_wrangle_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance ('VEX is for attribute math that no node expresses') and explicit when-not-to-use exclusions (never for modeling, scattering, copying, deforming, grouping, or randomizing). It also mandates a justification workflow via list_node_types, giving the agent a concrete decision procedure before invoking the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_keyframeC
Delete a keyframe at a specific frame.
Args: node_path: Node path. parm_name: Parameter name. frame: Frame number to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes | ||
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, but it only restates the action. It does not warn that deletion is destructive/irreversible, state whether the frame must currently have a keyframe, or describe error/return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the action stated before a clean Args block. No extraneous content, though the arg descriptions are so thin that brevity comes at the cost of useful semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 3-parameter operation with no annotations and no output schema, the description is too thin. It does not explain prerequisites (e.g., existing keyframe), side effects, or success/failure signals, and it offers no guidance relative to sibling keyframe 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 Args section provides one-line glosses ('Node path.', 'Parameter name.', 'Frame number to delete.') that essentially restate parameter names and add little beyond the input schema's types and titles. Since schema description coverage is 0%, the description should compensate with format or value-range details 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?
The description opens with a specific verb and object: 'Delete a keyframe at a specific frame.' This clearly distinguishes it from the sibling get_keyframes and set_keyframe/set_keyframes tools by naming the delete action and the frame-targeted scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose this tool over siblings. It does not mention that it is for removing an existing keyframe, nor contrast it with set_keyframe or set_keyframes, so the agent is left to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nodeC
Delete a node.
Args: ctx: MCP context. node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Delete a node' and does not disclose side effects such as irreversibility, cascading deletion of children, connection impacts, or error behavior on invalid paths. This is a significant gap for a mutation/destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded, with no filler, but it also includes an 'ctx: MCP context' argument that does not appear in the input schema. This is slightly confusing and reduces the efficiency of the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive single-parameter operation with no annotations and no output schema, the description is too sparse. An agent is not told what happens after deletion, whether the action is undoable, how to reference nodes reliably, or what errors might arise. More context is needed for safe and 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 merely restates 'node_path: Node path,' which repeats the schema property name/title without adding format guidance, examples, or path syntax. With no schema descriptions, 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?
The description states a specific verb and resource: 'Delete a node.' This clearly distinguishes it from sibling node helpers like create_node, rename_node, copy_node, and move_node. Even without an explicit target context, node deletion is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, or about preconditions/cautions. Given it is a destructive operation, the description should at least warn about irreversibility or mention that it is intended for removing existing nodes from the network, rather than other node operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dirty_work_itemsA
Dirty work items on a TOP node so they can be regenerated.
Args: ctx: MCP context. node_path: TOP node path. remove_outputs: Also remove output files from disk.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| remove_outputs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses that remove_outputs will delete files from disk and that the goal is regeneration, but it does not explain side effects such as whether dirtying alone triggers a cook, or what happens to existing cached outputs. The destructive potential of remove_outputs is mentioned but not emphasized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loads the core purpose in a single sentence, followed by a compact parameter list. The ctx line is boilerplate and not exposed as a tool parameter, making it slightly nonessential, but overall the text is efficient with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool without an output schema, the description covers the main action and the optional destructive flag. However, it leaves unclear when regeneration happens, what the tool returns, and whether a subsequent cook step is required, which an agent might need to know for a TOP workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source of parameter meaning. It explains node_path as a TOP node path and remove_outputs as 'Also remove output files from disk', which adds real behavioral intent. The line about ctx is irrelevant to the exposed tool schema but does not harm the two actual 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 ('Dirty work items') and resource ('on a TOP node'), and clarifies the purpose ('so they can be regenerated'). It is unambiguous among siblings because no other tool performs 'dirtying', though it does not explicitly name alternative 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 purpose implies usage: use this tool when you want to mark TOP work items for regeneration. However, it does not explicitly describe when to choose this over related tools like cook_top_node or generate_static_items, nor does it state any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_nodeC
Disconnect one or all inputs of a node.
Args: ctx: MCP context. node_path: Node path. input_index: Input index to disconnect. disconnect_all: Disconnect all inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| input_index | No | ||
| disconnect_all | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for disclosing behavior. It only states the action without mentioning whether disconnecting is destructive, reversible, requires node prerequisites, or has side effects on dependent nodes. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core action, but the 'Args' block mostly duplicates schema property names and includes an extraneous ctx parameter. It is not overly verbose, but has some filler that could be removed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 three parameters, no annotations, and no output schema, the description is under-specified. It does not explain the graph-level effect of disconnecting inputs, prerequisites, default handling when both input_index and disconnect_all are provided, or what a successful call 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?
Schema coverage is 0%, so the description must compensate. It lists node_path, input_index, and disconnect_all with terse labels, but does not clarify the relationship between input_index and disconnect_all (e.g., mutual exclusivity, behavior when both are set, meaning of null input_index). It also mentions 'ctx', which is not present in the input schema, adding confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Disconnect' and clearly identifies the resource as 'one or all inputs of a node', which distinguishes it from sibling tools like connect_nodes and reorder_inputs. The action is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives such as connect_nodes, reorder_inputs, or set_node_flags. An agent is left to infer the appropriate context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_hda_interfaceA
Edit an HDA's EXISTING Type Properties interface in one atomic call: insert at a position, remove, hide/show, replace, modify, move.
set_hda_interface only appends. Every op here works on the definition's parameter group; all ops are applied to a copy, the result is checked for component-name collisions, and it is written once โ a failing op changes nothing. Read the interface first with get_parm_template_tree.
Ops (dicts, applied in order): {"op": "insert", "spec": {...}, "after": name | "before": name | "in_folder": label or [labels]} โ omit the position to append. spec is a set_hda_interface spec, plus types button (with "callback", Python by default), separator, label, vector, color, file, oppath; and fields naming_scheme (base1|xyzw|rgba|minmax| startend|uvw), default_expression, hidden, join_with_next, callback, tags; folder_type "multiparm" for a multiparm block (children named "item#"). {"op": "remove", "name": name_or_folder_label} {"op": "hide" | "show", "name": ...} {"op": "replace", "name": ..., "spec": {...}} {"op": "modify", "name": ..., <label | help | default | default_expression | min | max | min_strict | max_strict | hide_when | disable_when ("" clears) | hidden | join_with_next | menu_items | callback | naming_scheme | new_name | tags>} ("rename", "set_conditional", "set_default" are aliases) {"op": "move", "name": ..., "after" | "before" | "in_folder": ...}
Names are template names (t, not tx; stud_count); folders are
addressed by label ("Controls"). Built-in parameters of the node type
(an Object's Transform) cannot be removed โ Houdini re-adds them at the
top level and the reply says so in reinstated_by_houdini; hide them.
Args: ctx: MCP context. node_path: An instance of the HDA whose definition is edited. ops: Operations, in order. dry_run: Validate and report the plan without writing.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | ||
| dry_run | No | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden, and it excels: it discloses the atomic write-once semantics, copy-and-collision-check, the reinstatement behavior for built-in parameters (including the `reinstated_by_houdini` reply), and the dry_run mode. This far exceeds what a typical descriptionsafe.
Agents need to know what a tool does to the 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 long, the description is structured with a clear positional summary, a list of ops, and an Args block. Every segment earns its place: the atomic behavior, the alternatives comparison, the op syntax, edge cases like built-in parameters. It is front-loaded with purpose and semantics, then dives into necessary 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?
There is no output schema, but the description explains the only output detail needed: the possibility of `reinstated_by_houdini` in the reply. It covers prerequisites, atomicity, naming conventions, folder addressing, and all known edge cases. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates completely. It explains node_path as 'an instance of the HDA whose definition is edited', ops as 'Operations, in order', and dry_run as 'Validate and report the plan without writing.' It then documents every operation structure in detail (insert, remove, hide/show, replace, modify, move) with nested fields and aliases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 clear verb-resource statement: 'Edit an HDA's EXISTING Type Properties interface' and enumerates the exact operations: insert, remove, hide/show, replace, modify, move. It explicitly contrasts itself with set_hda_interface ('only appends'), making sibling distinction immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives direct guidance: 'set_hda_interface only appends' implies this tool is for modifying existing interfaces. It also instructs the agent to 'Read the interface first with get_parm_template_tree', a concrete prerequisite. The description also clarifies atomic behavior, which directly informs when this is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_expressionB
Evaluate an expression in Houdini and return its result.
Args: expression: Expression string to evaluate. language: Expression language, "hscript" or "python".
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | hscript | |
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It only says 'evaluate an expression' and 'return its result,' but does not mention potential side effects, whether the expression can modify the scene, error handling, security implications, or the nature of the returned result. This is insufficient for a tool that likely executes arbitrary code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for the purpose and a short Args list. It is front-loaded with the core function and has no redundant information. 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?
The tool lacks an output schema, so the description must explain what the result looks like, but it only says 'return its result.' It also does not address safety, error conditions, or how it relates to sibling execution tools. For a potentially powerful operation, this 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 description adds meaning beyond the schema by specifying that 'language' accepts 'hscript' or 'python' (the schema only has a string type and default). It also clarifies that 'expression' is a string to evaluate. This is useful, though it does not provide examples or edge-case details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Evaluate an expression in Houdini and return its result.' It identifies the resource (expressions in Houdini) and the verb (evaluate). However, it does not differentiate from sibling tools like execute_python or execute_hscript, which also run code in Houdini, so it's clear but not fully distinguishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention the existence of execute_python, execute_hscript, or set_expression, nor does it explain how evaluation differs from execution or expression setting. An agent must infer the appropriate context without any explicit instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_hscriptC
Execute an HScript command in Houdini.
Args: command: HScript command string to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does not mention any side effects, such as whether the command can modify the scene, require authentication, or how errors are handled. The description only states that it executes a command, offering minimal insight into its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with only two short sentences. It is front-loaded with the core purpose and provides a parameter description. There is no fluff, but perhaps it is too brief to be helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool having only one parameter and no output schema, the description lacks essential context. There is no mention of use cases, potential risks, or examples, making it hard for an agent to know how to use it effectively, especially given the large number of sibling tools with overlapping capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only provides a one-line summary of the 'command' parameter ('HScript command string to execute.'). This duplicates the schema's property name and type, adding no extra meaning about expected format, syntax, or examples. The agent receives no guidance on how to construct a valid HScript command.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it executes an HScript command in Houdini, which is a clear verb-resource pair. However, it does not differentiate from sibling tools like execute_python or evaluate_expression, which may be used for similar scripting purposes. The purpose is clear but not distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool versus alternatives like execute_python or evaluate_expression. There is no mention of typical use cases or reasons to prefer HScript over other scripting options, leaving the agent to infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_pythonA
Execute arbitrary Python code inside Houdini. LAST RESORT only.
DO NOT use this to:
Create nodes or networks โ use build_network or create_node
Set parameters โ use set_parameter or set_parameters
Create wrangles or write Python SOPs โ use create_wrangle
Connect nodes โ use connect_nodes or connect_nodes_batch
Read geometry โ use get_geometry_info, get_points, sample_geometry
ONLY use this when no dedicated tool exists for the operation โ i.e. hou.* API calls or Python-level state that no other tool exposes. The justification parameter is mandatory: name the dedicated tools you considered and why none covers this operation.
Args: code: Python source code to execute. justification: Which dedicated tools you considered and why none covers this operation. return_expression: Python expression to evaluate after execution.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| justification | Yes | ||
| return_expression | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It clearly states that execution is arbitrary and implies full Houdini access, but it does not describe side effects, failure modes, or the scope of state changes (e.g., that it can permanently modify the scene). It sets expectations for when to use it but not what executing the code actually entails beyond 'execute arbitrary Python code.' A more explicit warning about potential destructive actions would raise this score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a bolded opening statement, bullet-point exclusions, and a clear 'Args' section. Every sentence adds value โ there is no filler. It front-loads the purpose and constraints, making it easy to scan. The length is justified by the complexity of the tool's usage rules.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, exclusions, and parameter semantics thoroughly. It could add more on error handling or the execution environment (e.g., 'runs in the current Houdini session'), but for a generic escape-hatch tool, it provides sufficient context for correct invocation. The mandatory justification parameter reinforces the complete usage model.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain all parameters. It does so comprehensively: 'code' is described as 'Python source code to execute,' 'justification' as 'Which dedicated tools you considered and why none covers this operation,' and 'return_expression' as 'Python expression to evaluate after execution.' Each parameter gets a clear, meaningful explanation beyond the schema's bare 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 opens with 'Execute arbitrary Python code inside Houdini' โ a specific verb, resource, and scope. It clearly distinguishes itself from the many sibling tools by explicitly stating it is a last resort and listing what it is NOT for (creating nodes, setting parameters, etc.), which makes its unique purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'DO NOT use this to' list names the exact dedicated alternatives for common operations, and the 'ONLY use this when' clause states the condition for legitimate use. It also requires a justification parameter that forces the agent to explicitly consider alternatives, which is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_nodeC
Explain a node in human-readable form.
Args: node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only mentions the action and the parameter, with no details about what 'explain' produces (e.g., a summary, a detailed report), whether it performs side effects, or performance implications. This is insufficient for a tool that likely executes complex logic.
Agents need to know what a tool does to the world before calling 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 to the point, with no filler. It front-loads the main action and then lists the parameter. However, it is somewhat under-specified for the complexity of the tool, but it earns a 4 for conciseness and clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no annotations, and no output schema, the description should provide more context about what the output looks like and any constraints. The current description is minimal, leaving the agent unsure about the return format and path requirements, making it incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the parameter is only a bare string. The description merely repeats 'node_path' without adding any meaning about the expected format, such as absolute vs. relative paths, or whether it refers to a Houdini path. This is a serious shortfall.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Explain a node in human-readable form') and names the resource (node). It is distinguishable from siblings like get_node_info and get_node_card, which presumably retrieve raw data, though it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios where a human-readable explanation is preferable to raw node info, nor does it reference other tools for comparison. This is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_chop_to_parmC
Export a CHOP channel to a parameter via a chop() expression.
Args: chop_path: CHOP node path. channel_name: Channel to export. target_node_path: Target node path. target_parm_name: Parameter to receive the export.
| Name | Required | Description | Default |
|---|---|---|---|
| chop_path | Yes | ||
| channel_name | Yes | ||
| target_node_path | Yes | ||
| target_parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It hints that the target parameter receives a chop() expression but doesn't disclose that existing values/expressions are overwritten, that the CHOP path/channel must exist, or that the parameter is mutated. Critically important behavior is left out.
Agents need to know what a tool does to the world before calling 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: one intro line followed by a structured argument list. No redundant filler. It earns its place but omits additional needed 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 mutation tool with four string parameters and no annotations, the description is too shallow. It doesn't cover prerequisites, side effects, or failure modes, and with no output schema, the agent has to guess the result shape and error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The argument list adds minimal meaning beyond the parameter names (e.g., 'channel_name: Channel to export' restates the name). Only 'target_parm_name' gets a slightly more informative note. This is not enough to truly explain inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the operation clearly: exports a CHOP channel to a parameter via a chop() expression. The verb, resource, and mechanism are specific enough to identify the tool, though it doesn't explicitly contrast it with 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?
No usage guidance is provided. The description doesn't say when to use this tool over alternatives like set_parameter, set_expression, or link_parameters, and it gives no conditions, exclusions, or prerequisite context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_fileA
Export a node's output to a file on disk, and report whether it landed.
SOPs are saved directly, LOPs export their USD stage, and a /out ROP is
pointed at file_path and executed (its own output path is restored
afterwards). Reports wrote_files, so success: True means a file appeared
or changed -- not merely that the call returned. A frame_range writes
name.0001.ext per frame and leaves the playbar where it was.
Args: node_path: Path to the node to export. file_path: Destination file path. For a ROP this overrides its output parameter for the duration of the export. frame_range: Frame range as [start, end] or [start, end, step].
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| node_path | Yes | ||
| frame_range | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It discloses side effects: writing files to disk, temporarily overriding a ROP output parameter and restoring it, writing per-frame files, leaving the playbar unchanged, and the meaning of success via 'wrote_files'. This is exemplary behavioral disclosure for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, then methodically covers node-type behavior, return semantics, frame behavior, and arguments. Every sentence contributes necessary information; nothing is redundant or filler. It is dense but 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 there is no output schema and no annotations, the description covers the critical operational details: what gets written, side effects, restoration behavior, per-frame output naming, and success semantics. An agent has everything needed to call the tool correctly and interpret its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. It explains node_path as the node to export, file_path as the destination and ROP override, and frame_range as [start, end] or [start, end, step]. This adds real meaning beyond the bare schema types and 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 opens with a specific verb and resource: 'Export a node's output to a file on disk.' It then clarifies the three node-type variants (SOP, LOP, ROP), which clearly distinguishes this from file-import, save-scene, and cache-writing siblings. An agent can grasp exactly what this tool does 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 clear situational context by explaining how behavior differs for SOPs, LOPs, and /out ROPs, and notes the effect of frame_range. It does not explicitly name alternative tools or state 'when not to use this,' but the contextual detail is strong enough to guide selection. A small deduction for not stating exclusions or calling out a sibling alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_error_nodesC
Find all nodes with errors or warnings in the scene.
Args: root_path: Root node path to search from.
| Name | Required | Description | Default |
|---|---|---|---|
| root_path | No | / |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the function and the root_path argument, but does not explain whether the search is recursive, whether the root itself is included, what the return format is (e.g., list of paths), or if there are side effects. This is minimal for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and directly front-loaded with the primary action. The Args section is clearly delineated and adds no fluff. Every sentence earns its place, though the brevity sacrifices useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter) and lack of output schema, the description is incomplete. It does not specify the return value structure (e.g., paths, names, error types), which is critical for an agent to use the result. It also omits whether the search is recursive or how warnings are differentiated from errors. More context is needed for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The 'Args' section provides a brief explanation: 'root_path: Root node path to search from.' This adds semantic meaning beyond the schema's type and default, clarifying what the parameter does. However, it is minimal and does not discuss optionality or expected format nuances.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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: 'Find all nodes with errors or warnings in the scene.' This gives a specific verb, resource, and scope. It does not explicitly distinguish from siblings like get_node_errors_detailed or find_nodes, but the intent is unambiguous enough for an agent to understand what it 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?
There is no guidance on when to use this tool versus alternatives such as get_node_errors_detailed or find_nodes. The description lacks any 'when to use' or 'when not to use' context, leaving the agent to infer appropriateness based solely on the tool's name and generic description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_expensive_nodesA
Profile cooking and rank the most expensive nodes โ how a senior artist finds the slow node instead of guessing.
Records a performance-monitor profile while force-cooking the display outputs under root_path. cook_ms is cumulative (parents include their children), so compare siblings to locate the hotspot.
Args: root_path: Network to profile (a geo container, or "/" broadly). frame: Optionally jump to this frame before cooking. limit: Max nodes to return.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| limit | No | ||
| root_path | No | / |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose important behavior: it 'Records a performance-monitor profile while force-cooking the display outputs' and clarifies that cook_ms includes parent+child times. This is valuable contextual information beyond the parameter schema, though it omits details like exact response shape or side effects on the scene.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by behavioral detail and an Args list. Each sentence contributes useful information, though the analogy 'how a senior artist finds the slow node instead of guessing' is a slight flourish rather than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description explains the tool's behavior, parameter meanings, and the key 'cook_ms is cumulative' interpretation rule. It is largely complete for an AI to call and use this tool, though it could provide a little more detail about the exact return structure beyond ranking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates fully by explaining every parameter in the Args section: root_path, frame, and limit. It adds practical semantics such as 'a geo container, or "/" broadly' and 'Optionally jump to this frame before cooking,' which goes well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Profile cooking and rank the most expensive nodes' with a concrete resource ('display outputs under root_path'). It is distinct from siblings like find_error_nodes and get_cook_chain because it focuses on cost profiling, though it never explicitly names or contrasts with 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?
It communicates when to use the tool: when a senior artist needs to find the slow node instead of guessing, and it explains how to interpret results by comparing siblings because cook_ms is cumulative. However, it does not explicitly mention alternatives 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.
find_nearest_pointC
Find the nearest point(s) to a given position.
Args: node_path: Node path. position: Query position as [x, y, z]. max_results: Max nearest points to return.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | ||
| node_path | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It mentions the max_results parameter but does not explain behavior such as how points are ordered (by distance ascending?), whether ties are broken, or what happens if no points are found. It also does not state whether this is a read-only operation, which is critical given the tool's name suggests a query. There is no indication of computational cost or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the core purpose. It uses a clear sentence followed by a parameter list in a structured format, which is easy to parse. There is no filler or redundant information, and it stays focused on the essential parameters. However, it could be slightly more informative within the same length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has 3 parameters, 2 required, and no output schema, the description is insufficient for an agent to correctly interpret the return value. The description does not specify whether the return is a list of point positions, indices, or distances. It also does not clarify whether the position parameter is in world space or local space, which is a common source of errors. The tool is relatively simple, but for a query that returns spatial data, the return type and units are essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, meaning the schema itself provides no additional documentation beyond types and default values. The description repeats the parameter names and types, but it adds minimal semantic meaning: 'position' is clarified as [x, y, z], and 'max_results' is described as max nearest points. However, it fails to explain the exact format of the output, such as whether it returns points or indices, which is crucial for an agent to use the result correctly. Since the schema is minimal, the description should compensate more, but it does not go beyond restating the obvious.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: finding nearest points to a given position. It uses a specific verb ('find') and a clear resource ('point(s)'), and the title matches the function. Although there are many sibling tools with similar spatial querying functions (e.g., sample_geometry, get_points), this description distinguishes it enough, as it focuses on 'nearest' rather than general geometry access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 sample_geometry or get_points. The description does not mention any context, such as 'Use when you need to find points within a distance threshold' or 'alternative tools for other spatial queries.' This lack of comparative guidance leaves the agent to infer usage 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.
find_nodesA
Search for nodes by name pattern, type, or context.
Narrow the search: use inside to limit to a specific sub-network and
supply at least one of pattern, node_type, or context. Searching
from inside="/" with no filters scans the entire scene and can return
hundreds of nodes.
Args: ctx: MCP context. pattern: Glob pattern for node names (e.g. 'box*'). node_type: Node type filter (e.g. 'box', 'null'). context: Category filter (e.g. 'Sop', 'Object'). inside: Root path to search within (default '/').
| Name | Required | Description | Default |
|---|---|---|---|
| inside | No | / | |
| context | No | ||
| pattern | No | ||
| node_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior on its own. It explicitly warns about the performance/result-size consequences of unfiltered searches, which is the main behavioral risk. It also implicitly suggests this is a read-only search operation. A more detailed mention of output format would raise this further, but the key behavioral trap is 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 efficiently structured: a one-sentence summary, a usage guideline with a warning, and a clear args list. The critical narrowing advice is front-loaded before parameter details alerting the agent to the main pitfall. No redundant or filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four optional parameters and no output schema, the description covers all invocation requirements: filter semantics, scoping, and a warning about broad searches. It does not specify the return structure, but as a search tool that is presumed a list of nodes; this minor omission prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. It explains each parameter in plain terms: pattern as a glob (with example 'box*'), node_type as a type filter (e.g., 'box', 'null'), context as a category filter (e.g., 'Sop'), and inside as the root path for scoping. This is far richer than the bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Search' with a clear resource ('nodes') and explicit filter dimensions (name pattern, type, context). It clearly distinguishes itself from sibling search tools like find_error_nodes, find_expensive_nodes, and find_usd_prims by focusing on generic node discovery via structural filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete guidance: use 'inside' to scope searches, and supply at least one of three filters. It warns against unfiltered searches from '/' citing the risk of hundreds of results, giving the agent an implicit rule for safe invocation. It doesn't explicitly mention when to prefer alternative search tools, but the criteria are clear enough for correct use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_usd_primsB
Search USD prims by path pattern.
Args: node_path: LOP node path. pattern: Glob pattern (supports *, **) or substring.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only states 'Search USD prims by path pattern' without disclosing return values, search scope, case sensitivity, handling of no matches, or whether results are prim paths or prim data. The read-only nature is implied but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is minimal and well-structured: a one-sentence summary followed by a concise Args list. Every sentence adds value, and the essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two required parameters, and the description covers both parameters adequately. However, without an output schema or annotations, the missing return behavior (list of paths vs prims, empty result behavior) leaves a notable gap for an agent 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 coverage is 0%, but the description's Args section adds meaningful semantics: 'node_path' is clarified as 'LOP node path' and 'pattern' is expanded with 'Glob pattern (supports *, **) or substring'. This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches USD prims by path pattern, with a specific verb ('Search'), resource ('USD prims'), and mechanism ('path pattern'). It distinguishes itself from siblings like list_usd_prims through the pattern-based scope, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus siblings such as get_usd_prim or list_usd_prims. The usage context is only implied by the name and the short description; there are no when-not-to-use instructions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
frame_allC
Frame all geometry in the viewport.
Args: pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose side effects itself, but it says nothing about whether the viewport camera is modified, whether the scene is changed, or what the operation's consequences are. It merely restates the action without behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is very short and front-loaded, with no filler words; the Args section is a conventional, structured addition. Its brevity is appropriate for the simple operation, though it leaves other dimensions 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?
For a 1-parameter tool with no annotations and no output schema, the description gives only the action and a minimal parameter hint. It omits practical details such as what happens when pane_name is omitted, which pane is affected, and whether any return value is produced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description's 'Args: pane_name: Pane tab name.' is the only explanation of the parameter. It adds a label but does not clarify valid values, formatting, or what null/default means.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Frame') and resource ('all geometry in the viewport'), which clearly distinguishes it from the sibling tool frame_selection. It does not explicitly name an alternative, but the scope ('all geometry') makes the contrast evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like frame_selection or set_viewport_camera. The only additional line documents the pane_name argument, with no context on selection criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
frame_selectionB
Frame the current selection in the viewport.
Args: pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without clarifying side effects, prerequisites (e.g., whether a selection must exist), or what happens in the viewport. The description does not contradict annotations (none exist), but it is too terse to be transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence followed by a minimal argument spec. It is front-loaded and contains no fluff, earning high marks for conciseness and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple viewport action, the description is incomplete. It does not explain what 'frame' does, whether it changes the camera, whether a selection is required, or the effect of omitting pane_name. The lack of output schema and annotations means the description alone must cover these details, and it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides a basic label for pane_name ('Pane tab name') but does not explain its role, valid values, or default behavior when omitted. This adds minimal meaning beyond the schema's type definition, falling short of full compensation 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 states a specific verb (frame), resource (current selection), and location (viewport). It clearly distinguishes from frame_all by specifying it operates on the current selection, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like frame_all or other viewport controls. The description does not mention exclusions or conditions under which this should be preferred, 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.
generate_static_itemsB
Generate static work items on a TOP node without cooking.
Args: ctx: MCP context. node_path: TOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it generates static work items without cooking, but does not mention side effects, whether existing items are replaced, what happens to the node state, return values, or error conditions. This is minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with the main action front-loaded. The args section is redundant with the schema and includes 'ctx' which is not in the input schema, potentially confusing agents, but overall it is efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and no annotations, the description is insufficient. It omits return value, side effects, prerequisites (e.g., node must exist and be a TOP node), and any error handling. For a mutation-like tool, this is a significant gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only one parameter and schema coverage at 0%, the description adds a small amount of specificity by stating 'TOP node path,' which is slightly more informative than the schema's generic 'Node Path' title. However, it does not add meaningful depth beyond the schema and leaves the parameter semantics mostly 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 (generate static work items) and the resource (TOP node), and explicitly notes 'without cooking,' which differentiates it from cooking-related siblings like cook_top_node. It is not a tautology and provides a specific verb-resource pair.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 'without cooking' implies a use case (pre-generating items without triggering a cook), but it does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. The guidance is only implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attrib_statsA
Aggregate statistics for numeric attributes: min, max, mean, sum.
Use this to prove something is happening, rather than reading values. get_geometry_info names the attributes; get_attrib_values returns every value, which on a 60k-point cache tells you nothing you can read. Vector attributes also report per-component ranges, so a velocity field's per-axis extremes come back in the same call.
Args: node_path: SOP node path. attribs: Attribute names. Omit for every attribute of the class. attrib_class: "point", "prim" or "detail".
| Name | Required | Description | Default |
|---|---|---|---|
| attribs | No | ||
| node_path | Yes | ||
| attrib_class | No | point |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It clearly discloses that the tool aggregates numeric statistics, and it adds a non-obvious behavioral nuance: vector attributes report per-component ranges. It could also mention handling of non-numeric attributes or failure cases, but the provided behavioral context is strong.
Agents need to know what a tool does to the world before calling 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, well-structured, and every sentence adds value: the operation, the usage rationale, sibling differentiation, vector behavior, and parameter documentation. The 60k-cache example is vivid but earns its place by illustrating 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?
Given the simple parameter set and no output schema, the description covers the core outcomeโstatistics values and vector per-component behaviorโas well as the full parameter semantics and usage context. It does not specify the exact return format, but for a stats tool this is a minor gap, not a completeness failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by documenting all three parameters: node_path, attribs, and attrib_class. It clarifies that attribs can be omitted to select every attribute of the class and enumerates valid attrib_class values. This is complete parameter-level guidance beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Aggregate statistics for numeric attributes: min, max, mean, sum.' It explicitly distinguishes itself from siblings like get_geometry_info and get_attrib_values, so an agent knows exactly what this tool does and how it differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use this tool ('Use this to prove something is happening') and contrasts it with alternatives, explaining why get_geometry_info and get_attrib_values are less appropriate, including a concrete cache-size example. This is explicit routing guidance rather than leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attribute_infoC
Get metadata for a geometry attribute.
Args: node_path: Node path. attrib_name: Attribute name. attrib_class: "point", "prim", "vertex", or "detail".
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| attrib_name | Yes | ||
| attrib_class | No | point |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states 'Get metadata' without describing what metadata is returned, whether the operation is read-only, what happens if the attribute does not exist, or what the response structure looks like. This is a minimal description with significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. The Args block is a clean, minimal list with no redundant prose. Every line is necessary, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, an agent needs more context to invoke this correctly: what 'metadata' includes, the expected return shape, and whether the node path refers to a SOP node, OBJ node, or something else. The description provides only parameter labels and default class options, leaving key operational details undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists all three parameters and adds the allowed values for attrib_class ('point', 'prim', 'vertex', or 'detail'), which the schema does not provide as an enum. However, node_path and attrib_name explanations merely repeat the schema titles and provide no additional semantics such as path format or naming rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Get metadata for a geometry attribute.' This clearly states the tool's function and differentiates it from tools that retrieve geometry itself (get_points, get_prims, get_geometry_info). However, 'metadata' is somewhat vague and no distinction is made from get_attrib_stats or get_attrib_values, so it does not fully stand apart from all 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 when-to-use or when-not-to-use guidance is given. There are no explicit alternatives or conditions for choosing this tool over get_attrib_stats, get_attrib_values, or get_prim_intrinsics. The usage context is only implied by the tool's name and one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attrib_valuesA
Read attribute values as a flat array with pagination.
For spot-checking a few values prefer sample_geometry โ it returns a representative spread of points with all their attributes in one call. Use get_attrib_values when you need a specific slice of one attribute.
Values are element-major: for a float3 attribute every 3 consecutive values belong to one element. Check has_more and increment start to read subsequent pages.
Args: node_path: Node path. attrib_name: Attribute name. attrib_class: "point", "prim", "vertex", or "detail". start: First element index to return. count: Max elements per page (default 200).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| start | No | ||
| node_path | Yes | ||
| attrib_name | Yes | ||
| attrib_class | No | point |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses pagination behavior (check has_more, increment start), element-major ordering for float3 attributes, and the default page size. This goes beyond a simple 'read' statement and gives the agent actionable behavioral context. It doesn't mention error cases or performance characteristics, but the disclosed behaviors are substantial.
Agents need to know what a tool does to the world before calling 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 behavior is stated in the first sentence, the alternative is named immediately, and the pagination detail is explained before the Args block. Every sentence earns its place, and the Args list is cleanly formatted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with 5 parameters and no output schema, the description covers the key operational details: pagination, element-major ordering, and the default count. It doesn't describe the exact return shape (e.g., JSON structure of has_more), but the description explicitly references has_more and start, which is enough for an agent to page through results. The main gap is not describing what the response object looks like, but the description's explicit mention of has_more and start mitigates that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: it explains start as 'First element index to return', count as 'Max elements per page (default 200)', and attrib_class with the valid values 'point', 'prim', 'vertex', or 'detail'. This adds meaning beyond the bare schema, though it doesn't elaborate on node_path or attrib_name beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads attribute values as a flat array with pagination, and explicitly contrasts it with sample_geometry for spot-checking. It names the specific resource (attribute values) and the operation (read), making it distinguishable from siblings like get_attrib_stats or sample_geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: prefer sample_geometry for spot-checking a few values, and use get_attrib_values when you need a specific slice of one attribute. This directly tells an agent when to use this tool versus an alternative, which is exactly what usage guidelines should do.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bounding_boxC
Get the bounding box of a SOP node's geometry.
Args: node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of disclosing behavior. It implies a read-only operation via 'Get' and clarifies the data source, but it does not disclose coordinate space, units, whether cooking occurs, failure behavior for invalid paths, or whether the node must be cooked beforehand.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and concise, but the Args section is redundant with the schema and adds no value. It is not bloated, yet the redundancy prevents a higher score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is too thin. It does not specify what the returned bounding box looks like (min/max, center/size), what units or space it uses, or how errors like missing geometry are handled, so an agent cannot fully predict the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but the 'Args: node_path: Node path.' line merely restates the schema property title. It adds no detail about path syntax, absolute vs relative paths, wildcards, or expected formatting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific operation ('Get the bounding box') and a resource ('SOP node's geometry'), so an agent can infer what the tool returns. It is distinguishable from broad geometry tools like get_geometry_info or get_scene_info, though it does not explicitly call out any sibling overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 geometry tools such as get_geometry_info or sample_geometry. The description simply states what it does, leaving the agent to infer the appropriate scenario without any confirmation or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cache_statusA
Frames on disk for a cache node, against the range it is set to write.
This is what to poll after a background write_cache: complete is true
when every frame of expected_range is on disk, missing_frames lists
the rest, writing is true while files are still arriving, and hint
tells you when the finished cache is not yet loaded from disk. Never
wait for a cache with a shell loop; call this between other work.
Args: ctx: MCP context. node_path: Path to the cache node.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the meaning of each returned state (`complete`, `missing_frames`, `writing`, `hint`) and warns against shell-loop polling. It does not explicitly state read-only/no side effects, but the status semantics and context make the behavior 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?
The description is compact and front-loaded: the first sentence states the operation, and the following sentences explain the polling contract and return states. Every sentence contributes either field semantics or usage guidance with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter status tool with no output schema, the description covers the essential context: when to poll, what each returned field means, and how to integrate polling without blocking. It lacks explicit error behavior or path-format examples, but that is a minor gap for this simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats `node_path: Path to the cache node`, which adds only the 'cache' qualifier over the schema's 'Node Path' title. It includes `ctx` as an MCP context argument but gives no path format or examples, so it only minimally compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description directly states the tool reports 'frames on disk for a cache node' against the range it is set to write, which is a specific resource and metric. It also identifies itself as the polling counterpart to write_cache, distinguishing it from sibling cache and cook-status tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly opens with 'This is what to poll after a background write_cache,' giving a concrete trigger condition. It also provides a clear when-not: 'Never wait for a cache with a shell loop; call this between other work.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chop_dataC
Get CHOP node track data.
Args: node_path: CHOP node path. channel_name: Specific channel to retrieve. start: Start sample index. end: End sample index.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| node_path | Yes | ||
| channel_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must fully disclose behavioral context. It does not mention return format, behavior when optional parameters like channel_name or start/end are null, whether it returns all channels by default, or any error conditions. This is a minimal description that adds little beyond the tool's name and parameter list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately short and front-loaded with the primary purpose, followed by a clean parameter list. There is no redundant prose, and it earns its length for a simple read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a 0% schema description coverage, the description is not complete enough. It lacks return-value details, default behavior for optional parameters, and any guidance on valid CHOP node paths or sample-index constraints, leaving meaningful gaps for an agent deciding whether 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?
Schema description coverage is 0%, so the description is responsible for explaining parameters. It does add brief semantics for all four parameters ('CHOP node path', 'Specific channel to retrieve', 'Start sample index', 'End sample index'), but it omits defaults, inclusivity, and how null values behave. This is adequate but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 CHOP node track data.' This makes the tool's core function clear and distinguishes it from CHOP-related siblings like create_chop_node or list_chop_channels, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as list_chop_channels, get_keyframes, or export_chop_to_parm. The description only states what the tool does and lists parameters, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_context_infoC
Get information about a Houdini network context.
Args: context: Context path, e.g. "/obj", "/stage", "/out".
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It fails to disclose important behavioral aspects such as whether the tool returns full node listings, whether it can fail on invalid contexts, or performance characteristics. The description is minimal and does not enrich the agent's understanding beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very brief, which is appropriate for the simplicity of the tool, but it is not front-loaded with the most important info. The purpose is clear in the first sentence, but essential details (what information is returned) are absent. It is not overly long, but it could be more effective with a clearer statement of the tool's focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param) and the lack of annotations and output schema, the description is far from complete. It does not explain what kind of information is returned per context, which is critical for the agent to know before invoking. The tool could benefit from a brief explanation of typical use cases (e.g., understanding node hierarchy) and content of the returned 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%, so the description must explain the context parameter. It gives an example of valid values ('/obj', '/stage', '/out'), which is helpful, but it does not explain the expected format (leading slash required) or what kinds of contexts are valid beyond examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Get information' and the resource 'Houdini network context', but it is vague about what information is actually returned (nodes, parameters, flags, etc.). It does not distinguish from sibling tools like get_network_overview or get_node_info, making it unclear how this differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_network_overview, get_stage_info, or get_node_info. The description only mentions the context path parameter but gives no context for the difference between network contexts like '/obj' vs '/stage'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cook_chainC
Trace the cook dependency chain for a node.
Args: node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It states the tool traces a dependency chain, implying a read-only operation (no mutation), but does not specify whether it triggers a cook, what the output format is, or whether there are side effects like ensuring the node is cooked. It gives some clarity but leaves significant behavioral details 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 extremely concise, consisting of a single sentence plus an args list. Every word is purposeful and there is no unnecessary fluff. The structure is straightforward, but the brevity leads to lack of detail in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a chain traversal), the description is incomplete. It lacks information on the return value format, whether it returns the full chain as a list of nodes, the order of the chain, or any error handling. Without an output schema and with no annotations, the description should provide more context for an agent to correctly interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, meaning the parameter 'node_path' lacks any schema-level description. The description only mentions 'node_path' as a required arg but does not explain its format (e.g., absolute vs. relative path), allowed patterns, or how it should be specified. With low coverage, the description fails to compensate for the missing 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 'Trace the cook dependency chain for a node', which identifies the resource (a node's cook dependency chain) and the action (trace). It is somewhat specific but does not clearly distinguish from sibling tools like 'build_sop_chain' or 'get_cook_status', which might also relate to dependency or cooking. The description is brief and lacks clarity on what 'cook chain' means exactly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any context such as when a cook chain is needed, nor does it contrast with related tools like 'build_sop_chain' or 'get_cook_status'. The usage is only implied by the action word 'trace', but no explicit direction is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cook_statusA
Whether a node has cooked, how often, and whether it is time dependent.
Note the shape of the limitation: every command runs on Houdini's main thread, so a long cook blocks the bridge and cannot be polled while it runs. This answers the after-the-fact question instead -- did it really recook, is it time dependent, did it end in error -- plus whether the hip has unsaved changes. For asynchronous work use a ROP's background execution and get_render_progress.
Args: node_path: Node to report on.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | No | /obj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses main-thread blocking, the inability to see intermediate progress, and the post-cook nature of the status, plus extra checks like unsaved changes. This is genuinely useful beyond what annotations would typically 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?
Every sentence earns its place. The summary is front-loaded, the limitation warning prevents misuse, and the alternative is named directly. Length is justified by the safety-critical threading 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?
For a one-parameter read-only tool with no output schema, the description explains the main dimensions of the result: recook, time dependence, error outcome, and unsaved changes. It leaves the exact return shape undocumented, which is a minor but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no per-property description and 0% coverage, so the description is the only source of parameter meaning. It says 'Node to report on', which is useful but minimal; it does not mention the default path, path format, or how changing node_path affects output.
Input schemas describe structure but not intent. Descriptions should explain non-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 names what the tool reports: whether a node has cooked, how often, and whether it is time dependent. It also distinguishes this from asynchronous polling tools by framing it as an after-the-fact status check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 warns that long cooks block the bridge and cannot be polled, then points to the right alternative: ROP background execution and get_render_progress. This is a clear when-to-use / when-not-to-use pairing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cop_geometryC
Get geometry representation from a COP node.
Args: node_path: Path to the COP node. output_index: Output connector index.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| output_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't state whether this is a read-only operation, what the geometry representation looks like, whether it triggers a cook, or what happens if the node path is invalid. The description is too terse to disclose meaningful behavior 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 very short and front-loaded with the main action. The parameter documentation is compact and readable. However, the 'Args:' section is arguably redundant with the schema, and the description could have used that space for more valuable behavioral 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 no annotations, no output schema, and 0% schema description coverage, this description is incomplete. An agent would not know what the return value looks like, whether the operation is safe/read-only, or how to handle edge cases. The sibling tools (get_cop_info, get_cop_layer, get_cop_vdb) suggest a family of COP-related getters, but this description doesn't clarify how this one fits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists the two parameters with one-line definitions ('Path to the COP node', 'Output connector index'), which adds minimal meaning beyond the schema's type/title. It doesn't explain what an 'output connector index' is, how to determine valid indices, or what format the node_path should take.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('geometry representation from a COP node'), which clearly identifies the tool's function. It doesn't explicitly distinguish it from sibling tools like get_cop_info or get_cop_layer, but the resource and action are specific enough to be understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 get_cop_info, get_cop_layer, or get_cop_vdb. It doesn't mention prerequisites, context, or exclusions. The only usage hint is the parameter list, which is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cop_infoC
Get information about a COP node.
Args: node_path: Path to the COP node.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description bears full responsibility for disclosing side effects and return behavior. It only says 'Get information,' implying a read operation, but doesn't specify what information is returned, whether a missing node raises an error, or any other behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loads the purpose, and includes a labeled Args section. No filler or redundant explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 getter with no annotations or output schema, the description barely covers the tool's behavior. It doesn't enumerate what 'information' is returned, so an agent cannot judge if this tool answers a specific query about a COP node.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only restates 'Path to the COP node,' adding a bit of context over the schema's generic 'Node Path' title, but provides no format, examples, or details about the expected path.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Get') and resource ('COP node'), so the core action is clear. However, it does not distinguish itself from sibling COP inspection tools such as get_cop_geometry or get_cop_layer, which also operate on COP nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers no guidance on when to prefer this tool over other COP inspection tools or what to do if the node doesn't exist. There is no mention of alternatives, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cop_layerC
Get image layer data from a COP node.
Args: node_path: Path to the COP node. output_index: Output connector index.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| output_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'get' and lists parameters; it does not state whether this is read-only, what the return value looks like, whether it can fail, or how output_index affects behavior. The read intent is implicit but not sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with no filler. The Args block is easy to scan. It is slightly under-specified, but it is not verbose or redundant, so conciseness itself is handled well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter getter this is minimally callable, but the description lacks return behavior, output semantics, and any guidance on how 'image layer data' differs from COP info, geometry, or VDB data. With no annotations and no output schema, this is not enough context for an agent to confidently select 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?
Schema description coverage is 0%, so the description must compensate, but it mostly restates the schema: 'Path to the COP node' and 'Output connector index' add only marginal meaning over the titles. There is no detail about valid node path formats, accepted output index ranges, or what each output index corresponds 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 uses a specific verb+resource: 'Get image layer data from a COP node.' This identifies both the operation and the target, and 'image layer data' helps differentiate it from COP siblings like get_cop_info, get_cop_geometry, or get_cop_vdb. It stops short of 5 because it does not explicitly disambiguate itself from those related tools or define what 'layer data' includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many COP-related siblings such as get_cop_info or get_cop_vdb. The description implies a read operation but gives no exclusions, prerequisites, or alternative routing. An agent must guess 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.
get_cop_vdbB
Get VDB volumetric data from a COP node.
Args: node_path: Path to the COP node. output_index: Output connector index.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| output_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description itself must disclose behavior. It only states that data is retrieved and documents the arguments; it does not mention whether reading the VDB triggers a cook, how it behaves for invalid node paths, or what exact data is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the purpose, and contains no filler. The Args list is a reasonable structured reference for the two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter getter, the description is minimally viable: it identifies the target, the resource type, and both arguments, and the schema handles the default for output_index. However, the lack of return-format information, behavior notes, or alternative-tool guidance leaves clear gaps, especially with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args block must compensate. It does document both parametersโnode_path as the COP node path and output_index as the output connector indexโbut the descriptions are terse and add only modest meaning beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it gets VDB volumetric data from a COP node. The mention of 'VDB volumetric data distinguishes it from COP sibling tools like get_cop_geometry, get_cop_info, and get_cop_layer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no guidance on when to use this tool versus the closely related COP getters, and no exclusions or alternative conditions are mentioned. An agent is left to infer the intended use solely from the tool name and the first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_takeB
Get the current take and its overridden parameters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The word 'Get' implies a read-only operation, and the phrase 'overridden parameters' hints at the return content, but the description does not disclose edge-case behavior (e.g., what happens when no take exists) or the exact structure of the returned data. With no annotations to fill the gap, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero wasted words. Every element โ the action, the resource, and the return scope โ earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter with no output schema, the description names the return content ('current take and its overridden parameters') but does not clarify behavior when no take is active, the format of the overridden parameters, or the relationship to sibling take tools. It is minimally adequate but leaves meaningful gaps for a tool whose annotations carry none of this 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 tool has zero parameters and no schema descriptions needed, and the baseline for a 0-parameter tool is 4. There is nothing for the description to add about parameter semantics since the input schema is an empty object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('current take'), and adds meaning beyond the name by mentioning 'overridden parameters' โ a detail not obvious from the tool name. It is clear enough to distinguish from siblings like list_takes, set_current_take, and create_take, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_takes, set_current_take, or create_take. It simply states what the tool does without any context for selection, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dop_fieldC
Read a specific field value from a DOP record.
Args: node_path: DOP network node path. object_name: DOP object name. data_path: Dot-separated subdata path (e.g. "Geometry", "Forces/Gravity"). field_name: Field name to read.
| Name | Required | Description | Default |
|---|---|---|---|
| data_path | Yes | ||
| node_path | Yes | ||
| field_name | Yes | ||
| object_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'Reads' a field, implying a non-destructive operation, but it does not disclose what happens if the field does not exist, whether the DOP network needs to be cooked, whether it returns a value or an error, or any side effects. For a read tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose in the first sentence. The parameter list is structured and readable. It earns its place without excessive verbosity, though the parameter explanations could be slightly richer without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 required parameters, no output schema, and no annotations, the description is not complete enough. It does not explain what a DOP record is, how to construct node_path or object_name, what the return value looks like, or error behavior. An agent with no prior DOP knowledge would struggle to invoke this correctly. The sibling list shows many DOP-related tools, but the description does not position this one within that 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?
Schema description coverage is 0%, so the description must compensate. It lists the four parameters with brief explanations (e.g., 'Dot-separated subdata path'), which adds some meaning beyond the bare schema. However, the explanations are terse and do not clarify the format of node_path or object_name, nor how they relate to DOP network hierarchy. The example for data_path is helpful but incomplete for an agent unfamiliar with DOP terminology.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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') and resource ('a specific field value from a DOP record'), which clearly distinguishes it from sibling tools like get_dop_object or get_dop_relationships. It could be slightly more explicit about what a DOP record is, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing the required arguments, but it does not explicitly state when to use this tool versus alternatives like get_dop_object or get_simulation_info. There is no mention of prerequisites (e.g., the DOP network must exist, the object must be cooked) or exclusions. The context is clear enough for an agent to infer it is for reading a single field, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dop_objectC
Get detailed data for a specific DOP object.
Args: node_path: DOP network node path. object_name: DOP object name.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| object_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It states "Get detailed data," which implies a read-only action, but it does not disclose whether the network needs to be cooked, what "detailed data" contains, potential performance costs, or behavior when the object is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with an efficient args list. Every line serves a purpose; there is no wasted text. It is appropriately sized for a two-parameter get 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?
With no output schema and no annotations, a simple two-parameter get tool needs more context: what fields the detailed data includes, how the node_path is formatted, and whether this overlaps with get_dop_field. The description leaves these gaps unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds minor clarity for node_path ("DOP network node path"), but object_name is just "DOP object name," essentially restating the title. No format examples or further disambiguation are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Get detailed data for a specific DOP object" clearly identifies the verb (Get), resource (detailed data), and scope (specific DOP object). It is distinguishable from siblings like list_dop_objects and get_dop_field by its focus on a single object, though it does not explicitly contrast itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 list_dop_objects or get_dop_field. The description implies a read operation for a specific object, but provides no prerequisites, exclusions, or decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dop_relationshipsC
List all relationships between DOP objects.
Args: node_path: DOP network node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't disclose whether this is a read-only operation, what the return format is, whether it requires a valid node_path, or any side effects. The description is minimal and doesn't add behavioral context 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 very short and front-loaded with the main action, but it's under-specified rather than efficiently concise. The Args section adds minimal value and could be expanded with useful 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 no annotations, no output schema, and a single parameter, the description is too thin. It doesn't explain what relationships are returned, how they are formatted, or how this tool fits with related DOP tools. An agent would need to guess at the return structure and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only restates the parameter name ('node_path: DOP network node path.') without adding format, examples, or semantics. The agent gets no additional meaning beyond the schema's type string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('List all relationships between DOP objects'), which distinguishes it from many siblings. However, it doesn't specify what a 'relationship' means in this context (e.g., constraints, connections, transforms), leaving some ambiguity about the exact output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_dop_object, get_dop_field, or list_dop_objects. The description only says 'List all relationships' without explaining the use case or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_env_variableB
Get a Houdini environment variable value.
Args: var_name: Name of the environment variable.
| Name | Required | Description | Default |
|---|---|---|---|
| var_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. 'Get a value' conveys a read-only operation, which is useful, but it does not disclose behavior when the variable is unset, whether it returns null/empty string, or any side effects. For a simple getter this is acceptable but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loads the purpose, and includes only a minimal Args section. Every word contributes meaning and there is no repetition 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 tool with one parameter and no output schema or annotations, the description is functionally usable but thin. It does not explain return formatting, error behavior, or where the environment variable is resolved, leaving minor gaps in contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds a short semantic definition: 'var_name: Name of the environment variable.' This clarifies the parameter's meaning beyond the bare schema title, though it lacks examples, allowed values, or format expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Get') and the resource ('Houdini environment variable value'), which directly conveys the tool's purpose. It is distinct from most sibling getters because it specifically targets environment variables, though it does not explicitly contrast itself with a 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 about when to use this tool versus alternatives such as get_parameter, execute_hscript, or get_context_info. The description only states what it does, leaving the agent to infer appropriate usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_expressionC
Get the expression on a parameter.
Args: node_path: Node path. parm_name: Parameter name.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get the expression' without explaining return format, behavior when a parameter has no expression, or whether the expression is returned as a raw string. This is a minimal read operation, but the description leaves important behavioral details 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?
The description is short and front-loaded with the action. It includes an Args section that directly maps to the two input parameters without any filler. It is appropriately concise, though the brevity comes at the cost of behavioral and usage 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?
With no annotations, no output schema, and minimal parameter descriptions, the tool is not fully specified. The agent knows the basic inputs and the action, but not the return value shape, edge cases, or how this tool relates to sibling tools like get_parameter or set_expression. A simple getter could get by with this, but it leaves gaps that matter for correct invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 missing parameter documentation. It provides 'node_path: Node path' and 'parm_name: Parameter name,' which are nearly identical to the schema titles and add no new meaning about path syntax, parameter name format, or examples. This does not adequately compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and object: 'Get the expression on a parameter.' This is not a tautology and clearly identifies the resource (parameter expression). However, it doesn't differentiate from sibling tools like get_parameter or evaluate_expression, which could be confused for similar retrieval 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?
There is no guidance on when to use this tool versus alternatives. The description does not mention that this tool retrieves the raw expression string rather than the evaluated value, nor does it point to get_parameter or evaluate_expression as alternatives for different use cases. The usage context is entirely left to the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failed_work_itemsB
List the work items that failed on a TOP node, with the tail of each log.
Args: ctx: MCP context. node_path: TOP node path. limit: Maximum items returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the tool returns the tail of each log, which is useful behavioral context beyond the schema. However, it does not mention whether this is a read-only operation, whether it triggers a cook, whether it only returns currently failed items or also historical failures, or what the response format looks like. The disclosed behavior is accurate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose in the first sentence. The Args section is minimal and structured. It earns its place without excessive verbosity. The only minor issue is that the Args section adds little value beyond the schema, but the overall structure is clean and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list-type tool with 2 parameters and no output schema, the description is moderately complete. It tells the agent what the tool does and what the main inputs are. However, it lacks information about the return structure (e.g., what fields are in each item, how logs are formatted), whether the list is sorted, and whether the tool has side effects like cooking. Given the absence of annotations and output schema, more context would be needed for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. The description mentions node_path and limit in the Args section, but only restates their names with minimal context: 'TOP node path' and 'Maximum items returned.' It does not explain what a TOP node path looks like, how limit interacts with pagination, or any constraints. This is a clear gap given the 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List the work items that failed on a TOP node, with the tail of each log.' This clearly identifies the tool's function and distinguishes it from related siblings like get_work_item_states or get_top_logs. It could be slightly stronger by explicitly naming a sibling alternative, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it is for inspecting failed work items on a TOP node, which is a debugging/error-investigation scenario. However, it does not explicitly state when to use this tool versus alternatives like get_work_item_states, get_work_item_info, or get_top_logs. The context is clear enough for an agent to infer the primary use case, but exclusions and alternatives are not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_referencesC
Every file path the scene references, with the parameter holding it and whether it exists.
Args: ctx: MCP context. include_missing_only: Only report paths that are missing on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| include_missing_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions output includes 'the parameter holding it and whether it exists', which is useful. However, it doesn't disclose whether the tool performs disk I/O beyond checking existence, performance implications for large scenes, or if it can be called without side effects. It does not contradict annotations (since none exist), but the behavioral 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 concise and front-loaded with the main purpose. The Args section is also brief. But it includes the formal 'Args:' block that repeats param info already in the schema, which is somewhat redundant. It's acceptable but not perfectly lean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single optional parameter and no output schema, the description could be more complete. It doesn't describe the response format (e.g., list of paths, grouped by parameter, missing vs existing). However, for a simple list tool, it covers the core purpose. With no annotations, more detail on behavior and output would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It does explain 'include_missing_only: Only report paths that are missing on disk', which adds meaning beyond property name. However, it doesn't clarify default behavior (false) or the semantics of the returned structure. The description adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists every file path the scene references, with the parameter holding it and whether it exists. This is a specific verb (get/list) and resource (file references), distinguishing it from generic list tools. However, it doesn't explicitly differentiate from siblings like get_geometry_info or get_attrib_values, though the resource is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use: when you need to know referenced file paths and their existence. But it doesn't state when not to use or alternatives, such as for checking cache paths or other reference types. There is no explicit guidance on selecting this over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_frameA
Get the current frame and FPS.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. 'Get' implies read-only behavior, but it does not mention side effects, scene requirements, or error cases. This is adequate for a simple getter but leaves details implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words and is front-loaded with the key action and target. 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 parameterless getter with no output schema, the description tells the agent exactly what to expect. Given the low complexity, nothing essential 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 tool has zero parameters and an empty schema, so no parameter documentation is needed. The description adds meaningful semantics by specifying exactly what is retrieved: the current frame and FPS.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Get') and the resource ('current frame and FPS'), making it immediately distinct from siblings like set_frame or get_keyframes. It is specific and unambiguous for a zero-parameter tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance or alternative routing, but the read verb 'Get' implies this is the query counterpart to set_frame. It is minimally sufficient but lacks any explicit context about when to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_geometry_infoC
Get geometry summary for a SOP node.
Args: node_path: Node path. output_index: Which output to read, for nodes with several (FLIP compress, Vellum solver, whitewater source): 0 is the first.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| output_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior, but it only mentions the output_index parameter's role for multi-output nodes. It does not state whether the tool triggers a cook, what side effects occur, or what the summary includes. The lack of any safety or read-only hints leaves the agent guessing.
Agents need to know what a tool does to the world before calling 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 structured with a clear title and an Args section. It front-loads the core purpose and adds parameter details without redundancy. 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 there is no output schema, the description should explain what the 'summary' includes, but it does not. It omits return value details, error conditions, and prerequisites. For a tool that presumably returns aggregate geometry information, the lack of specification is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It does explain output_index with examples of node types, adding value beyond the schema's default. However, node_path is merely described as 'Node path' with no format or example, leaving ambiguity. The description partially compensates but is not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a geometry summary for a SOP node, distinguishing it from more specific geometry queries like get_points or get_bounding_box. The verb 'get' and resource 'geometry summary' are specific, though it doesn't elaborate on what the summary contains, which prevents 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 siblings. There is no mention of scenarios where a summary is preferred over detailed queries, nor any exclusions or alternatives. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_group_membersA
Get element indices in a geometry group, with pagination.
Check has_more and increment start to read subsequent pages.
Args: node_path: Node path. group_name: Group name. group_type: "point", "prim", or "edge". start: First element index to return. count: Max elements per page (default 5 000).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| start | No | ||
| node_path | Yes | ||
| group_name | Yes | ||
| group_type | No | point |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description adds useful behavioral context: results are paginated and has_more plus start increment hints at the response contract. It does not cover error handling or full return shape, but the pagination disclosure is meaningful beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the main purpose, and uses a short Args list with no filler. Each line earns its place by adding param meaning or pagination 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?
Coverage is adequate for invoking the tool because all five parameters are listed with useful semantics and pagination is explained. Without an output schema, however, the exact response fields beyond has_more are left implicit, so there is still a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions, so the description compensates by explaining group_type as 'point', 'prim', or 'edge', and defines start as 'first element index' and count as 'max elements per page'. The node_path and group_name entries are terse but acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Get element indices in a geometry group' and mentions pagination. It is unambiguous but does not explicitly distinguish itself from siblings such as get_groups or other geometry query tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives direct instruction on paging behavior: 'Check has_more and increment start to read subsequent pages.' However, it does not discuss when to choose this tool over alternatives or provide any exclusions, so selection guidance is only implied by the name and first line.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupsB
List all geometry groups on a SOP node.
Args: node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. The verb 'List' implicitly communicates a read-only operation, but the description does not explicitly confirm that it has no side effects or that the node will not be modified. It also does not disclose return format or error behavior, leaving some details 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 brief and front-loaded: one purpose sentence followed by a single argument line. It contains no filler or redundant detail, and the structure is clean. However, the argument line adds little value, making it economical rather than information-rich.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 list tool with no output schema, the description does not specify the return shape (e.g., list of group names, group paths, or objects) or whether group types (point/primitive/vertex) are included. It also omits any details on error handling for invalid node paths. These gaps leave an AI 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 coverage is 0%, so the description must compensate. The only parameter documentation is 'node_path: Node path.' which simply restates the schema's property title and adds no new meaning about path format, expected node type, or absolute vs. relative paths. The tool description mentions 'SOP node' context, but the parameter line itself contributes nothing 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 action and resource: 'List all geometry groups on a SOP node.' The phrase 'geometry groups' and 'SOP node' clearly distinguish it from sibling tools like get_group_members, get_geometry_info, or get_points, which have different purposes. It does not explicitly name an alternative, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever an agent needs to enumerate geometry groups on a SOP node. However, it provides no explicit when-not conditions, prerequisites, or alternatives, such as noting that get_group_members should be used to inspect group contents. The context is minimal but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hda_infoC
Get detailed information about an HDA definition.
Args: ctx: MCP context. node_path: Node path. hda_file: HDA file path. type_name: HDA type name.
| Name | Required | Description | Default |
|---|---|---|---|
| hda_file | No | ||
| node_path | No | ||
| type_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It only says 'Get detailed information' and never describes return shape, possible side effects, whether loading a definition may occur, error behavior, or anything beyond the bare operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the main purpose before listing arguments. There is no filler or repetition. It is compact, though compactness comes at the cost of missing important usage and behavior 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?
With no annotation safety net, three nullable parameters, and no output schema, the description is not sufficient to call the tool correctly. An agent cannot infer return contents, how to choose between node_path/hda_file/type_name, or what 'detailed information' means in this HDA 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. The Args list labels each parameter ('Node path', 'HDA file path', 'HDA type name') but does not explain whether these are alternatives, which are required, or how they relate. It also lists 'ctx: MCP context' even though ctx is not present in the provided input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a clear verb and resource: 'Get detailed information about an HDA definition.' It is reasonably specific, but it does not distinguish itself from close siblings such as get_hda_sections, get_hda_section_content, or get_hda_info-related lookup tools, 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?
There is no guidance on when to use this tool versus alternatives, no mention of alternatives, and no mention of prerequisites or selectors. The description simply states the purpose and then lists arguments; an agent receives no help deciding whether to call get_hda_info, list_hda_versions, get_hda_sections, or get_hda_section_content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hda_section_contentC
Read the content of a specific section in an HDA definition.
Args: ctx: MCP context. node_path: Node path. section_name: Section name.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| section_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'Read' implies a non-destructive operation, which is useful, but nothing is said about error behavior (invalid section name, non-HDA node), return format, or whether the tool causes any cooking or network side effects. 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 purpose sentence is front-loaded and economical. The Args block is largely redundant with the input schema, but it is compact and follows a standard docstring pattern, so it does not bloat the definition. No wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% schema description coverage, the description is the only source of guidance, and it is thin. An agent would not know what an HDA 'section' is, what node_path format is expected, what the tool returns, or how failures surface. For a tool that is not inherently complex, it still leaves too much unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 missing parameter meaning. The Args block lists ctx, node_path, and section_name, but the glosses 'Node path' and 'Section name' merely restate the parameter names and add no format, example, or domain context. The only genuine addition is identifying ctx as MCP context, which is trivial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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: 'Read the content of a specific section in an HDA definition.' The word 'specific' signals that the caller must identify which section, and it implicitly contrasts with siblings like get_hda_sections (listing sections) and set_hda_section_content (writing sections). It is clear but does not explicitly name the alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus its siblings. There is no mention of get_hda_sections for enumerating available sections, no note about prerequisites (e.g., node must be an installed HDA), and no exclusions or alternative routing. The usage context is only implied by the phrase 'specific section.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hda_sectionsC
List all sections in an HDA definition.
Args: ctx: MCP context. node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It conveys a read-only listing operation, but it does not explain what a section is, whether the result is names or metadata, what kinds of errors may occur, or how HDA definitions are resolved from node_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?
The description is compact, front-loaded with the main action, and contains almost no filler. The Args block is slightly redundant with the schema, but it is short and does not obscure 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?
This is a simple one-parameter tool with no output schema and no annotations, but the description is still incomplete: the semantics of node_path are undefined, the return shape is unspecified, and there is no guidance tying it to HDA definition workflows. An agent would have to guess 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%, so the description must compensate, but 'node_path: Node path' merely restates the parameter name and title. It does not specify whether the path points to an HDA node, a definition, or a library entry, nor does it describe expected path formats or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), resource ('sections'), and scope ('all sections in an HDA definition'). This distinguishes it from siblings like get_hda_section_content (which targets content rather than the section list) and get_hda_info, making the tool's purpose immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_hda_section_content, get_hda_info, or list_installed_hdas. The description gives no context, prerequisites, or exclusions, leaving the agent to infer usage entirely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_help_pageA
Fetch one page of Houdini's shipped documentation by path.
Read the real reference instead of writing from memory โ especially the VEX function pages (vex/functions/...) before any justified wrangle, and expression pages (expressions/...) before channel expressions.
Args: path: As returned by search_help โ e.g. "nodes/sop/scatter", "vex/functions/noise", "expressions/ch".
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of explaining behavior. It conveys that the tool is a read-only documentation fetch for a single page, and gives path examples, but it does not disclose the output format, error behavior for invalid paths, or whether the page content is returned as raw text, HTML, or 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 compact and front-loaded: it states the core action in the first line, then supplies a motivation and parameter guidance. Every sentence contributes useful context, and the examples are placed exactly where the agent will need them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 documentation-fetch tool, the description is nearly complete: it explains what is fetched, how to obtain the path, and when to use it. The only notable gap is the absence of return-value details, which matters somewhat because there is no output schema to 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?
The schema only specifies a required string path with no description, so the description fully compensates. It explains that the path should be the value returned by search_help and provides three concrete, realistic examples: 'nodes/sop/scatter', 'vex/functions/noise', and 'expressions/ch'. This makes the parameter unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Fetch one page of Houdini's shipped documentation by path.' It is distinct from search_help because it consumes a path that search_help returns, but it does not explicitly contrast itself with sibling lookup tools like get_workflow_guide or explain_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage context: consult VEX function pages before writing wrangles and expression pages before channel expressions. It also tells the agent to source the path from search_help, which is actionable, though it does not explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_houdini_connection_statusA
Check the Codex-to-Houdini bridge without raising on disconnect.
Returns structured connection diagnostics, including the configured bridge URL and Houdini health payload when reachable. Use this before live viewport workflows when Houdini may have restarted or its hwebserver may not be running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses a key non-obvious behavior (does not raise on disconnect), states that it returns structured diagnostics, and names the included payload elements (bridge URL and Houdini health payload when reachable). This goes well beyond what the tool name alone conveys, though the exact diagnostic shape is not fully specified.
Agents need to know what a tool does to the world before calling 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 no filler. The first sentence states the core behavior; the second adds return-value highlights and usage timing. Every sentence earns its place, and the most important facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic tool with no annotations and no output schema, the description covers purpose, non-throwing behavior, return-value highlights, and recommended usage context. It is complete enough for an agent to invoke it confidently, though full enumeration of every diagnostic field would require an output schema rather than prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is no parameter information for the description to add, and nothing in the description needs to clarify argument 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 opens with a specific verb and resource: 'Check the Codex-to-Houdini bridge', and immediately adds the distinctive behavioral qualifier 'without raising on disconnect'. This clearly separates it from the many sibling tools that manipulate scenes, parameters, or caches, making the tool's role as a connectivity diagnostic 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 explicitly states when to use it: 'Use this before live viewport workflows when Houdini may have restarted or its hwebserver may not be running.' This is strong situational guidance, though it does not explicitly name alternatives or state when not to use it. The context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keyframesC
Get all keyframes on a parameter.
Args: node_path: Node path. parm_name: Parameter name.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only says 'get all keyframes' and does not disclose the return format, empty-result behavior, whether the parameter must be animated, or any error conditions. Non-destructiveness is only implied by the word 'get.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose. The Args block is redundant with the schema but does not bloat the definition. It earns its place as a readable 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?
For a simple two-parameter read tool, the description is minimally viable: it identifies the target resource and the required arguments. However, with no output schema and no annotations, it omits any indication of what a keyframe entry looks like or what happens when no keyframes exist, leaving some ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section merely repeats the schema titles ('Node Path', 'Parameter Name') without adding meaningful details. Since schema description coverage is 0%, the description should compensate by explaining path syntax (e.g., '/obj/geo1') or how to name the parameter (e.g., 'tx'), but it doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 keyframes on a parameter.' The read intent is clear and naturally distinguishes it from set_keyframe, set_keyframes, and delete_keyframe siblings, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. It doesn't mention set_keyframes, delete_keyframe, or get_parameter, and provides no context such as 'use this to inspect animation curves before editing.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_last_modified_primsC
Get prims modified by the last LOP node cook.
Args: node_path: LOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavior disclosure burden. It only states the operation and returns no details about what 'modified' means, whether prim paths are returned, how node_path is validated, or what occurs if no cook has happened. This is a minimal mention of behavior, not a transparent account.
Agents need to know what a tool does to the world before calling 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: the function's purpose comes first, followed by the single parameter's meaning. There is no redundancy or extra prose, which is efficient for a one-parameter tool. It earns a high score for being appropriately sized and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool, but with no annotations and no output schema, the description is the only source of context. It fails to explain the return type, the exact format of node_path, or edge cases such as unber-cooked nodes. An agent could invoke it correctly with basic path knowledge, but the missing details leave room for error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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. The only extra context is that node_path is a 'LOP node path,' which adds a vague type qualifier but no format, examples, or constraints. This is insufficient for a tool that depends entirely on this single path parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and target: 'Get prims modified by the last LOP node cook.' This is more specific than siblings like get_prims or get_usd_prim, the 'last LOP node cook' scope uniquely defines the operation. It does not explicitly name siblings to differentiate, but the clarity of the resource and event is strong.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many getter sibling tools (e.g., get_prims, get_usd_prim, get_prim_intrinsics). The description gives no context about typical use cases, prerequisites, or exclusions. An agent is left to infer the intended context solely from the phrase 'last LOP node cook.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_infoA
Get detailed information about a material node.
assignments lists the nodes under /obj and /stage whose material-path parameters name this material; only those parameters are read, so the call costs the same on a 4,000-node scene as on an empty one (assignment_scan reports how many nodes were visited).
Args: ctx: MCP context. node_path: Absolute path to the material node.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and adds useful behavior: only material-path parameters are read and cost is scene-size-independent; assignment_scan reports visited nodes. It does not cover error behavior or the full return payload, but the read-only constant-cost trait is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with a clear summary, then a dense but relevant paragraph on assignments and cost, then an Args block. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no annotations or output schema, the description covers invocation and a key return field (assignments) plus runtime cost behavior. It remains incomplete about what other 'detailed information' is returned and what happens on bad paths, so the agent must infer the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a title and 0% description coverage, so the description's 'Absolute path to the material node' is the only real semantic documentation for node_path. It clarifies path format adequately for a single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Get detailed information about a material node'). It doesn't name sibling tools like get_node_info or list_materials to differentiate it, but the object and scope 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 explicit guidance on when to use this tool over siblings such as get_node_info, list_materials, or get_usd_materials is provided. The description implies the use caseโmaterial-specific information and assignmentsโbut never states exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_overviewA
Get a compact overview of a network.
Keep depth low (1โ2). Larger values on complex scenes return thousands
of nodes and can overflow the context window.
Args: path: Network path. depth: Recursion depth (default 2, keep โค 3).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | /obj | |
| depth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description does add behavioral context beyond the schema: it flags the depth-dependent scale risk. It stops short of fuller transparency by omitting what exactly the 'overview' contains or what failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, scannable, and prioritizes the warning a user most needs: keep depth low to avoid context overflow. No filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only overview tool with no output schema, the description covers purpose, the key usage constraint, and parameter semantics. It lacks only richer context like output shape or examples, but nothing essential for 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?
Schema description coverage is 0%, so the description must compensate. It explains `path` as 'network path' and `depth` as 'recursion depth' with a default and safety limit, adding real meaning beyond the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Get a compact overview of a network.' It is clear enough to distinguish from detailed node inspection tools, although it does not 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 gives clear usage context: keep `depth` low (1โ2), because larger values on complex scenes can overflow the context window. It does not explicitly state when to prefer this over sibling tools, but the guidance it provides is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_cardA
Get the authoritative documentation card for a node type, straight
from the running Houdini: connectors in order (inputs / outputs
with index, name and label โ the index of texcoord on mtlximage
lives here), real parameter names/defaults/menus, and the node's own
shipped help text. Connectors are read off a probe node the first time
a type is asked for in a session (no undo entry, creation scripts not
run); connectors_probed: false with connectors_note means they could
not be read, not that the type has none.
Use this BEFORE setting parameters on a node type you have not used in this session โ never guess parameter names. Unversioned names resolve to the newest version.
Args: node_type: Type name (e.g. "scatter", "rbdbulletsolver"). context: Category โ "Sop", "Lop", "Vop" (MaterialX and other shader nodes inside a material network), "Dop", "Cop", "Chop", "Top", "Object", "Driver"; also "Cop2", "Shop", "VopNet". parm_filter: Substring filter for the parameter list. include_help: False drops the help text (about 4 KB per card) when only parameter names or connectors are needed.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Sop | |
| node_type | Yes | ||
| parm_filter | No | ||
| include_help | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral disclosure burden, and it does so thoroughly. It reveals that connectors are read from a probe node on first access, that no undo entry is created, that creation scripts are not run, and that connectors_probed: false with connectors_note means the connectors could not be read rather than being absent. It also explains that unversioned node names resolve to the newest version. This is excellent transparency beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, starting with the purpose, then usage guidance, then parameter documentation. It is longer than typical but each clause adds meaningful information, especially the caveats about probe-node behavior and help-text size. A slight tightening around redundant phrases like 'straight from the running Houdini' could improve conciseness, but overall it is appropriately detailed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description provides a reasonably complete picture of what the tool returns: connectors in order, parameter details, and help text. It also gives critical edge-case semantics about connector probing. However, it does not fully describe the overall response structure or how errors for invalid node_type/context combinations are reported, which leaves a minor gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate, and it does. Each parameter is explained: node_type with examples, context with enumerated category values, parm_filter as a substring filter, and include_help with the size/behavior tradeoff. This gives the agent far more semantic meaning than the bare input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving an authoritative documentation card for a Houdini node type, including connectors, parameter names/defaults/menus, and help text. It is specific about the resource and the data returned. However, it does not explicitly differentiate itself from closely related siblings like get_node_info, get_parameter_schema, or explain_node, though the focus on 'authoritative doc card' and parameter correctness implicitly separates 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?
The description gives explicit guidance on when to use the tool: 'Use this BEFORE setting parameters on a node type you have not used in this session โ never guess parameter names.' It also advises using include_help=False when only parameter names or connectors are needed. It lacks explicit exclusionary guidance against sibling tools, but the context is clear enough for an agent to select it for pre-parameter-setup lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_errors_detailedB
Get detailed error analysis for nodes.
Args: node_path: Node to analyze, or scan from root_path if omitted. root_path: Root path to scan.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | No | ||
| root_path | No | / |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses an important behavioral trait: scanning from root_path when node_path is omitted syncs. However, with no annotations, the description carries the full burden for behavioral disclosure, and it fails to explain what 'detailed error analysis' actually includes, whether any cooking or side effects occur, or the format of the returned 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 minimal and well-structured, with the purpose stated first followed by a clear argument list. Every word earns its place and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description must stand alone. It leaves major gaps: the meaning of 'detailed error analysis', the return structure, and when to use this instead of similar error-related tools. An agent has enough to call the function but not enough to interpret or confidently rely on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for node_path ('Node to analyze, or scan from root_path if omitted') and root_path ('Root path to scan'), which go beyond the raw schema. But the descriptions are terse and don't clarify path syntax, recursion, or what 'scan' entails.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Get') and resource ('detailed error analysis for nodes'), which matches the tool name closely. However, it does not distinguish this from the sibling tool 'find_error_nodes', and 'detailed' is not defined further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 'find_error_nodes' or 'get_cook_chain'. It only includes argument descriptions, with no context about the intended use case or scenarios where a different tool would be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_infoA
Get type, connections, flags, errors, cook time, and non-default parameters for a node.
Returns only parameters that differ from their defaults (non_default_parameters) plus a total_param_count. Use get_parameter_schema to inspect the full parameter list.
Args: ctx: MCP context. node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does disclose a key behavioral nuance: only non-default parameters are returned, plus total_param_count. The 'Get' framing implies a read-only operationlint, and the description clearly enumerates what the tool returns, though it does not mention path validation, error behavior, or side effects explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose and return behavior are front-loaded in two concise sentences, and the sibling reference is efficient. The trailing Args block duplicates the schema and introduces ctx, which is minor clutter, but the overall description is short and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only info tool, the description covers the key output fields and explicitly notes the non-default parameter behavior. The lack of an output schema and exact return shape is a gap, but the field list and sibling hint give an agent enough context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, and the description only repeats 'node_path: Node path' without adding path syntax, examples, or formatting details. While the single parameter is simple, the description does not meaningfully 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 names a specific verb ('Get') and resource ('node info'), then enumerates the exact fields: type, connections, flags, errors, cook time, and non-default parameters. It also differentiates from get_parameter_schema, making it easy for an agent to know what this tool uniquely provides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 routes the agent to get_parameter_schema when the full parameter list is needed, while clarifying that this tool only returns non-default parameters plus a total count. This gives clear when-to-use context against the most relevant sibling, though it does not address other overlapping info tools like get_node_card.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parameterC
Get the value and metadata of a parameter.
Args: node_path: Node path. parm_name: Parameter name.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It implies a read-only lookup through the word 'Get', but it never explicitly states that it does not modify the scene, nor does it describe what happens for missing nodes/parameters or what 'metadata' includes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose, with a compact argument list. It is efficient, though the Args section is minimally informative rather than genuinely helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 getter with two parameters, the description is minimally viable: an agent can infer the call shape. However, the lack of an output schema and the absence of return-format details, node-path syntax, or error behavior leave notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. However, 'Node path.' and 'Parameter name.' only restate the property titles from the schema and add no meaningful detail about expected formats, examples, or allowed values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it retrieves both the value and metadata of a named parameter. This is clear, but it does not explicitly differentiate it from siblings like get_parameters or get_parameter_schema, 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?
There is no guidance on when to use this tool versus get_parameters, get_parameter_schema, or set_parameter. The description only lists arguments and does not mention scenarios, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parametersA
Read many parameter values at once, matched by name or label substring.
The batch counterpart of set_parameters. Several unrelated groups of settings ("flame", "wind", "buoy") come back in one call instead of one call each, and unlike get_node_card these are the live values on this node rather than the defaults for its type.
Args: node_path: Node to read. patterns: Substrings matched against parameter name and label. Omit for everything, up to the cap. include_defaults: Also report whether each value is still the default.
| Name | Required | Description | Default |
|---|---|---|---|
| patterns | No | ||
| node_path | Yes | ||
| include_defaults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses substring matching against name and label, live-value semantics, the inclusion of defaults as an optional report, and an implicit result cap. It does not define the cap value or describe the return structure, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly organized: a one-sentence purpose summary, a brief contextual comparison, then a compact Args block. The 'flame/wind/buoy' example illustrates the batching idea without bloating the text. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is nearly self-sufficient: it covers selection semantics, batch behavior, live-value distinction, and all parameters. The main gaps are the undefined 'cap' value and the lack of any indication of the response shape, which an agent would need for reliable parsing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates fully by explaining every parameter: node_path is the node to read, patterns are substrings matched against name/label with an omit-for-everything behavior, and include_defaults adds the report of whether each value is still the default. This goes well beyond the bare schema types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read many parameter values at once, matched by name or label substring.' It then explicitly contrasts itself with set_parameters (batch counterpart) and get_node_card (live values vs defaults), so an agent can clearly distinguish it from relevant siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use this when you want several unrelated parameter groups in one call, and explains why it differs from get_node_card. It does not explicitly say 'use get_parameter for a single parameter,' but the batch-vs-single distinction is strongly implied by the 'batch counterpart' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parameter_schemaA
Get the template schema for parameter(s) on a node.
Most nodes have dozens of parameters; many have 100+. Always use
parm_name or filter unless you genuinely need the full list.
Args: node_path: Node path. parm_name: Exact parameter name for a single-parameter lookup. filter: Substring to match against parameter name or label (case-insensitive). Use instead of dumping all params.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | ||
| node_path | Yes | ||
| parm_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the potentially large response size and the filtering behavior, but does not mention whether the operation is read-only, performance implications, or error conditions. The description is honest but not deeply transparent about behavior beyond the filtering advice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a crucial performance warning and parameter explanations. Every sentence earns its place; no fluff or repetition of schema 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 3-parameter tool with no output schema, the description covers the essential usage context: what it returns, how to avoid expensive full dumps, and parameter semantics. It lacks explicit notes on return format or error handling, but these are less critical given the tool's simplicity and the strong parameter 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 must compensate. It explains node_path, parm_name (exact name for single-parameter lookup), and filter (substring match, case-insensitive), adding meaning beyond the bare schema titles. It could be more explicit about mutual exclusivity of parm_name and filter, but the guidance is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the template schema for parameters on a node, with a specific verb ('Get') and resource ('template schema for parameter(s) on a node'). It also distinguishes itself from sibling tools like get_parameter and get_parameters by focusing on schema retrieval rather than values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 advises when to use parm_name or filter instead of dumping all parameters, and warns that most nodes have dozens or 100+ parameters. This gives clear usage guidance and implicitly contrasts with get_parameter/get_parameters for value retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parm_referencesB
Who references a parameter, and what it references โ in one call.
incoming: for each parameter of the node (or just parm_name), the
parameters elsewhere whose expressions read it โ what breaks if this
control is renamed. outgoing: what this node's expressions and
backtick strings read, resolved to parameter paths (pure ch() links and
richer expressions alike; unresolved names a written target that no
longer exists). node_dependents / node_references give the
node-level view for this node only.
Args: node_path: Node to inspect. parm_name: One parameter instead of all of them. direction: "both", "incoming" or "outgoing". limit: Cap on reported entries.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| direction | No | both | |
| node_path | Yes | ||
| parm_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses some edge-case behavior (e.g., 'unresolved' naming a removed target) and what the tool computes (pure ch() links and richer expressions). It does not explicitly state read-only semantics (though the 'get' prefix implies it) or address permissions, side effects, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-sentence hook, then a compact explanation of incoming/outgoing, then a clear args list. The prose is dense but each sentence adds value, and the args section makes parameter semantics scannable. Slight verbosity in the node_dependents sentence could be trimmed, but overall it's 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 no output schema, the description should describe return values more concretely. It explains the conceptual content of incoming and outgoing references but never specifies the response structure, such as whether results are lists, maps, or contain metadata. The 'node_dependents' / 'node_references' terms are introduced but not fully defined, leaving gaps for an agent trying to understand the full result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides one-line explanations for each parameter: node_path is the node to inspect, parm_name narrows to one parameter, direction lists allowed values, and limit caps entries. These are helpful but quite terse; they don't clarify node_path format/requiredness beyond the schema and don't explain the behavior of defaults in 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 opening line 'Who references a parameter, and what it references โ in one call' clearly identifies the tool's purpose. It further distinguishes between incoming and outgoing reference views, giving a specific verb-resource pairing. However, it doesn't explicitly differentiate from sibling tools, though none appear directly overlapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 when to use each direction ('incoming' for what breaks if renamed, 'outgoing' for what the node reads) and the optional parm_name scope. It does not, however, give guidance about when to choose this tool over alternatives like link_parameters or get_parm_template_tree, and no when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parm_template_treeA
The whole parameter interface as a tree, the way Type Properties shows
it: folders (with folder_type โ tabs, collapsible, multiparm), every
parameter in order with defaults, default expressions, ranges, menu
items, Hide/Disable When conditionals, callbacks, naming scheme; a
multiparm's default_instances. Each entry uses get_parameter_schema's
keys (default_value, is_hidden, menu_items...).
get_hda_info shows only the top folders and get_parameter_schema flattens the structure away; read this before editing an interface. Give node_path for a node (its instance interface, spares included) or type_name + context for a type.
Args: node_path: Node whose interface to read. type_name: Node type instead (with context). context: Category of type_name โ "Sop", "Object", "Lop", ... folder: Narrow to one folder by label, or a list of nested labels. max_entries: Cap on entries (depth-first); the reply says when it cut.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | ||
| context | No | Sop | |
| node_path | No | ||
| type_name | No | ||
| max_entries | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure. It explains what the returned tree contains, that node_path includes spares, that entries use get_parameter_schema's keys, and that max_entries caps results with an indication in the reply when truncation occurs. The phrase 'read this before editing' also implies a non-mutating, read-only 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 detailed but every sentence earns its place: high-level definition, differentiation from siblings, usage guidance, and a compact Args block. It is front-loaded with the most important distinguishing information before moving into parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameter-introspection tool with no annotations and no output schema, this description is unusually complete. It explains the return shape, the selection modes, the folder-filtering mechanism, the truncation behavior, and the relationship to sibling schemas, so an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by documenting all five parameters: node_path, type_name, context, folder, and max_entries. It adds real meaning beyond the schema by explaining folder's nested-label behavior and max_entries' depth-first cap and cut notification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's resource precisely: the full parameter interface represented as a tree, with folders, parameter order, defaults, expressions, ranges, menu items, and conditionals. It also explicitly distinguishes itself from get_hda_info and get_parameter_schema, making it easy for an agent to select this tool over nearby siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage context: it should be read before editing an interface, and it explains why get_hda_info and get_parameter_schema are insufficient for that purpose. It also tells the agent how to address the target via node_path or type_name + context, covering the main selection paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pdg_graphC
Get the PDG dependency graph structure for a TOP network.
Args: ctx: MCP context. node_path: TOPnet or TOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get', implying a read operation, but does not mention whether it triggers cooking, what happens with invalid paths, error behavior, or the structure of the returned graph. This is minimal disclosure for a tool with no metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a single clear purpose line followed by a compact Args list. Every line serves a purpose and there is no filler. It is appropriately sized for a one-parameter getter, though it could pack more useful detail 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?
For a simple getter with one parameter and no output schema, the description gives the essential inputs but omits the return format of the PDG dependency graph structure and any caveats. An agent might call it successfully but would not know how to interpret the result without further probing. Given the tool's simplicity, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions (0% coverage), so the description must compensate. The only parameter, node_path, is clarified as 'TOPnet or TOP node path', which adds useful type context beyond the schema's bare string type. However, it does not explain path syntax, supported node types, or edge cases, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and resource ('PDG dependency graph structure') for a 'TOP network'. It also mentions node_path can be a TOPnet or TOP node path, which clarifies scope. However, it does not differentiate from sibling tools like get_network_overview or get_cook_chain that could be related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 instead of alternatives. It lacks any context about typical use cases, prerequisites, or scenarios where a user would choose this over other graph/network inspection tools. No exclusions or 'use X instead' hints are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pointsB
Read point positions and attributes with pagination.
Args: node_path: Node path. attributes: Attribute names to read. start: Start index. count: Max points per page. group: Point group filter.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| group | No | ||
| start | No | ||
| node_path | Yes | ||
| attributes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It states the operation is a read and mentions pagination, but does not describe actual pagination semantics (e.g., default page size, how start/count interact, what happens when count is omitted), return format, or any error conditions. This leaves essential runtime behavior unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. The Args list is a clean, scannable way to convey parameter meanings without verbose prose. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter read tool with no annotations and no output schema, the description provides adequate parameter guidance but lacks critical context: what the returned data structure looks like, how pagination behaves at page boundaries, the role of the group filter, and any performance or ordering guarantees. This is enough for a basic call but not for confident robust usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args block adds meaningful definitions for all five parameters beyond the bare schema titles: 'Attribute names to read,' 'Start index,' 'Max points per page,' 'Group point group filter.' This is significantly more informative than the schema alone, which only provides type/title. Node_path remains minimally described as 'Node path,' but overall the parameter semantics are well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read point positions and attributes with pagination,' which clearly identifies the operation (read), the resource (points), and the key feature (pagination). It does not explicitly differentiate from sibling tools like get_prims or get_attrib_values, but the tool name and description make its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. The description does not mention alternatives or conditions under which an agent should choose get_points over get_attrib_values, get_prims, or sample_geometry. Context must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prim_intrinsicsC
Get intrinsic values for primitives.
Args: node_path: Node path. prim_index: Primitive index, or None for a summary.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| prim_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the tool is read-only, whether it cooks the node, what node types are supported, what an 'intrinsic value' means, or what format the result takes. The summary mode for prim_index is the only behavioral nuance mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with no filler or redundant promotional language. The Args block is brief and scannable, though it sacrifices enough detail that it cannot be considered perfectly calibrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description should explain what the returned intrinsics look like and what node_path refers to. It does neither, leaving an agent unable to predict the response shape or valid paths without external Houdini knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section is the only parameter documentation. It mostly restates the schema titles: 'Node path' and 'Primitive index.' It adds one useful semantic โ prim_index=None means a summary โ but it does not explain what node_path should point to or what intrinsic values are included.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation ('Get') on a specific resource ('intrinsic values for primitives'), so the core action is clear. However, it does not differentiate itself from closely related siblings like get_prims or get_usd_prim, and 'intrinsic values' is left as unexplained Houdini jargon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 get_prims, get_geometry_info, or other geometry-read alternatives. The only usage-related detail is the parameter note that prim_index=None returns a summary, which is not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_primsC
Read primitive data and attributes with pagination.
Args: node_path: Node path. attributes: Attribute names to read. start: Start index. count: Max prims per page. group: Prim group filter.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| group | No | ||
| start | No | ||
| node_path | Yes | ||
| attributes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It mentions 'Read' implying a non-destructive operation, and 'pagination' indicates paged results, but it does not state what is returned, whether it is read-only, error handling, or any side effects. It also does not clarify if the operation is limited to certain node types. This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a one-sentence purpose followed by an Args list. It is front-loaded with the main action and each line is useful, avoiding fluff. The structure is clear and easy to scan, though the Args list repeats parameter names already in the schema, which is acceptable for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no annotations, the description is incomplete. It does not explain what 'primitive' refers to (e.g., Houdini geometry primitives vs USD), what the return format is, how pagination behaves (e.g., start index semantics, page size limits), or what values node_path accepts. An agent would struggle to call this 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 coverage is 0%, so the description must compensate. It provides one-line explanations for each parameter (e.g., 'Max prims per page' for count, 'Prim group filter' for group), which adds meaning beyond the schema names. However, it does not specify formats, defaults behavior beyond schema defaults, or the expected structure of node_path or attributes. It offers basic semantics but lacks depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Read primitive data and attributes') and mentions pagination, which conveys the core purpose. However, it does not differentiate from similar read tools like get_prim_intrinsics or get_usd_prim, and 'primitive' is ambiguous (Houdini vs USD). It is specific enough to understand the verb and resource, but 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?
The description provides no guidance on when to use this tool versus alternatives. It only lists arguments without any context about selection criteria, such as when to use get_prim_intrinsics for intrinsic attributes or get_points for point data. No exclusions or alternatives are mentioned, leaving the agent to infer usage 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.
get_render_progressA
Progress of a render or write started with start_render.
Accepts every node start_render accepts (a LOP usdrender_rop or Karma
LOP, a SOP ROP, a File Cache), not only /out ROPs. Reports the node's
errors with license_error singled out, the output files on disk, and
for a background render the process state and the tail of its log.
done is true when there is nothing left to wait for.
Args: node_path: The node given to start_render.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does well: it discloses that errors are reported with license_error singled out, output files on disk are included, background-render process state and log tail are surfaced, and done means there is nothing left to wait for. This is meaningful behavioral detail beyond a simple 'get progress' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well organized, leading with purpose, then accepted inputs, then what is reported, then parameter documentation. There is no filler, and each sentence contributes information the schema and annotations do not provide.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 there is no output schema, the description does well to explain the categories of returned information: errors, output files, process state, and log tail. It also defines the done flag. It could be slightly more complete by naming the exact returned fields or explaining whether the call blocks, but the core information an agent needs 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?
The schema only says node_path is a string, and schema coverage is 0%, so the description must add meaning. It does: node_path is described as 'the node given to start_render,' and the body clarifies which render node types are valid. This is sufficient for a single parameter, though exact path formatting could be more explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 resource and action: it reports the progress of a render or write started with start_render. It also narrows scope by defining which node types are accepted, including LOP usdrender_rop/Karma, SOP ROP, and File Cache nodes. This clearly distinguishes it from generic progress or status 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 gives clear usage context by tying the tool to start_render and stating accepted node types, including that /out ROPs are not the only valid inputs. It does not explicitly name alternatives or state when not to use the tool, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_render_settingsA
Get render settings from a ROP node.
Args: node_path: ROP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. The verb 'Get' clearly indicates a read-only action, which is useful, but the description does not disclose return format, error behavior, or whether the node must be cooked. It covers the core operation but not deeper behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized for a one-parameter getter: a single purpose sentence followed by a minimal args list. Every word adds value, and the main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one parameter, no output schema, no annotations. The description gives the essential information needed to call it correctlyโwhat it does and what parameter it requires. It is complete enough for a straightforward getter, though it could mention what a typical return looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single parameter. 'node_path: ROP node path' adds the fact that the path refers specifically to a ROP node, which is more specific than the schema's generic 'Node Path' title. However, it does not provide path format, examples, or additional 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 states a specific verb ('Get render settings from a ROP node') with a clear resource and scope. It clearly differentiates itself from the sibling set_render_settings by being the getter counterpart, and the ROP-node context is explicit enough to avoid confusion with other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: this tool retrieves render settings from a ROP node, which contrasts with setters like set_render_settings. However, there is no explicit guidance on when to use this versus alternatives like setup_render or render_node_network, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_infoB
Get information about the current Houdini scene.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get information' without specifying what information is returned, whether it is a read-only operation, what the output structure looks like, or any side effects. For a tool with zero annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It is appropriately sized for a simple no-parameter tool, though it could add a bit more detail about what 'information' means without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description should explain what kind of information is returned (e.g., scene name, fps, bounds, node count). It doesn't. The sibling list shows many other info-gathering tools, so without more detail an agent may not know if this returns the right kind of scene info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden. The description doesn't need to explain any arguments. Baseline 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get information about the current Houdini scene.' It is specific enough to distinguish from siblings like get_scene_summary or get_context_info, though it doesn't explicitly differentiate itself from those similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (when you need general scene info) but provides no explicit guidance on when to use this tool versus alternatives like get_scene_summary, get_context_info, or get_network_overview. No exclusions or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_summaryB
Get a high-level summary of the scene.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral transparency. It does not disclose what kind of summary is returned (e.g., content, format, size), whether it is computationally expensive, or if it requires a cook. This is a significant gap for a tool that might have performance implications.
Agents need to know what a tool does to the world before calling 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 fluff. It is front-loaded with the verb and resource. It is appropriately concise for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having zero parameters and no output schema, the description feels incomplete for an agent. It does not explain what 'high-level summary' entails, what the agent can expect to receive, or any side effects (e.g., cooking). Given the complexity of the environment (Houdini), more detail on the summary's scope would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parametersholistic, so there is no parameter schema to describe. The description adds meaning by indicating what the tool does. Since there are no parameters, the description is the primary source of semantics, and it adequately covers 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 action ('Get') and the resource ('the scene'), and includes 'high-level summary' to indicate a specific type of output. It is distinct from sibling tools like 'get_scene_info' which likely provides more detailed information, and 'get_network_overview' which focuses on network structure. However, it could be more explicit about what constitutes a 'high-level summary'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 obtaining an overview, but does not explicitly state when to use this versus 'get_scene_info' or other scene-related tools. Given the large sibling list, more explicit guidance would help an agent choose correctly. The lack of parameters simplifies usage but not selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selectionB
Get the current node selection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states what the tool does, not what the return value looks like, whether it returns an empty list when nothing is selected, or whether it reflects the current network editor context. For a read-only query tool, the lack of return format details is a 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 that front-loads the action and resource. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is thin. An agent doesn't know what the selection data structure looks like (node paths? names?), whether it's a list, or how it behaves with multiple panes/contexts. For a simple getter this is a notable gap, though the zero-parameter simplicity mitigates it somewhat.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden. The description correctly implies no arguments are needed. Baseline 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the current node selection' clearly states the verb (get) and resource (current node selection). It is distinct from the sibling set_selection, which is the complementary operation. However, it doesn't explicitly differentiate from other get_* tools, though the resource is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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: call it when you need to know what nodes are currently selected. It doesn't explicitly state when not to use it or mention alternatives like get_scene_info or get_network_overview. The context is clear but no exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shelf_tool_scriptA
Read the script a shelf tool runs, plus its help and imports.
This is how you learn SideFX's own recipe instead of reinventing it. Most scripts are two or three lines calling a worker in a toolutils module, and the reported imports name exactly what to read next.
Args: tool_name: Internal tool name, from list_shelf_tools.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the tool is read-only ('Read') and gives useful behavioral hints about typical script contents and imports. However, it does not disclose error cases, missing-tool behavior, or output formatting, so some behavioral uncertainty 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 compact and well-structured. The opening sentence states the action, the second adds purpose and context, and the Args block cleanly documents the single parameter. 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 one-parameter read tool, the description gives the return scope (script, help, imports), parameter source, and typical content. It lacks an explicit output schema or detailed return format, but the described behavior is sufficient for this low-complexity 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 fully does: tool_name is described as an 'Internal tool name, from list_shelf_tools,' adding provenance and type guidance beyond the bare schema property. This is exactly the meaning an agent needs to call the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the script a shelf tool runs, plus its help and imports. This specific verb-plus-resource phrasing distinguishes it from siblings like run_shelf_tool and list_shelf_tools, and the intent is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool: 'This is how you learn SideFX's own recipe instead of reinventing it.' It also directs the agent to obtain tool_name from list_shelf_tools. It does not explicitly name alternatives or exclusions, but the context is clear enough for a focused read-only utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sim_memory_usageC
Get detailed memory breakdown for the simulation.
Args: node_path: DOP network node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It says the tool 'gets' data, implying a safe read, but it does not disclose whether this triggers a cook, what the memory breakdown includes, or whether any state is modified. Minimal behavioral context is added beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Exceptionally concise: a one-sentence purpose plus a single parameter line. Every word earns its place and the key action is front-loaded. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and only one minimally described parameter, the description is incomplete. It does not explain what the 'detailed memory breakdown' looks like, what units are used, whether a cook is triggered, or when this tool is the right one to call among many simulation-related 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%, so the description must compensate. It does add a clarifying phrase that node_path is a 'DOP network node path', which gives meaning beyond the schema's bare string type. However, it lacks details about expected format, examples, or how the path relates to the simulation being queried.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Get') and resource ('detailed memory breakdown for the simulation'), clearly indicating what the tool does. It is more specific than generic sibling getters like get_simulation_info, but it does not explicitly differentiate itself from related DOP/simulation 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 get_simulation_info or get_dop_objects. The description simply states the function without any context about typical use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_simulation_infoC
Get DOP network simulation state.
Args: node_path: DOP network node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure burden. It only uses the word 'Get', which implies read-only behavior, but it does not say whether the tool triggers cooking, shows live state, has side effects, or what it returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core purpose, followed by a simple parameter note. There is no filler, though the terse style contributes to under-specification in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and only a one-parameter schema with no parameter descriptions, the description is too thin. An agent would not know what kind of information or object the tool produces, nor how to interpret the returned simulation state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The line 'node_path: DOP network node path' adds a small amount of meaning beyond the schema's generic 'Node Path' title. However, with 0% schema description coverage, it should more thoroughly explain what a valid DOP network node path looks like and what node types are accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Get DOP network simulation state', which identifies a verb and a resource area, but 'simulation state' is vague and left undefined. It does not differentiate this from closely-related sibling tools such as get_dop_field, get_dop_object, list_dop_objects, or get_sim_memory_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the many DOP-related siblings. There is no mention of prerequisites, intended workflow, or situations where a different 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.
get_stage_infoC
Get USD stage info from a LOP node.
Args: node_path: LOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does not disclose side effects (likely read-only but not stated), return format, error conditions, or whether the LOP node must be cooked. The phrase 'get info' implies a query but gives no detail on what 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 compact and includes a single parameter line. It is front-loaded with the main purpose. However, it uses a docstring-style 'Args:' block that is unnecessary for a single parameter and adds a tiny bit of 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?
There is no output schema and no annotations, so the description must stand alone. It fails to explain what 'stage info' returns, how it relates to other USD inspection tools, or any operational caveats. For a tool with one parameter and no other metadata, this is inadequate for an agent to confidently 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?
The description documents the parameter 'node_path' as 'LOP node path', which adds meaning beyond the schema's bare title 'Node Path'. However, it does not clarify if the path is absolute, relative, or how to format it. Given the schema has zero description coverage, this minimal addition earns a 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 states a clear verb+resource: 'Get USD stage info from a LOP node.' It distinguishes itself from siblings like get_usd_prim (which gets a specific prim) and get_usd_layers (which gets layers). However, it does not specify what 'stage info' includes (e.g., root prims, layers, metadata), 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 the many sibling tools that also access USD data (e.g., get_scene_info, get_usd_prim_stats, list_usd_prims). It does not state any prerequisites, exclusions, or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_logsA
Cook logs for a TOP node, or the scheduler log of one work item.
Args: ctx: MCP context. node_path: TOP node path. work_item_index: Work item index; omit for the node's own errors and warnings. tail: Maximum characters of log text, taken from the end.
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | ||
| node_path | Yes | ||
| work_item_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral context on its own. It does disclose the tail semantics ('maximum characters... taken from the end') and the work_item_index selection behavior, but it does not describe return format, failure behavior, or side effects. This is partial rather than full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single purpose sentence is followed by a compact Args block with no filler. Every line adds information; the two usage modes are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read-style tool it covers invocation well, but with no annotations and no output schema it leaves out return content and error conditions. It also does not signal how it relates to sibling TOP/work-item tools, so the agent must infer 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 coverage is 0%, so the description fully compensates by explaining node_path, work_item_index, and tail, including the 'omit for node's own errors/warnings' behavior. This adds real meaning beyond the bare property 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 first sentence identifies a specific resource ('logs for a TOP node') and an alternative mode ('scheduler log of one work item'), distinguishing node-level errors/warnings from per-work-item logs. It does not explicitly name a sibling tool, 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 arg note 'work_item_index: Work item index; omit for the node's own errors and warnings' gives concrete when-to-use guidance: omit for node logs, include for work item scheduler logs. It does not name alternative tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_network_infoC
Get an overview of a TOP network.
Args: ctx: MCP context. node_path: TOPnet or TOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry behavioral disclosure. 'Get an overview' suggests a read, but it never states whether this triggers cooking, what information is returned, whether it is safe, or what happens for an invalid node path. That is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and contains no filler. Every line 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?
With no annotations and no output schema, the description should explain what an 'overview' includes and what the agent can expect back. It does not. The tool may be simple, but the missing return/behavior and alternative-routing context make it incomplete for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add meaning by explaining node_path as 'TOPnet or TOP node path', which is useful. However, it gives no path syntax, examples, or details about how different node types affect the call, so it is only minimally adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Get an overview of a TOP network', which names a clear verb and resource. It does not explicitly differentiate this from siblings like get_network_overview or get_top_scheduler_info, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of alternatives. With many network/inspection siblings present, the agent is left to infer the right context, and no exclusions or preferred alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_scheduler_infoC
Get information about TOP scheduler nodes in a network.
Args: ctx: MCP context. node_path: TOP scheduler or TOPnet path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether this is a read-only operation, whether it triggers a cook, what happens if the node_path is invalid, or what information is actually returned. The phrase 'Get information' implies a read, but the description does not disclose any side effects or edge-case 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 short and front-loaded with the core purpose, which is good. However, the 'Args:' block is mostly redundant with the input schema and does not earn its place; it adds no semantic value beyond restating the parameter 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 no annotations, no output schema, and a single parameter, the description should explain what 'TOP scheduler info' means, what kind of data is returned, and any prerequisites. It does none of that. The sibling list shows many related TOP tools, and this description does not position itself among them, leaving an 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 only repeats the parameter name 'node_path' with a vague gloss ('TOP scheduler or TOPnet path'). It does not explain what a TOP scheduler path looks like, whether it must be an absolute path, or how it differs from a regular TOP node path. The description adds minimal meaning beyond the schema's bare property 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 states a specific verb and resource ('Get information about TOP scheduler nodes in a network'), which is clear enough to identify the tool's basic purpose. However, it does not distinguish this from the closely related sibling get_top_network_info or other TOP tools like get_pdg_graph, so an agent cannot tell exactly what makes this tool unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 get_top_network_info, get_pdg_graph, or get_work_item_info. The description only says what it does, not when it should be selected, so an agent has to infer usage from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_attributeA
Read a USD attribute value from a prim.
A long array (over 16 elements) answers with value as a summary (size,
element_type, head, min/max) plus slice: the elements from offset,
at most limit of them (default the first 64), with has_more. Walk a
big array by raising offset; pass full=True to get every element in
value at once.
Args:
node_path: LOP node path.
prim_path: USD prim path.
attr_name: Attribute name.
time: Time code (frame number).
full: Return the whole array as value.
offset: First element of the window for a long array.
limit: Window size for a long array.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| time | No | ||
| limit | No | ||
| offset | No | ||
| attr_name | Yes | ||
| node_path | Yes | ||
| prim_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the behavioral transparency burden. It discloses important non-obvious behavior: arrays over 16 elements return a summary plus a slice with has_more, and full=True returns every element. It does not mention auth, side effects, or error behavior, but for a read operation it provides substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-line purpose, a focused paragraph on array behavior, then a compact Args list. Each section earns its place and the most important usage behavior is front-loaded before parameter 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 tool with no output schema and no annotations, the description covers parameter semantics and the tricky long-array behavior thoroughly. It leaves minor gaps around the exact return value for short/non-array attributes and error handling, but an agent can still call the tool correctly from this text 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 0%, so the description must compensate. It provides an Args block with meaningful one-line semantics for all seven parameters, including the role of offset, limit, and full in array access, plus time as a frame number. This exceeds what the bare input schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line, "Read a USD attribute value from a prim," uses a specific verb and resource and clearly identifies the operation. It is easily distinguished from siblings such as set_usd_attribute and other USD query tools. The additional array behavior confirms this is a read-only attribute access tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance for using the tool with large arrays: it explains summary vs slice responses, offset walking, limit, and full=True. It does not explicitly name alternatives or state when-not-to-use, but the read operation and array-walking context are clear enough to guide correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_bound_materialA
The material each prim renders with, resolved the way the renderer
resolves it (ComputeBoundMaterials), and where the binding comes from:
direct on the prim, inherited from which ancestor, or which
collection. A binding to a material prim that does not exist is
reported in missing_material, not as unbound.
Batched: pass every prim of interest in one call.
Args: node_path: LOP node whose stage to read. prim_paths: Prim paths to resolve. purpose: "full" (default; what Karma renders, falling back to an all-purpose binding), "preview", or "all" (all-purpose bindings only).
| Name | Required | Description | Default |
|---|---|---|---|
| purpose | No | full | |
| node_path | Yes | ||
| prim_paths | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses important behavior: resolution follows ComputeBoundMaterials, missing material prims are reported in 'missing_material' rather than as unbound, and the 'purpose' fallback behavior. It also notes batching ('pass every prim of interest in one call'). It does not mention performance or error cases beyond missing materials, but the key behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core semantics, then the batching note, then parameter docs. Every sentence earns its place. The only minor issue is that the parameter docs are formatted as an Args block, which is slightly redundant with the schema but still adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with 3 parameters and no output schema, the description covers the essential context: what is returned, how bindings are resolved, the missing-material edge case, and the purpose options. It does not describe the exact return structure (e.g., field names beyond 'missing_material'), but the absence of an output schema makes that a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains node_path as the LOP node whose stage to read, prim_paths as the prim paths to resolve, and purpose with its three values and their meanings. This adds real meaning beyond the bare schema titles, though it could be more explicit about the exact format of prim_paths (e.g., absolute vs relative).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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'), a precise resource ('the material each prim renders with'), and the resolution semantics ('ComputeBoundMaterials'). It also distinguishes the binding source (direct/inherited/collection) and the missing-material case, which clearly separates it from sibling tools like get_usd_materials or list_materials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 on when to use the tool: to resolve the material a prim actually renders with, including inherited and collection bindings. It also explains the 'purpose' parameter's role in choosing what Karma renders. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_compositionC
Get composition arcs for a USD prim.
Args: node_path: LOP node path. prim_path: USD prim path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| prim_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It only states the action without disclosing the expected output, side effects, requirements like a cooked LOP node, or error conditions. The read-only nature is implied by 'get' but not explicitly confirmed.
Agents need to know what a tool does to the world 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 minimal and front-loaded, with the one-line purpose followed by args. It is efficient with no redundant wording, though the extreme brevity leaves out necessary explanatory 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 no output schema, no annotations, and no usage guidance, the description is insufficient for an agent to confidently invoke the tool. It lacks context about what composition arcs are, what the return value looks like, and when to prefer this over sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the schema's silence. It lists node_path and prim_path but adds no meaning beyond the parameter names; it doesn't specify path formats, naming conventions, or relationships. The agent gains no semantic value beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and a distinct resource 'composition arcs for a USD prim' (a well-known USD concept). It clearly identifies the tool's function, though it doesn't differentiate it from sibling USD inspection tools like get_usd_prim_stats or get_usd_layers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 alternative USD inspection tools. There is no mention of suitable contexts, prerequisites, or exclusions, leaving an agent without a basis for selecting it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_layersC
List all layers in a USD stage.
Args: node_path: LOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states the action and the parameter, but does not mention side effects, error handling, return format, or any constraints (e.g., whether the stage must be loaded). This is insufficient for a read operation that could have edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with the main action front-loaded and a structured Args section. Every word earns its place, and there is no redundancy or filler. This is a model of efficient writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description still leaves gaps. It does not describe what the returned list of layers looks like (e.g., names, paths), nor does it mention potential errors or special cases like an invalid node path. Given the simplicity, more context could be expected, especially since the agent may not have prior USD knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an Args section that clarifies 'node_path' as 'LOP node path', adding meaning beyond the schema's generic 'Node Path'. However, schema coverage is 0%, so the description should provide more detail about the expected format or examples. The added explanation is helpful but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all layers') and the resource ('a USD stage'), which is unambiguous. While it doesn't explicitly differentiate from sibling tools, the resource 'layers' is unique among the provided siblings, so an agent can infer its purpose without confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like list_usd_prims or get_stage_info. There is no mention of exclusions, prerequisites, or context in which this tool is preferred, 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.
get_usd_materialsA
List all USD materials on a stage.
Each material reports surface_shaders keyed by render context: "surface" is the universal output, a UsdPreviewSurface for viewports and Storm, and "mtlx" is the MaterialX shader Karma renders. surface_shader is the mtlx one when present, so it agrees with get_material_info on the same material.
bound_to lists the prims a binding is authored on. rendered_on (up
to 50 paths) and rendered_on_count are the geometry that resolves to
the material for rendering, including geometry bound through a parent
or a collection; get_usd_bound_material says why for a given prim.
Args: node_path: LOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses rich behavioral details: surface shaders are keyed by render context, UsdPreviewSurface vs MaterialX behavior, the difference between authored bindings and rendered geometry, a 50-path cap, and inclusion through parents or collections. This goes well beyond a minimal 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 front-loaded with the core purpose, then efficiently explains output fields and edge cases. Every sentence adds value, including the render-context distinction and the reference to sibling tools. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is remarkably complete: it explains what is returned, how each field behaves, important bounds, and where to go for related information. An agent has enough to call the tool correctly and interpret its 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 coverage is 0%, but the single parameter is documented with 'node_path: LOP node path.' This adds the crucial semantic meaning beyond the schema's bare string type, though it does not provide examples or format details. For a one-parameter tool, this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List all USD materials on a stage.' It clearly distinguishes itself from related tools by explaining that get_material_info provides per-material detail and get_usd_bound_material explains per-prim binding reasons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 useful context by naming get_material_info and get_usd_bound_material as related tools for deeper or different questions. It does not explicitly say 'use this when you need all materials' versus alternatives, but the context is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_primA
Get detailed info about a USD prim.
Array attributes longer than 16 elements (points, faceVertexIndices,
primvars:st, ...) come back as a summary: size, element_type, the first 8
as head, and min/max for numeric data. That is what a mesh question
needs; the full arrays of a building ran to 6.6 million characters. Pass
full=True for every element, or read one array in windows with
get_usd_attribute(offset=, limit=).
Args: node_path: LOP node path. prim_path: USD prim path. full: Return array attributes in full instead of summarised.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| node_path | Yes | ||
| prim_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains the summarization behavior for large arrays, including size, element_type, head, and min/max, and provides a rationale (6.6 million characters). It does not cover error conditions or the full return format, but the disclosed behavior is significant and goes beyond a generic 'get info' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, then explains the key behavioral nuance with a concrete example, and ends with a clear parameter list. Every sentence serves a purpose, and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers array behavior and parameter semantics, but with no output schema and no annotations, it leaves the overall return structure vague ('detailed info'). It does not specify what non-array fields are returned or how errors are handled, which an agent might need to reliably parse the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each parameter concisely: node_path as LOP node path, prim_path as USD prim path, and full as a toggle for full vs summarized arrays. This adds meaning beyond the bare schema property names and defaults, though 'LOP node path' and 'USD prim path' assume domain knowledge.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get detailed info about a USD prim' clearly states the verb and resource, and the additional details about array summarization differentiate it from generic listing tools. However, it does not explicitly distinguish it from siblings like get_usd_prim_stats or get_prim_intrinsics, though the name and explanation 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 gives concrete usage context: 'That is what a mesh question needs' and directs users to get_usd_attribute for reading arrays in windows. It does not explicitly mention when to prefer other sibling tools for stats or intrinsic data, but the guidance provided is specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_prim_statsB
Get prim counts by USD type under a root path.
Args: node_path: LOP node path. prim_path: Root prim path to gather stats from.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| prim_path | No | / |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions that the tool counts prims by USD type under a root path, but fails to explain whether it traverses all descendants, includes the path itself, or requires a cooked node. It also does not disclose the output format or any side effects. For a read-only tool, this is helpful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one clear sentence followed by a terse argument list. Every word serves a purpose, and the main purpose is front-loaded. It avoids unnecessary filler while still providing enough information to identify the tool and its inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a basic read-only tool with only two string parameters and no output schema. It states the purpose and gives brief parameter explanations. However, it lacks details about the exact return shape (e.g., dict of type โ count), potential error conditions, or whether a cooked node is required. Because the tool is simple)Skip, this is not a major shortfall, but there is room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds a minimal explanation for each parameter: node_path is described as 'LOP node path' and prim_path as 'Root prim path to gather stats from.' The latter clarifies that prim_path serves as a root for aggregation, which adds meaning beyond the bare schema titles. However, the explanations are terse and do not specify path syntax or edge cases, so they only partially compensate for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get prim counts by USD type under a root path.' It identifies the specific verb ('get'), the resource ('prim counts by USD type'), and the scope ('under a root path'), which distinguishes it from sibling tools like get_usd_prim, list_usd_prims, and get_attrib_stats. The purpose is unambiguous and leaves no room for confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention preconditions (e.g., the LOP node must exist or be cooked), nor does it contrast with similar tools that could also retrieve prim information. The only implied usage is 'call this to get counts,' but no explicit context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_variantsA
Get variant sets and selections for a USD prim.
Args: node_path: LOP node path. prim_path: USD prim path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| prim_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself, but it only states 'Get...' and does not explicitly confirm it is read-only, say whether cooking/evaluation occurs, or describe the shape of the returned variant data. It also does not address prims that have no variants.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in a single sentence and the argument notes are compactly listed. There is no filler, repetition, or extraneous detail for a two-parameter getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter getter it is nearly sufficient, but without an output schema or annotations it omits the expected return format and edge-case behavior (e.g., a prim without variants). An agent could invoke it correctly but may not know how to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema has 0% description coverage, the description's Args block provides semantic labels: node_path is a LOP node path and prim_path is a USD prim path. This is enough to infer the parameter roles, even if exact path syntax is not illustrated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Get variant sets and selections for a USD prim.' This clearly differentiates it from sibling tools like get_usd_prim and list_usd_prims by targeting variant sets and selections specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no prerequisites, and no mention of related USD tools such as get_usd_prim or get_usd_composition. The only usage information available is the list of required arguments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewport_infoC
Get viewport settings for a pane tab.
Args: pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Get' and names a single argument. It does not reveal return format, side effects, error behavior, or what a null pane_name means, so the agent has little to rely on beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose, followed by a short argument note. There is no filler or redundancy, though it is borderline under-specified rather than elegantly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, this description is too sparse. An agent cannot determine what viewport settings are returned, whether omitting pane_name is valid, or how this relates to the many viewport-related sibling tools, making correct invocation uncertain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The line 'pane_name: Pane tab name' adds only a small clarification over the schema title 'Pane Name' and does not explain valid values, optionality semantics, or how to target a specific pane tab.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Get') and resource ('viewport settings for a pane tab'), so an agent can infer the core operation. However, it does not enumerate which settings are returned or distinguish it from viewport-related siblings such as list_panes, get_scene_info, or set_viewport_camera.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are no explicit contexts, exclusions, preconditions, or references to sibling tools like set_viewport_camera or list_panes, leaving usage entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_volume_infoA
Per-volume name, resolution, active voxel count and value range.
A primitive count cannot tell a correctly named non-empty density field from an empty one, which is the question worth asking before wiring a solver's sourcing. This is the SOP counterpart of get_cop_vdb.
Args: node_path: SOP node path holding volume or VDB primitives. max_volumes: Cap on volumes reported.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| max_volumes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the returned data dimensions and the max_volumes cap, and clarifies the semantic distinction between primitive count and active voxel count. It does not explicitly state read-only behavior or error behavior, but the 'get' verb and the disclosed scope make the behavior sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: one line summarizes returns, one sentence motivates the tool, one line names the sibling counterpart, and two lines document args. Every sentence earns its place with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter getter with no output schema, the description tells the agent what will be returned, which path to target, and how to cap results. It also connects to the COP sibling for cross-context understanding. A return shape is not specified, but the listed fields are sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section must compensate, and it does: node_path is defined as the SOP path holding volume/VDB primitives, and max_volumes as the cap on reported volumes. These add real meaning beyond the schema titles, though the descriptions are terse and do not mention the default 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 opens with a precise statement of what the tool returns: per-volume name, resolution, active voxel count, and value range. It clearly identifies the resource as SOP volume or VDB primitives and explicitly distinguishes itself as the SOP counterpart of get_cop_vdb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete use case: checking whether a density field is non-empty before wiring a solver's sourcing, and explains why primitive count is insufficient. It names the sibling get_cop_vdb as the counterpart, giving the agent a clear alternative, though it does not enumerate exclusions or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_guideA
The server's written guide for a subject: what to build, in what order, which mistakes it exists to prevent, and the shipped help pages to read.
Call this BEFORE designing a setup you have not built this session, and again the moment two attempts at the same symptom have failed. Each guide is distilled from that subject's SideFX manual.
Args: topic: Help scope name or common alias: pyro, fluid (flip, water, whitewater), vellum (cloth), destruction (rbd), mpm (sand, snow), ocean, solaris, tops, model, copy, render, shade, character, crowds, heightfields, copernicus, assets, troubleshooting, dyno. description: What you are trying to build, for the guide's framing.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It explains that the guide is 'distilled from that subject's SideFX manual' and includes what to build, order, mistakes, and help pages, giving a sense of the content. However, it does not disclose potential side effects (e.g., network calls, caching) or the exact return structure, but since it's a read-only retrieval tool, this is minimal. It adds context about the source and content, which is useful beyond what a schema would 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 well-structured: it starts with a concise purpose, then usage triggers, then a note about the source, and finally parameter definitions. It is reasonably concise given the need to explain both usage and parameters. It front-loads the key purpose and usage. Minor redundancy: 'which mistakes it exists to prevent' could be more concise, but it's not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's purpose (retrieving a guide), the description provides sufficient information for an agent to invoke it correctly: what it returns (guide content), when to use it, and parameter semantics. It lacks explicit detail on the output format, but since there is no output schema, the agent can infer that it returns text. It is complete enough for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must fully document the parameters. It does so effectively: it explains 'topic' with a list of allowed values and aliases, and 'description' as 'What you are trying to build, for the guide's framing.' This goes beyond the schema, which only has names and types, by providing semantic meaning and examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it retrieves a 'written guide' for a subject, covering what to build, order, mistakes to avoid, and help pages. It specifies the resource (server's written guide) and the purpose (to guide building). It is distinct from siblings like 'search_help' or 'get_help_page' by focusing on workflow guides rather than general help docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'when to use' guidance: 'Call this BEFORE designing a setup you have not built this session, and again the moment two attempts at the same symptom have failed.' It clearly states the triggers for calling this tool, which distinguishes it from alternatives. It also implies it should be used proactively in the design process.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_item_infoC
Get detailed information about a specific work item.
Args: ctx: MCP context. node_path: TOP node path. work_item_index: Work item index within the node.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| work_item_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only says 'get detailed information' and does not disclose what data is returned, whether a missing node/work_item_index causes an error, or whether querying has any side effects. The read-only nature is implied by 'get' but not affirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with a clear first sentence, followed by a compact argument list. The ctx line is arguably redundant since it only restates the MCP context, but it does not make the entry bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only two simple parameters and no output schema, the description is minimally sufficient for an agent to identify the target work item. However, it omits any description of the response shape or typical failure conditions and would be stronger with a short 'useful when you need...' pointer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero descriptions, and the description adds that node_path is a TOP node path and work_item_index is an index within that node. This adds meaning beyond variable names, though it stops short of saying whether the path is full, absolute, or whether the index is zero-based.
Input schemas describe structure but not intent. Descriptions should explain non-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 uses a specific verb and resource: fetching detailed info about one work item, identified by node_path and work_item_index. It is distinct from sibling get_work_item_states, but it does not explicitly name or exclude that 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 explains when to prefer this tool over alternatives such as get_work_item_states, get_failed_work_items, or get_pdg_graph. The intended use is only implied by the name and first sentence, with no explicit when/when-not reasoning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_item_statesB
Get work item state counts for a TOP node.
Args: ctx: MCP context. node_path: TOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It says 'Get' and implies read-only aggregation, but it does not state whether the TOP node must be cooked, what state vocabulary is used, or what the return mapping looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded with the core purpose. The Args block is slightly redundant with the schema and includes 'ctx: MCP context,' but the overall size is appropriate and no unnecessary detail is added.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool this is nearly sufficient, but without an output schema or behavioral detail the agent is left to infer return shape and preconditions. A brief note on what 'state counts' returns would complete 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?
Schema description coverage is 0%, so the description must compensate for node_path. It adds that node_path is a TOP node path, which narrows the value type, but it provides no path-format guidance or example. For a single required parameter, this is adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies a get operation that returns counts of work item states scoped to a TOP node. The resource ('work item state counts') is distinct from sibling tools like get_work_item_info or get_failed_work_items, so an agent can discriminate. The specificity is sufficient without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance about when to prefer this over related TOP/work-item tools, and no exclusions or alternative routing are given. The phrase 'for a TOP node' scopes the target but does not explain selection criteria 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.
get_wrangle_codeB
Read the VEX code from an Attribute Wrangle node.
Args: node_path: Path to the wrangle node.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states that it reads code, providing no details about return format, error handling for invalid paths, or behavior when the node is not an Attribute Wrangle. This is a minimal disclosure for a tool that could fail in several ways.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no wasted words, consisting of a single-purpose sentence and a clear Args listing. It is efficiently structured though minimal; it prioritizes brevity without sacrificing the core message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool, the description provides the essential information: what it does and what input it needs. It does not cover edge cases like invalid nodes or return value specifics, but for a simple getter this may be sufficient. With no annotations or output schema, a bit more context (e.g., returns a string of VEX code) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an Args section stating 'node_path: Path to the wrangle node', which adds a basic semantic explanation beyond the bare schema (which only provides the title 'Node Path'). However, it does not elaborate on expected format, required specificity, or examples. Given that schema description coverage is 0%, this modest addition earns a mid-range score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'VEX code from an Attribute Wrangle node', giving a specific, unambiguous purpose. It is easily distinguished from siblings like set_wrangle_code and create_wrangle, which involve writing or creating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, such as set_wrangle_code for writing or get_parameter for generic parameter access. The description does not mention context, prerequisites, or excluded cases, 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.
import_fileB
Import a geometry, USD, or Alembic file into the scene.
Args: file_path: Path to the file to import. parent_path: Network path for the import node. node_name: Name for the created node.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| node_name | No | ||
| parent_path | No | /obj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of disclosing behavioral traits. It states the action and the created node's role through parameters, but does not mention side effects, return values, error behavior, file resolution rules, or what happens when the import fails. This is a significant gap for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a single clear purpose sentence followed by a concise parameter list. Every sentence earns its place, and there is no repetition of schema defaults or obvious filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and only a terse description, the tool lacks critical context: what it returns, whether it triggers a cook, how it handles invalid file paths, and how it relates to load_scene or export_file. This is too thin for an agent to confidently invoke without further investigation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It adds useful context for parent_path and node_name ('Network path for the import node', 'Name for the created node'), but file_path is merely restated as 'Path to the file to import' without clarifying supported formats, path interpretation, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific action ('Import'), the resource types ('geometry, USD, or Alembic file'), and the destination ('into the scene'). This clearly distinguishes it from export_file and load_scene without needing to inspect the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when importing one of the listed file types into the scene, which is useful. However, it gives no explicit guidance about when not to use it or which sibling tool might be a better alternative, such as load_scene for entire scenes or create_node for building nodes from scratch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_usd_layerC
Inspect a USD layer by index.
Args: node_path: LOP node path. layer_index: Layer index (0 = root layer).
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| layer_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only says 'inspect' without indicating whether it is read-only, what it returns, or if any side effects occur. There is no mention of required permissions or limitations, leaving the agent to guess about the tool's 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 succinct, with no wasted words. It clearly lists the action and parameters in a structured format. It is appropriately sized for its simplicity, though it could be slightly 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?
For a simple tool, the description is incomplete. There is no output schema, and the description doesn't state what the 'inspection' returns, whether it's a summary, detailed info, or something else. With no annotations and no parameter coverage, the agent lacks sufficient context to predict the outcome of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does provide brief explanations for both parameters: 'node_path: LOP node path' and 'layer_index: Layer index (0 = root layer)', adding meaning beyond the schema's types and default. However, the explanations are minimal and don't elaborate on formats or edge cases, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Inspect') and resource ('USD layer by index'), which is specific and distinguishes it from broader tools like get_usd_layers (which likely lists layers) and get_usd_prim (which fetches a prim). However, it doesn't explicitly differentiate from similar inspection tools, so it's not 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. It doesn't mention any prerequisites, conditions, or exclusions. The description simply states the action without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_hdaB
Install an HDA file into the current session.
Args: ctx: MCP context. file_path: HDA file path. force: Force reinstall even if already loaded.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the force parameter's behavior ('Force reinstall even if already loaded'), which implies that without force it may skip or error if already loaded. However, it does not disclose side effects (e.g., creation of nodes, session state changes), return values, or failure modes. The behavioral 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 extremely conciseโone sentence stating purpose, followed by an args list. It is front-loaded with the main purpose and avoids fluff. The args section is neatly formatted. Minor inefficiency: it includes 'ctx: MCP context' which is not in the schema, but that is a small 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 2-parameter, no-output-schema tool with no annotations, the description is thin. It omits what happens after a successful install (e.g., does the HDA become available as a node?), any requirements (e.g., file exist, valid HDA), and error conditions. An agent lacks enough context to fully anticipate the outcome, though it can call with the given 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 schema itself has no descriptions (0% coverage), so the description must add meaning. It explains file_path as 'HDA file path' and force as 'Force reinstall even if already loaded', which provides some context beyond the bare schema. However, it does not specify path formats, file types, or detailed force semantics (e.g., does it overwrite existing?). It partially compensates but leaves 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 action ('Install an HDA file') and a clear resource ('into the current session'). The verb distinguishes it from siblings like uninstall_hda and reload_hda, and the resource clarifies scope. The purpose is unambiguous and does not restate the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as reload_hda, update_hda, or create_hda. There is no mention of prerequisites, conditions where this should be preferred, or exclusions (e.g., 'if already loaded, use reload instead'). An agent would have to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_childrenA
Auto-layout children of a network node.
Does nothing when auto-layout is disabled via FXHOUDINIMCP_AUTO_LAYOUT=0.
Args: ctx: MCP context. parent_path: Parent network path. spacing: Spacing multiplier between nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| spacing | No | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses a key behavior (does nothing when auto-layout is disabled) and implies it modifies node positions, but it does not mention whether the layout is destructive, reversible, or affects all children. Lacks details on side effects or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: a one-sentence purpose, a conditional note, and a structured args list. Every element earns its place, with the purpose front-loaded. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the essential purpose and parameters. It includes the critical env-var condition. It does not mention return values or prerequisites, but for a straightforward layout tool this is nearly 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 explicitly explains both parameters: parent_path as 'Parent network path' and spacing as 'Spacing multiplier between nodes', adding meaning beyond the schema's type-only definitions. This is adequate though terse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Auto-layout children of a network node' โ a clear verb and resource. It distinguishes from manual node manipulation tools like move_node or set_node_position, though it does not detail what 'layout' entails beyond arranging children.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 guidance is the conditional note about the FXHOUDINIMCP_AUTO_LAYOUT=0 env variable, which tells when it does nothing. It does not explicitly state when to prefer this tool over alternatives like manual positioning, nor provide exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_parametersA
Create a channel reference from one parameter to another.
The destination gets an HScript expression that reads the source as its own type: chs() for a String parameter, ch() for numbers, toggles and menus. The path is relative to the destination node (chs("../CTRL/mat")), so the link survives moving the pair, collapsing into a subnet or instancing an HDA. The reply carries the expression, the function used and the destination's evaluated value.
Args: source_path: Source node path. source_parm: Source parameter name. dest_path: Destination node path. dest_parm: Destination parameter name.
| Name | Required | Description | Default |
|---|---|---|---|
| dest_parm | Yes | ||
| dest_path | Yes | ||
| source_parm | Yes | ||
| source_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the destination receives an HScript expression using chs() or ch(), that the path is relative to the destination node, that the link survives restructuring, and that the reply contains the expression, function, and evaluated value. It does not mention overwriting existing destination values or failure modes, but the main behavioral contract 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?
The description is compact and well-structured: a purpose sentence, a mechanism/behavior explanation, a return-value sentence, and a small Args list. Every sentence adds value, and 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?
Given that there is no output schema, it is good that the description explicitly mentions what the reply contains. The mutation-type side effect is also described concretely. However, it does not specify error behavior, node/parameter existence prerequisites, or the exact response shape, so the description is solid but not fully exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 missing parameter documentation. The Args list maps all four parameters to their roles ('Source node path', 'Source parameter name', etc.), which is useful but mostly restates the parameter names. It does not provide syntax details such as expected path formats, absolute vs relative paths, or parameter naming conventions, leaving 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 first sentence clearly states a specific verb and resource: 'Create a channel reference from one parameter to another.' The following sentences clarify what that means in Houdini terms (HScript expression, type-dependent function, relative paths), making the purpose unmistakable. It does not explicitly contrast with siblings like set_expression or get_parm_references, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when you want to link two parameters via a channel reference. It also explains behavioral consequences such as relative path resolution and surviving subnets/HDAs, which helps an agent decide if this tool is appropriate. However, it does not explicitly mention when not to use it or when to prefer an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cachesC
List all cache-type nodes under a root path.
Args: ctx: MCP context. root_path: Root path to search from.
| Name | Required | Description | Default |
|---|---|---|---|
| root_path | No | / |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't disclose whether this is a read-only operation, whether it recursively searches, what happens with invalid root paths, or what the return format looks like. The description is minimal and leaves behavioral traits undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. The Args section is minimal but not bloated. 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?
For a tool with no output schema and no annotations, the description is thin. It doesn't explain what 'cache-type nodes' means, how results are returned, or how this relates to other cache tools like get_cache_status, clear_cache, or write_cache. An agent would need 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. It mentions root_path in the Args section but only restates the schema's 'Root path to search from' without adding format, default behavior, or examples. The default '/' is in the schema but not explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('all cache-type nodes under a root path'), which clearly identifies the operation. It doesn't explicitly distinguish from siblings like list_lights or list_children, but the cache-type qualifier provides enough specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It doesn't mention that list_children or find_nodes might be more appropriate for general node listing, nor does it explain the context for cache-type nodes. The usage context is only implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_childrenA
List children of a network node.
Avoid recursive=True on large networks โ it can return hundreds or
thousands of nodes. Prefer find_nodes with a specific pattern instead.
Args: ctx: MCP context. parent_path: Parent network path. recursive: Include all descendants (use sparingly on large scenes). filter_type: Node type filter (e.g. 'box', 'merge').
| Name | Required | Description | Default |
|---|---|---|---|
| recursive | No | ||
| filter_type | No | ||
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that recursive can return many nodes and advises sparing use, which is valuable behavioral context. However, it does not explicitly state the return format (e.g., list of paths or names), nor whether it is strictly read-only, though that is implied by 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, with purpose stated first, then a key warning, and parameter descriptions in a clear list. Every sentence earns its place; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation, it covers all parameters and provides critical usage guidance. It could improve by stating the return type (e.g., 'returns a list of child node paths'), but the absence of an output schema and the straightforward nature keep this from being a significant 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 provides no descriptions (coverage 0%), but the description compensates fully by explaining each parameter: parent_path, recursive with a usage warning, and filter_type with example values. This adds meaning far beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('List children of a network node') with a clear resource and scope. It differentiates from find_nodes by implying a direct child listing rather than pattern-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 warns against recursive=True on large networks and recommends find_nodes with a pattern instead, giving clear when-not-to-use guidance. Also explains the filter_type parameter with examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chop_channelsC
List all channels on a CHOP node.
Args: node_path: CHOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only operation via the word 'List' but does not disclose any side effects, permissions, error conditions, or the exact nature of the returned channels. The minimal phrasing leaves significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured: the primary action is front-loaded, and the parameter is listed in a clear format. There is no filler or redundancy, 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?
For a simple tool with one parameter and no output schema, the description covers the basic purpose but omits important context. It does not specify the output format (e.g., a list of strings vs. structured objects), how the node path is resolved, or any edge cases. Additionally, it lacks any relation to sibling CHOP tools, leaving an incomplete picture 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?
With schema description coverage at 0%, the description must compensate for missing parameter details. It provides 'node_path: CHOP node path.', which clarifies the parameter's role and type beyond the schema's title 'Node Path'. However, it lacks format specifications (e.g., absolute vs relative path, separators) or any validation notes, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'List all channels on a CHOP node.' The verb and object are clear, and it is distinguishable from siblings like get_chop_data which likely return actual data values rather than just channel identifiers. However, it doesn't explicitly specify whether it returns channel names or full channel metadata, so it falls just 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 given on when to use this tool versus alternatives. Sibling tools like get_chop_data, create_chop_node, and get_parameter exist, but the description does not mention any conditions or comparisons. An agent has no information to decide if this is the right tool for a given task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cop_node_typesA
List available COP node types.
Args: filter: Substring filter for node type names.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description's 'List' verb implies a read-only operation, which adds basic behavioral context. However, it does not disclose output format, pagination, error behavior, or whether the list reflects only currently available/installed node types, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loaded with the core purpose, and contains no filler. The parameter note is brief and useful, making every element earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description covers the essential calling context: what it lists and how to filter. It does not detail the return shape, but the verb 'List' sufficiently implies a list of node type names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no description for the 'filter' parameter, but the description compensates by explaining it as a 'Substring filter for node type names.' This adds meaningful semantics beyond the schema and is sufficient for the single optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List available COP node types.' It clearly identifies what the tool does, and the 'COP' qualifier differentiates it from the generic sibling list_node_types, though it does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_node_types or other context-specific list tools. Usage is only implied by the tool's purpose, with no exclusions or situational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dop_objectsB
List all DOP objects in a simulation.
Args: node_path: DOP network node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'List' implies a read-only operation scrap no explicit statement that the simulation is not modified, and no mention of what is returned or how errors are handled. This is minimally sufficient for a simple listing tool but lacks richer 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 front-loaded with the purpose and includes a compact Args section with no redundant prose. It earns its place, though the formatting includes a blank line and the parameter documentation could be embedded more tightly. Still, it is appropriately sized for a one-parameter read-only 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 has one required parameter directly documented-labore no output schema or annotations, the definition is callable but incomplete. It does not state what the returned value looks like, whether it returns object names, paths, or handles, or how this tool relates to get_dop_object and get_dop_field. An agent would likely need additional context to confidently use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for node_path, and schema description coverage is 0%, so the description must compensate. The line 'node_path: DOP network node path' adds the key clarification that the parameter refers to a DOP network node path, which is useful beyond the schema title 'Node Path.' However, it does not provide examples, path format expectations, or what node types are valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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: 'List all DOP objects in a simulation.' This clearly identifies the operation's scope and differentiates it from sibling tools like get_dop_object, which suggests fetching a single object. It stops short of a 5 because it does not explicitly contrast itself with related DOP tools like get_dop_relationships or get_dop_field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention sibling tools such as get_dop_object, get_dop_relationships, or get_simulation_info, nor does it state what kind of node_path is required or what scenario warrants listing all DOP objects. An agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hda_versionsB
Every installed definition of an HDA node's type: version, file, which is current.
Args: ctx: MCP context. node_path: An HDA instance.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It conveys that the operation examines installed definitions and reveals the output dimensions (version, file, current), but it does not explicitly state that the operation is read-only, describe failure behavior, or clarify what 'current' 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 short and front-loaded, with no filler words. The output-relevant information appears first and the argument documentation is minimal, though the missing verb makes the main sentence slightly less polished.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 list operation, the description covers the main return values but not edge cases, error behavior, or how the result relates to the HDA's installed versions. The absence of an output schema and annotations means a bit more context would be needed for a fully self-sufficient 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 schema provides only the parameter name and title 'Node Path' with 0% description coverage. The description adds a minimal semantic by saying node_path is 'An HDA instance,' which is useful but vague and does not clarify the expected path format or how the HDA type is resolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states what is returned: every installed definition of an HDA node's type, including version, file, and which is current. It lacks an explicit verb like 'lists' and does not explicitly contrast itself with sibling tools such as list_installed_hdas or get_hda_info, but it is specific enough to identify the resource and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like list_installed_hdas or get_hda_info. It only documents the arguments, so the agent must infer the appropriate context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_installed_hdasB
List all installed HDA files and their definitions.
Args: ctx: MCP context. filter: Substring filter for type names or file paths.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool lists installed HDA files and their definitions, which is a read-only operation, but it doesn't disclose whether the list is sorted, whether it includes built-in versus user HDAs, whether it triggers a cook or scan, or what the return structure looks like. The description is minimal and leaves the agent without important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose in the first sentence. The Args section is minimal and directly relevant. It earns its place by documenting the filter parameter, which is the only parameter. No wasted words, though the 'ctx: MCP context' line is boilerplate that adds little value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is mostly adequate. However, it lacks information about the return format (e.g., list of names, paths, definitions), which an agent would need to use the results. It also doesn't mention whether the tool is read-only or whether it requires a specific context. Given the simplicity, a 3 is appropriate โ it's usable 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 0%, so the description must compensate for the undocumented 'filter' parameter. The description does add meaning by saying 'Substring filter for type names or file paths,' which clarifies the parameter's purpose and acceptable values. However, it doesn't specify case sensitivity, matching behavior, or whether the filter applies to both type names and file paths simultaneously. The baseline is 3 because the description adds some value beyond the schema, but not comprehensive semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List all installed HDA files and their definitions.' This distinguishes it from related HDA tools like install_hda, uninstall_hda, reload_hda, and get_hda_info. However, it doesn't explicitly differentiate itself from list_hda_versions, which could be a sibling with overlapping 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 implies usage by naming the operation and the optional filter, but it doesn't explicitly state when to use this tool versus alternatives like list_hda_versions or get_hda_info. There is no exclusion guidance or mention of prerequisites, so the agent must infer the appropriate context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lightsC
List all USD lights on a LOP stage.
Args: node_path: LOP node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only listing operation but does not explicitly state that it is non-destructive, nor does it describe the return format (e.g., list of light paths or objects), error handling, or what 'all' means in a multi-layer stage. This is minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded with the main purpose. It wastes no words and is structured clearly with an Args section. It is appropriately concise for a simple tool, though it sacrifices needed 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 no output schema and no annotations, the description is insufficient. It does not explain what the returned data looks like, whether it includes properties or just paths, or any caveats about node validity. An agent would struggle to consume the result reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does mention 'node_path: LOP node path', which gives a basic meaning beyond the schema's bare type, but it lacks detail about path format, validity, or default behavior. This is a marginal improvement 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 ('List'), resource ('USD lights'), and scope ('on a LOP stage'). It clearly distinguishes this from generic list tools like list_usd_prims by specifying 'lights' and the stage 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?
No guidance is given on when to use this tool versus alternatives. There is no mention of exclusions, prerequisites, or comparison to other light-related tools like create_light or list_usd_prims. The agent must infer its niche.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsC
List all material nodes under a root path.
Args: ctx: MCP context. root_path: Root path to search for materials.
| Name | Required | Description | Default |
|---|---|---|---|
| root_path | No | /mat |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It only says 'List all material nodes under a root path' and provides no information about side effects (whether read-only), return format, error behavior, or performance. It does not even state that it is a read operation, leaving the agent to infer safety. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the main purpose appears in the first sentence, and the Args section is clearly structured. There is no redundant text. However, it is under-specified, which is a content issue rather than a conciseness issue; the structure itself is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (list materials under a path), but the description lacks essential context: it does not specify the return value (list of paths? names? objects?), whether the result is ordered, or what happens when no materials are found. With no output schema and no annotations, the agent is left with minimal information to interpret results or handle edge cases. The description is incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines root_path as 'Root path to search for materials,' which adds basic meaning beyond the schema's name, but it does not explain the expected format (e.g., Houdini path syntax), whether wildcards are allowed, or how the default '/mat' is used. The mention of 'ctx' in Args is also not in the schema, adding ambiguity. The description provides minimal 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 states a clear verb+resource: 'List all material nodes under a root path.' This distinguishes it from create_material (creation) and assign_material (assignment), and from get_material_info (querying a specific material). However, it does not explicitly contrast with other listing tools like list_material_types or get_usd_materials, 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?
No guidance is given on when to use this tool versus alternatives. The description does not mention any conditions, prerequisites, or exclusions, nor does it reference sibling tools. An agent has no information about when this tool is preferred over other listing options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_material_typesA
List available VOP/material node types.
Args: ctx: MCP context. filter: Substring to filter type names and labels by.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states that the tool 'lists' types, which implies a read-only, non-destructive operationton. However, it does not mention any side effects, potential scene cooking, or what exact information is returned. For a simple listing tool this is adequate, but not exceptionally 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 extremely concise: a single purpose sentence followed by a clear Args section for the parameter. Every sentence earns its place, with no filler or redundant information. The structure front-loads the core purpose and then provides parameter 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 tool with one optional parameter and no output schema, the description is adequate for an agent to decide to invoke it. It covers the action and the filter's meaning. However, it does not mention the return format or any output details, which could help an agent anticipate the result. Given the simplicity, this is a minor gap rather than a critical 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?
The schema provides no descriptions for the filter parameter (0% coverage), so the description must compensate. The line 'Substring to filter type names and labels by' adds concrete meaning about the parameter's purpose, going beyond the schema's type and default. This is sufficient for an agent to use the filter correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'VOP/material node types,' which is a specific domain distinct from general-purpose tools like list_node_types or list_cop_node_types. This lets an agent immediately understand what the tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives or any conditions and exclusions. The intended usage is implied by the name and description, but no direct contrast with siblings like list_node_types or list_materials is given, leaving the agent to infer the selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_node_typesA
List available node types for a context category.
IMPORTANT: Any context can have hundreds of node types (SOPs alone can
exceed 800 in a production install). Always pass a filter keyword
(e.g. 'mountain', 'scatter', 'boolean') instead of dumping the full list
โ the unfiltered response is capped at limit and may still be large.
Args: ctx: MCP context. context: Category name (e.g. 'Sop', 'Lop', 'Dop', 'Top', 'Cop2'). filter: Substring to filter type name or label (case-insensitive). limit: Max entries to return (default 200, max recommended 200).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No | ||
| context | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly warns that unfiltered responses are capped at 'limit' and can still be large, and it recommends filtering. This is valuable behavioral context beyond the schema. It does not state read-only semantics, but 'list' implies that, and the response-size disclosure is a strong addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient and well-structured. The critical warning about using filter is front-loaded with 'IMPORTANT,' followed by a clear Args section. Every sentence provides necessary information, and there is no fluff. The format is easy to scan and directly actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a listing tool with no output schema, the description adequately covers the parameters, the risk of large responses, and the need for filtering. It does not explicitly describe the return format (e.g., list of names/labels), but that is implied by 'List available node types.' The absence of output schema is not a gap because the tool is simple. It is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions (coverage 0%), so the description must compensate. It explains each parameter in detail: 'context' with examples, 'filter' as a case-insensitive substring, and 'limit' with default and recommended maximum. This adds substantial meaning beyond the bare schema fields and ensures an agent understands how to use them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List available node types for a context category,' which is a specific verb+resource. It distinguishes the general scope from specialized siblings like list_cop_node_types or list_material_types, but it does not explicitly name them or contrast them. The purpose is unambiguous and easy for an agent to grasp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 strong guidance on how to use the filter parameter to avoid large responses ('Always pass a filter keyword'), which is a usage guideline for calling this tool. However, it does not mention when to choose this tool over similar siblings (e.g., list_cop_node_types) or any exclusions. It gives practical call advice but lacks alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_panesA
List all visible pane tabs in the Houdini UI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The verb 'List' signals a read-only behavior, and 'all visible pane tabs' scopes the behavior. However, it does not explicitly disclose side effects, visibility semantics, or what information about the pane tabs is included, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise, front-loaded with a clear action and object, and contains no filler. Every word contributes to understanding the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero-parameter schema and low complexity, the description is nearly complete for selecting and invoking the tool. It could mention what is returned or the exact scope of 'visible,' but the current text is adequate for a trivial list 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 tool has zero parameters, so the schema is fully exhausted and the description adds no additional parameter semantics. Per the baseline for 0-parameter tools, the description does not need to compensate for schema gaps, and this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a precise resource ('all visible pane tabs in the Houdini UI'), making the tool's function immediately clear. This also distinguishes it from sibling tools like list_lights or list_materials by naming the exact UI object being enumerated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for querying visible Houdini UI pane tabs, but it offers no explicit guidance about when to use it versus alternatives or when it would not be appropriate. For a simple read-only list tool, this implied context is adequate but not enriched.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_render_nodesA
List all render (ROP/Driver) nodes in the scene.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly signals a read-only listing operation, but it does not reveal what the returned data looks like, whether both ROP and Driver nodes are returned as the same type, or whether the list covers nested/network-level nodes.
Agents need to know what a tool does to the world before calling 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 that front-loads the verb, resource type, and scope. The parenthetical 'ROP/Driver' adds useful domain clarification 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 parameterless, read-only list tool, the description is largely complete: it names the resource, the scene scope, and the action. The main gap is the lack of any statement about the return format, but no output schema exists and the operation is simple enough that this 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?
The tool takes zero parameters, so there is no parameter meaning to compensate for. The schema already exhaustively documents an empty parameter set, and the description need not add anything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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') plus a well-defined resource ('render (ROP/Driver) nodes') and scope ('in the scene'). This distinguishes it clearly from siblings like create_render_node and get_render_settings, which either create render nodes or read settings rather than listing existing nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to choose this tool over alternatives, and does not mention exclusions or related tools. It simply states the action, leaving the agent to infer the appropriate context without support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shelf_toolsA
Find shelf tools by name, label or keyword.
Use this when a setup exists as a shelf tool rather than as a node: oceans, quick sims, rigging setups. A full install ships around 8,000 of them, so always filter.
Args: filter: Substring matched against name, label and keywords. limit: Maximum tools to return.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It implies a read-only listing operation through 'Find' and warns about the large library ('A full install ships around 8,000 of them, so always filter'). It does not explicitly state that it does not execute the shelf tool, describe output format, or cover auth/rate considerations, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tight and front-loaded: the one-line purpose is followed by usage context and then a compact Args section. Every sentence earns its place, and there is no redundant information 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?
The description provides enough to invoke the tool with correct filtering and limiting, but it does not describe the shape of the returned data or whether results are names, paths, or structured objects. Since there is no output schema and no annotations, those details would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args section adds meaning beyond the schema: 'filter' is a substring matched against name, label, and keywords, and 'limit' is the maximum tools to return. This is helpful and maps clearly to the two parameters, though it could offer examples of substring syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Find shelf tools by name, label or keyword.' It also distinguishes this tool from node-based tools by explicitly saying it is for when a setup exists as a shelf tool rather than as a node, which clearly separates it from many node-related 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 provides clear usage context: use this when the setup is a shelf tool rather than a node, with examples ('oceans, quick sims, rigging setups'). It also gives an operational guideline ('always filter') due to scale. However, it does not explicitly name alternatives like get_shelf_tool_script or run_shelf_tool, nor state when not to use it beyond the node contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_takesA
List all takes in the scene with their hierarchy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden. It does disclose the core behaviorโlisting takes and including hierarchyโbut it does not mention return formatting, ordering, or what happens when no takes exist. For a simple read-only list tool, this is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler: 'List all takes in the scene with their hierarchy.' Every word provides 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 parameterless listing tool, the description covers the essential context: scope, subject matter, and hierarchy shape. Because there is no output schema, a bit more detail about the return shape would help, but the current wording is still sufficient for an agent to understand what will happen.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description correctly adds no parameter-specific semantics. The input schema is empty and complete, making additional parameter explanation unnecessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'List all takes in the scene with their hierarchy.' This clearly identifies both the action and the returned structure and differentiates it from sibling tools like get_current_take or create_take.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is given about when to choose this tool over alternatives such as get_current_take or set_current_take. The intended use is implied by the name and phrasing, but there are no explicit when-to-use or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usd_primsB
List USD prims on a stage with filtering.
Args: node_path: LOP node path. root_path: Root prim path to list from. prim_type: USD type filter (e.g. "Mesh", "Xform"). kind: Kind filter (e.g. "component", "group"). depth: Max traversal depth.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| depth | No | ||
| node_path | Yes | ||
| prim_type | No | ||
| root_path | No | / |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, but it never explicitly states that this is a read-only, non-mutating operation. It also omits what the result contains, what happens on errors, and how the filters combine during traversal. The phrase 'List ... with filtering' implies basic behavior without actually specifying the behavioral contract beyond the parameter list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded, and entirely scannable: one action sentence followed by a tightly formatted parameter list. No sentence is redundant, and no unnecessary context is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 5 parameters, the definition needs at least a statement of return format and expected traversal/filtering behavior to be complete enough for reliable invocation. The strong parameter semantics support usage but do not fill the gap around what the tool returns or what stage state is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the Args block supplies a meaningful one-line semantic for every parameter, including examples for prim_type and kind and a clear explanation of depth. This fully compensates for the typed schema, which only provides names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening phrase states a concrete action ('List') and a specific resource ('USD prims on a stage') plus a filtering scope. It clearly distinguishes it from mutation and parameter-focused tools in the sibling list. It does not explicitly contrast it with similarly named siblings like find_usd_prims or get_usd_prim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 favor this tool over alternatives such as find_usd_prims or get_usd_prim. There are no prerequisites, exclusion conditions, or alternative-selection hints. With a large sibling list full of USD inspection tools, the correct choice 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.
load_sceneA
Open a Houdini hip file, or merge it โ or named nodes from it โ into the current scene.
Load warnings (missing assets and the like) come back in warnings.
A merge reports what arrived: merged_nodes, conflicts (a node that
already exists is merged under a new name, or overwritten in place with
overwrite_on_conflict=True) and not_found_in_file. node_paths are
absolute (/obj/building_v3) and bring their contents.
Args: file_path: Path to the hip file to open. merge: Merge into the current scene instead of replacing it. node_paths: With merge, the absolute node paths to merge; default everything. overwrite_on_conflict: With merge, overwrite same-named nodes instead of renaming the merged copy.
| Name | Required | Description | Default |
|---|---|---|---|
| merge | No | ||
| file_path | Yes | ||
| node_paths | No | ||
| overwrite_on_conflict | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and covers it well: it discloses that opening replaces the scene, that merges report merged_nodes/conflicts/not_found_in_file, how conflicts are resolved via overwrite_on_conflict, and that node_paths are absolute and bring their contents. This gives an agent a clear picture of side effects and return data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the primary purpose, followed by return/behavioral details in prose, then a clear Args list. Every sentence contributes useful information without redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and four interdependent parameters, this description is complete: it documents the operation modes, parameter semantics, conflict behavior, and return values. An agent has everything needed to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain all parameters, and it does thoroughly: file_path, merge behavior, node_paths defaulting to everything, and overwrite_on_conflict semantics. It adds meaning far beyond the bare 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?
Description uses a specific verb ('Open') and resource ('Houdini hip file'), then immediately clarifies the two modes: replace the current scene or merge into it. It distinguishes itself from related tools like new_scene, save_scene, and import_file by explicitly stating the replace-vs-merge distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use load_scene in either mode, including the effect of merge and node_paths. It does not explicitly name sibling alternatives or state when not to use this tool, but the behavioral context is sufficient for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_parameterA
Lock or unlock a parameter.
Args: node_path: Node path. parm_name: Parameter name. locked: True to lock, False to unlock.
| Name | Required | Description | Default |
|---|---|---|---|
| locked | Yes | ||
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the core behavior (toggling lock state based on the 'locked' flag), but it does not mention side effects, error behavior, return values, or whether the operation is reversible. The description is not misleading, but it adds little beyond the immediate 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 compact and front-loaded, with the core action stated first and parameter meanings listed clearly. Every line contributes useful information, and there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool, the description covers the parameters and the action, but it omits expected string formats, whether the operation returns a value, and how failures (e.g., invalid node path) are reported. Given no output schema or annotations, these omissions leave the agent with some uncertainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 repeats 'node_path' and 'parm_name' almost verbatim from the schema titles, but it does add meaningful semantics for 'locked': 'True to lock, False to unlock.' However, it does not explain expected formats for node_path or parm_name, such as '/obj/geo1' or 'tx'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Lock or unlock a parameter') and clearly identifies the operation. It distinguishes itself from siblings like set_parameter and set_parameters by focusing specifically on the lock state rather than value assignment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as set_parameter, link_parameters, or revert_parameter. No prerequisites, exclusions, or contextual conditions are mentioned, 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.
log_statusA
Display a status message in Houdini's status bar.
Call this at the START of every major step so the user can follow along in real time without having to inspect tool call logs. Examples: "Creating base geometry...", "Wiring SOP chain...", "Setting up pyro simulation...", "Assigning materials...".
Args: message: Status message to display (keep it short and human-readable). severity: "message" (default), "important", "warning", or "error".
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| severity | No | message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the tool's behavior (displaying a status message) and provides severity levels, but doesn't disclose additional behavioral traits like whether it blocks execution, how long messages persist, or if it requires an active Houdini session. With no annotations provided, the description carries the burden but doesn't fully disclose all behavioral 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 concise and well-structured. It front-loads the core purpose, then provides usage guidance and parameter details in a clear, scannable format. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple logging tool with 2 parameters and no output schema, the description is nearly complete. It covers purpose, usage timing, examples, and parameter semantics. The only minor gap is not specifying whether the tool returns anything or if there are side effects beyond displaying the message.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 this well by explaining the 'message' parameter (status message to display, keep it short and human-readable) and the 'severity' parameter with its allowed values and default. This adds meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: displaying a status message in Houdini's status bar. It uses a specific verb ('Display') and resource ('status bar'), and provides concrete examples of when to use it, making it easy to distinguish from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call this at the START of every major step, providing clear usage context. It also gives examples of appropriate messages, which helps the agent understand when and how to use this tool effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_nodeC
Move a node to a different parent network.
Args: ctx: MCP context. node_path: Node path. dest_parent: Destination parent path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| dest_parent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not explain whether moving a node preserves its connections, whether it is destructive (e.g., could break references), or what happens to internal links. The behavior is not disclosed beyond the basic move operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear one-line summary followed by an Args block. It is front-loaded with the action, and each sentence earns its place. The Args block is minimal but does not waste 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 tool with no output schema and no annotations, the description is under-specified. It lacks info on return values, error conditions, and behavioral consequences (e.g., is the move atomic? does it affect descendants?). An agent needs more to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'node_path' and 'dest_parent' with brief descriptions, which adds minimal meaning beyond the schema, but it does not define the format (e.g., full path vs relative) or constraints. The baseline is low due to zero coverage, but the description adds only marginal 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 ('Move a node to a different parent network') with a specific verb and resource, and it mentions the key parameters (node_path, dest_parent). It is distinguishable from siblings like 'copy_node' and 'rename_node' based on the verb, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., copy_node for duplicating vs moving). It does not mention any prerequisites or restrictions, such as whether the destination must exist or whether moving affects connections. The context is clear only as an operation, but no alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_sceneA
Create a new empty Houdini scene.
Args: save_current: Save the current scene before clearing.
| Name | Required | Description | Default |
|---|---|---|---|
| save_current | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the destructive nature of the tool through 'before clearing' and offers the save_current safeguard. However, it does not explicitly state that the current scene is cleared without recovery or what happens to unsaved changes when save_current is false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: a one-line purpose and a one-line argument explanation. No filler, extraneous examples, or repetition of schema types. The main action is front-loaded, and the parameter detail is placed after, 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?
For a tool with a single optional parameter and no output schema, this description is largely sufficient. It covers the core action and the main side-effect (clearing) with a mitigation option. A small gap is the missing explicit statement that the current scene is replaced, but the phrase 'before clearing' strongly implies it, so this is only 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?
The schema provides no parameter descriptions, so the description compensates fully. 'Save the current scene before clearing' gives clear, actionable meaning to save_current, explaining what the boolean controls and its effect on behavior. This is exactly the kind of semantic clarity an agent needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a new empty Houdini scene.' This clearly differentiates it from siblings like save_scene, load_scene, and import_file, which operate on existing or external scenes. The wording is unambiguous about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as load_scene or import_file. The description does not mention typical use cases, prerequisites, or conditions where a different tool would be preferred. The only context is the 'before clearing' phrase, which implies a reset but is not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_top_cookC
Pause cooking on a TOP network.
Args: ctx: MCP context. node_path: TOP node or TOPnet path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the cook can be resumed, whether an in-progress cook is required, or what side effects the pause has on work items. Only the basic verb 'Pause' 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 core sentence 'Pause cooking on a TOP network.' is concise and front-loaded. The line for node_path adds useful parameter context, though the generic 'ctx: MCP context.' boilerplate adds little value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter action, the description is minimally viable: it states the operation and the parameter target. However, it lacks behavioral nuance and alternative-tool context, leaving gaps around resumability and comparison to cancel_top_cook.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the bare node_path string property. The Args block does add some meaning by noting node_path can be 'a TOP node or TOPnet path, but it remains vague about path syntax and format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Pause cooking on a TOP network.' While it clearly states the action and target, it does not explicitly distinguish itself from the related sibling cancel_top_cook, 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 use pause_top_cook instead of cancel_top_cook or other TOP-related tools. The description only restates the action without giving usage conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playbar_controlB
Control playback: play, stop, or reverse.
Args: action: One of "play", "stop", or "reverse". real_time: Enable or disable real-time playback. fps: Frames per second.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| action | Yes | ||
| real_time | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only lists argument meanings. It doesn't disclose side effects (e.g., whether reverse changes direction or jumps), state changes to current playback, or reversibility of actionsโimportant for a mutating control 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?
Description is two lines of purpose followed by a tight Args block; no filler. It is front-loaded with the core action set and each parameter earns its line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 no output schema, the action values and parameter meanings are largely sufficient. However, it omits default behavior of optional params and any notes on playback state effects, so an agent's understanding 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 coverage is 0%, so the description compensates by defining all three parameters: action values, real_time enable/disable, and fps as frames per second. It doesn't document null defaults or relationships (e.g., whether fps applies only in real-time), keeping this from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: 'Control playback' with enumerated actions play/stop/reverse. This makes its scope clear against siblings like set_frame and set_playback_range, though it doesn't explicitly name the 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 description of when to choose playbar_control over set_frame, set_frame_range, set_playback_range, or other playback-related tools. It gives no prerequisites, exclusions, or alternative routing; guidance is only implied by the action list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_buttonA
Press a button parameter โ "Stash Input", "Reload Geometry", an asset's own Build button โ and read the node's errors and warnings afterwards.
The call holds until the callback returns, with no deadline. A callback that opens a dialog blocks Houdini's main thread and this bridge with it; read the button's script first if in doubt. For a Save to Disk or a render use write_cache / start_render, which report a verdict.
A press usually only dirties the node, so errors/warnings are from
its last cook unless cook=True; without it needs_cook says whether
they are stale (a cook that failed leaves it True too). has_script_callback is False for built-in buttons that still
do work (File's Reload, Stash's Stash Input).
Args: node_path: Node that owns the button. parm_name: The button parameter's name. arguments: Optional kwargs handed to the callback script; values must be int, bool, float or str. cook: Cook the node after the press so errors describe the result.
| Name | Required | Description | Default |
|---|---|---|---|
| cook | No | ||
| arguments | No | ||
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits: the call holds until the callback returns with no deadline, dialog-opening callbacks block the main thread, errors/warnings are from the last cook unless cook=True, and has_script_callback is False for built-in buttons that still do work. This goes well beyond what annotations (none provided) would 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 dense but well-organized, front-loading the core action and then layering caveats. Every sentence adds value, though the paragraph on errors/warnings and has_script_callback is somewhat long and could be tightened. Still, it's efficient for the complexity it covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is remarkably complete. It covers the action, blocking behavior, error semantics, the cook parameter's effect, and the distinction between script callbacks and built-in buttons. An agent has everything needed to invoke it correctly and interpret 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 node_path (node that owns the button), parm_name (the button parameter's name), arguments (optional kwargs with type constraints), and cook (cook after press so errors describe the result). This fully covers all 4 parameters with meaning beyond the schema's bare names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool presses a button parameter on a node and reads errors/warnings afterwards, with concrete examples (Stash Input, Reload Geometry, Build). It distinguishes itself from related tools like write_cache/start_render by explicitly naming them as alternatives for Save to Disk or render actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: use write_cache/start_render for Save to Disk or render operations instead. It also warns about callbacks that open dialogs blocking Houdini's main thread, advising to read the button's script first if in doubt. This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redoA
Redo the last undone change(s) in Houdini.
Args: ctx: MCP context. steps: How many steps to redo (default 1).
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It says that redo affects the last undone changes and that steps controls how many, but it does not describe what happens when there is nothing to redo, whether the operation mutates the undo stack, or whether it can fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is one clear sentence, and the parameter description is brief and helpful. The 'ctx: MCP context' line is unnecessary and not part of the input schema, which slightly reduces structure quality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, this is mostly sufficient, but it lacks context about the undo/redo pair, the behavior on an empty redo stack, and what the tool returns or reports. Since there is no output schema, a bit more behavioral context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema has 0% description coverage, the description explains 'steps: How many steps to redo (default 1),' which gives meaningful semantics beyond the raw schema. The extra 'ctx' line is noise but not harmful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Redo') and a specific resource ('the last undone change(s) in Houdini'). It is immediately clear what the tool does and it inherently contrasts with the sibling 'undo' 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 'last undone change(s)' implies this should be used after undo operations, and the 'steps' argument implies repeated undo/redo scenarios. However, there is no explicit statement of when to use this versus the sibling 'undo', nor any exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reload_hdaC
Reload an HDA file from disk.
Args: ctx: MCP context. file_path: HDA file path.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of disclosing behavior. It only says 'Reload an HDA file from disk' and mentions the file_path argument. It does not mention what happens to existing node instances, whether the reload is synchronous, or if any side effects occur. The behavior is under-specified.
Agents need to know what a tool does to the world before calling 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 to the point, with no filler. It is appropriately sized, but it omits important details; however, conciseness is not the issue here, so a 4 is warranted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 reloads an HDA file and has no output schema or annotations, an agent needs more context: what does 'reload' do to the current scene, are there side effects, how does this differ from install/update, and does it require the HDA to be already installed? The description is too minimal to fully guide 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 only lists the parameter name 'file_path' without adding any semantics beyond the schema's bare property. The description also mentions 'ctx: MCP context' which is not in the schema, but provides no explanation of how it is used. The parameter is under-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool reloads an HDA file from disk, which is a clear verb-resource pair. However, it does not distinguish this from sibling tools like install_hda, update_hda, or create_hda, which an agent might confuse with reloading. The purpose is understandable but not unique among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention that reload is for updating an already-installed HDA after external changes, nor does it compare with install_hda or update_hda. The context of 'reload' implies an existing HDA, but this is left to the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_nodeC
Rename a node.
Args: ctx: MCP context. node_path: Node path. new_name: New node name.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether renaming affects references, whether the operation is reversible, whether it requires specific permissions, or what happens if the new name conflicts with an existing node. The description only restates the action without behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the action, but the Args section is redundant with the schema and adds no new information. It is concise but under-specified rather than efficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It does not explain return values, error conditions, naming constraints, or side effects. An agent would have to guess at the behavior beyond the basic action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists parameter names ('node_path', 'new_name') but adds no meaning beyond the schema: no format, no examples, no constraints (e.g., valid name characters, path syntax). The description adds minimal value over the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Rename a node') and lists the two required parameters. However, it does not distinguish this from sibling tools like move_node, copy_node, or delete_node, and the description is essentially a restatement of the tool name with parameter names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., node must exist), constraints (e.g., naming rules), or when a different tool like move_node or set_node_flags 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.
render_node_networkA
Capture a screenshot of a node's network editor view.
Args: node_path: Node path to focus on. output_path: Image file path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It states the core action and two parameters but does not disclose side effects like whether the network editor focus is permanently changed, whether existing files are overwritten, what happens on invalid node paths, or what the return value 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?
Front-loaded one-line purpose followed by required argument docs. No fluff and every sentence contributes necessary information. The structure is highly efficient for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, together with the two arguments, adequately covers the action and argument purpose. However, without an output schema or annotations, it leaves unspecified the return behavior (e.g., does it return the saved file path, success status, or open the file?) and does not clear whether the network editor view is changed before capture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It minimally does so: 'node_path: Node path to focus on' and 'output_path: image file path' add meaning beyond the schema's plain string types, explaining what each parameter means and the role of each. It could add file format or path syntax details but provides sufficient meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Capture a screenshot of a node's network editor view.' It clearly distinguishes itself from siblings like capture_screenshot or render_viewport by specifying the network editor and the target node focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for what to do (capture a node's network editor view) but does not explicitly mention alternatives or when not to use it. It's implied, but no exclusions or sibling routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_quad_viewA
Capture all four viewport panes to separate images.
Args: output_path: Base image path; viewport names are appended. resolution: [width, height] in pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| resolution | No | ||
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It clearly states that it captures all four panes to separate images and defines the output_path and resolution roles commensurate. However, it omits behavioral details like overwrite semantics, file formats, whether an active viewport is required, and what happens when resolution is null.
Agents need to know what a tool does to the world before calling 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 with front-loaded action and parameter bullets. Every sentence earns its place, with 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 2-parameter capture tool, the core function and parameter meanings are covered. However, given the lack of annotations and output schema, the description leaves gaps that could affect invocation: behavior with default resolution (null), file extension handling, and whether all four panes must exist. These omissions are noticeable but not crippling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful meaning by explaining output_path as a base path with viewport names appended, and specifying the resolution format as [width, height] in pixels. This goes beyond the bare schema property types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Capture') with a clearly scoped resource ('all four viewport panes') and destination ('separate images'). This distinguishes it from siblings like render_viewport or capture_screenshot, which are not scoped to all four panes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'all four viewport panes' implies the use case of capturing the full quad view, but there is no explicit when-to-use guidance or mention of alternatives. The agent can infer the usage context but is not given a clear decision rule against other capture tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_viewportA
Capture the current 3D viewport to an image file.
Args: output_path: Image file path. resolution: [width, height] in pixels. camera: Camera node path. settle_seconds: Wait this long before capturing, without blocking Houdini, so a Karma viewport can converge after a change. Use this instead of a shell sleep between calls. Capped at 120.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | No | ||
| resolution | No | ||
| output_path | Yes | ||
| settle_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden. It discloses that settle_seconds waits 'without blocking Houdini' and is 'Capped at 120' โ genuinely useful behavioral details that go beyond the basic action. However, it does not mention behavior for null camera/resolution or whether anything is returned, leaving some minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a one-line summary followed by a compact Args list. Every sentence serves a purpose: the summary defines the action, the Args block defines inputs, and the settle_seconds note explains a non-obvious parameter. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description covers the action, all parameter meanings, and a key behavioral caveat. It lacks explicit return-value documentation and default behaviors for null resolution/camera, but these are minor given the tool's simplicity. An agent could invoke it correctly based 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%, so the Args section is the only parameter documentation. It explains output_path as 'Image file path', resolution format '[width, height] in pixels', camera as 'Camera node path', and gives a detailed purpose-driven explanation for settle_seconds. This far exceeds the bare schema, though a note on camera's null default would make it fully complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Capture the current 3D viewport to an image file' โ a specific verb, resource, and output. This clearly distinguishes it from siblings like render_quad_view (multi-view capture) and capture_screenshot (UI-level capture). No ambiguity remains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 guidance is 'Use this instead of a shell sleep between calls' for the settle_seconds parameter, which is a sub-parameter recommendation rather than a tool-selection rule. There is no comparison to sibling capture tools (render_quad_view, capture_screenshot) or guidance on when to prefer this tool over alternatives, so an agent must infer usage from the one-line summary alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_inputsB
Reorder the input connections of a node.
Args: ctx: MCP context. node_path: Node path. new_order: New input ordering (e.g. [1, 0] swaps first two).
| Name | Required | Description | Default |
|---|---|---|---|
| new_order | Yes | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'Reorder' without disclosing side effects, validation requirements, reversibility, or whether connections are permuted in-place. This is a mutation tool, so behavioral transparency is critical; the description fails to carry that burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main action, followed by a minimal Args list. It includes useful parameter examples with no unnecessary prose, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, and while the description covers the basic parameters, it omits important operational details such as expected input ordering representation, error behavior, or whether the node must be re-cooked afterward. An agent could not safely call this tool correctly from the 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?
The description's Args list adds meaning beyond schema: it explains node_path as a path and gives an example for new_order ('[1, 0] swaps first two'), which clarifies the format and operation. It doesn't fully specify constraints like permutation validity, but it compensates for the 0% schema coverage significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action, 'reorder the input connections of a node,' which clearly identifies the tool's function and distinguishes it from connection creation or deletion siblings. It could be improved by explicitly naming the alternative tools it is not, but the verb and resource make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; it doesn't mention prerequisites, conditions for reordering, or situations where another tool (e.g., connect_nodes, disconnect_node) would be more appropriate. The agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_simulationC
Reset the simulation to its initial state.
Args: node_path: DOP network node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing side effects. It only says 'reset to its initial state,' implying mutation but not stating whether it recooks the simulation, clears caches, affects downstream nodes, or is reversible. This is a notable gap for a potentially destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a one-sentence summary followed by a simple argument note. It contains no unnecessary text, though it is too sparse to fully compensate for missing 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 has one parameter and no output schema, but it is a destructive reset operation with no annotations. The description is missing side-effect disclosure and typical usage context, such as how it differs from step_simulation or when resetting is appropriate. An agent would need to guess important behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverageages, and the description adds only 'DOP network node path' for the single node_path parameter. This provides some domain context beyond the schema's 'Node Path' title, but no format, examples, or constraints are given, leaving its meaning only partially clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('Reset') and resource ('simulation') and identifies the required DOP network node path. It clearly conveys that the tool returns a simulation to its initial state, though it does not explicitly contrast with sibling tools like step_simulation or clear_cache.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description does not mention 'use this before re-running a sim' or 'not for stepping frames'; an agent must infer usage 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.
revert_parameterB
Revert a parameter to its default value.
Args: node_path: Node path. parm_name: Parameter name.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the parameter is reverted to default, but does not mention side effects (e.g., removing expressions or overrides), permissions required, whether the operation is reversible, or what happens if the parameter is already at default. This is an incomplete disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded. It contains only a clear action sentence and a minimal parameter list, with no unnecessary words. It earns its place by being 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?
Although the tool is simple (two params, no output schema), the description lacks essential context such as the expected format for node_path, the meaning of 'revert' in Houdini (e.g., resetting to built-in default vs. clearing expressions), and any error conditions. An agent without prior Houdini knowledge would likely be uncertain how to correctly 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 schema has zero description coverage (only titles), so the description must compensate for the missing parameter information. The Args section merely repeats the parameter names ('Node path.', 'Parameter name.') without adding formats, examples, or constraints. This adds little beyond the schema titles and fails to tell the agent what a valid node_path or parm_name looks like.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('revert') and the resource ('parameter to its default value'), which is distinct from sibling tools like set_parameter or get_parameter. It unambiguously tells the agent what action is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It implies usage solely through the action word 'revert', but does not explicitly mention, for example, that it should be used instead of set_parameter when a reset to default is desired.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_shelf_toolA
Run a shelf tool and report the nodes it created.
Tools that wait for a viewport selection or a dialog (the FLIP ocean layer, collide-with, most "select the object then..." tools) are refused up front: through the bridge they would block Houdini until someone clicks. Read the recipe with get_shelf_tool_script and build the nodes with build_network instead. Tools that only create nodes run fine.
Args: tool_name: Internal tool name, from list_shelf_tools. kwargs: Overrides merged into the synthetic kwargs the script reads. parent_path: An extra network to watch for new nodes. /obj, /stage, /out, /mat and /img are always watched, because a shelf tool is free to build in more than one of them: largeOcean creates both a geo in /obj and a LOP in /stage.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | No | ||
| tool_name | Yes | ||
| parent_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden, and it discloses substantial behavioral detail: the up-front refusal, the blocking hazard, the always-watched networks, and how kwargs are merged into synthetic kwargs. It also explains why multiple networks are watched, using largeOcean as a concrete example.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence delivers the core purpose, the warning paragraph is dense but necessary, and the Args list is compact and directly actionable. There is no filler or redundant restatement of schema 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 side-effecting execution tool with no annotations and no output schema, this is quite complete: it covers purpose, failure modes, alternatives, watched networks, and parameter roles. The only gap is that it does not specify the exact return shape of the node report beyond 'report the nodes it created.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description documents all three parameters with meaningful semantics: tool_name is the internal name from list_shelf_tools, kwargs are overrides merged into the synthetic kwargs, and parent_path is an extra network to watch beyond the always-watched defaults. This fully compensates for the empty schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action ('Run a shelf tool') and its outcome ('report the nodes it created'), which clearly identifies the tool's function. It also differentiates it from siblings like get_shelf_tool_script and build_network by explaining which kinds of shelf tools are refused and why.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 not to use the tool: shelf tools that wait for viewport selection or dialogs are refused up front because they would block Houdini. It then names the alternative path โ read the recipe with get_shelf_tool_script and build with build_network โ and confirms that node-creating tools run fine.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sample_geometryC
Sample evenly distributed points from a SOP node's geometry.
Args: node_path: Node path. sample_count: Number of points to sample. seed: Random seed.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| node_path | Yes | ||
| sample_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It simply states the action without any detail on side effects, prerequisites (e.g., node existence or cooking behavior), or read-only guarantees. The description adds minimal insight beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose followed by a clean Args list. There is no redundant prose, and the essential information is front-loaded. It could benefit from a slightly more formal formatting, but it is concise 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 simple sampling tool with only three parameters, the description covers the basics. However, it omits any mention of return value/format (no output schema exists) and does not clarify edge cases (e.g., behavior when node_path is invalid or sample_count exceeds geometry size). This is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section gives one-line meanings for each parameter, which adds some value over the schema (which has zero descriptions). However, the explanations are terseโ'Node path' and 'Number of points'โleaving questions about format, units, or constraints unanswered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states an action ('Sample evenly distributed points') on a specific resource ('a SOP node's geometry'). It is distinguishable from sibling tools like get_points or get_geometry_info by its emphasis on even distribution, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of preferred contexts, limitations, or exclusions. An agent would have to infer when sampling is appropriate without help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_sceneB
Save the current Houdini scene to disk.
Args: file_path: Destination path; defaults to the current hip file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states the basic save action and default path, without mentioning whether the operation overwrites an existing file, what happens if no current hip file exists, or that saving to disk is a lasting, potentially destructive side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact lines front-load the main action and then clarify the one parameter. There is no filler, no repeated schema information, and no 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 one-parameter tool, the description covers the core invocation and default behavior, making it minimally viable. However, with no annotations and no output schema, edge-case behavior such as missing current hip file, overwrite semantics, and success/failure feedback remain undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema gives only a nullable string parameter with no description, so the description's 'file_path: Destination path; defaults to the current hip file' is the sole source of parameter meaning. It fully explains the purpose and default of the single parameter, though it could add path format or extension constraints for a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening phrase 'Save the current Houdini scene to disk' uses a specific verb and identifies both the resource and the side effect, making the action unmistakable. It does not explicitly differentiate from related siblings such as export_file or write_cache, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance for when to choose save_scene over nearby alternatives such as export_file, write_cache, load_scene, or new_scene. The only contextual hint is the file_path defaulting to the current hip file, which explains default behavior rather than selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_helpA
Search the running Houdini's own documentation โ concepts, workflows, VEX functions, expression functions, HOM API, and every effects manual SideFX ships. Version-exact, straight from the install.
Use this BEFORE improvising: when unsure how a workflow is meant to be done ("pyro shaping", "vellum constraints"), what a VEX or expression function does, or what a Solaris/TOPs concept means. Follow up with get_help_page on a result path.
Args: query: Search words (all must match a page). scope: Optional corpus, named after the archive. Every help archive in the install is searchable, which on a full 22.0 is 47 of them. The ones worth knowing by name: "nodes", "vex", "expressions", "hom", "solaris", "tops", plus the workflow manuals "pyro", "fluid", "vellum", "destruction", "grains", "crowds", "model", "copy", "assets", "render", "shade", "anim", "character", "ref", "shelf". Omit to search all. limit: Max results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| scope | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does so well: it discloses that all query words must match, that scope is a corpus named after the install archive, that the search is version-exact, and that results are result paths usable with get_help_page. It doesn't explicitly confirm non-mutating behavior or describe result ordering/pagination, but 'search' plus the local-documentation framing makes this largely 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 longer than average but well-structured: purpose first, usage guidance second, follow-up chain, then an Args section. Most sentences earn their place, especially the scope parameter explanation. It is slightly expansive in enumerating manual categories, but that reinforces the tool's breadth without becoming filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, yet the description compensates by indicating what a result yields ('a result path') and how to continue with get_help_page. It also explains the scope model and when to invoke the tool. Missing explicit return-format details and pagination are minor gaps for a search tool that is otherwise well contextualized.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does. 'query' is explained as search words that all must match, 'scope' is given a meaningful corpus model with named examples, and 'limit' is described as max results. This adds real semantic value beyond the bare schema, though scope could have been more exhaustive about valid archive 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 opens with a specific verb-resource pair: 'Search the running Houdini's own documentation' and enumerates the covered domains (VEX, expressions, HOM, effects manuals). It is clearly distinct from sibling get_help_page by framing itself as a search step and explicitly directing follow-up to get_help_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use this BEFORE improvising' and lists concrete scenarios like unsure workflows, VEX/expression functions, or Solaris/TOPs concepts. It names get_help_page as a follow-up, but does not explicitly state when NOT to use this tool or how it compares to get_workflow_guide, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cop_flagsB
Set flags on a COP node.
Args: node_path: Path to the COP node. display: Display flag state. export_flag: Render/export flag state. compress: Compress flag state.
| Name | Required | Description | Default |
|---|---|---|---|
| display | No | ||
| compress | No | ||
| node_path | Yes | ||
| export_flag | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that flags are set and lists parameter meanings, without explaining null semantics (whether omitted flags are left unchanged), side effects, or any required node state. This is thin for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a clean, readable Args list. Every line adds necessary information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It covers the basic action and parameters but omits when to use it, what happens when optional flags are null, and what the result of the operation is. These gaps make it insufficient for confident autonomous 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 document parameters. It does provide one-line meanings for each parameter, such as 'Path to the COP node' and 'Render/export flag state', adding some clarity beyond bare schema titles. However, it does not explain what values are valid or what null means for the optional flags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and resource ('COP node'), and enumerates the exact flags affected: display, export/compress, and compress. The COP qualifier clearly distinguishes this from the generic sibling set_node_flags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 set_node_flags or other flag-related tools. There are no prerequisites, exclusions, or conditions for use; the intended usage must be inferred entirely from the name and short description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_current_networkC
Navigate the network editor to a specific network path.
Args: network_path: Network path to navigate to.
| Name | Required | Description | Default |
|---|---|---|---|
| network_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral transparency. It does not explain side effects such as changing the current network context for subsequent operations, whether the action is undoable, or how invalid paths 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 short and front-loaded, leading with the core action in the first sentence. However, the Args section adds little value beyond repeating the schema, making it concise but not information-rich.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and a one-parameter schema with no description, the description is too sparse to be fully complete. An agent is left without important details about the expected path format, the effect on the current network context, or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but 'network_path: Network path to navigate to' largely restates the parameter title 'Network Path.' It gives no syntax, examples, absolute-versus-relative path guidance, or allowed formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 verb ('Navigate') and a specific resource (the network editor) with a network path target. It is clear, but it does not explicitly differentiate itself from sibling tools like set_selection or get_network_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, such as set_selection or get_network_overview. The description only states what it does, not the conditions under which it 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.
set_current_takeB
Set the current take by name.
Args: name: Take name to make current.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Set the current take' reveals a state change but does not disclose failure behavior for nonexistent names, side effects on the current scene, or reversibility. For a mutation tool, this is under-specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loads the core action, and contains no filler. The single Args entry is minimal and directly useful. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description does not explain what a take is, whether the name must reference an existing take, or how to discover valid names. It is adequate for an expert familiar with Houdini takes, but lacks key context 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 Args section adds meaning beyond the bare schema by explaining that the parameter is a 'take name' used to make the corresponding take current. For a single string parameter with 0% schema description coverage, this provides enough semantic context to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Set the current take by name.' This distinguishes it from get_current_take, list_takes, and create_take, though not explicitly so. It is clear enough that an agent can identify what the tool does, but it does not directly contrast with sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus creating a take, listing takes, or getting the current take. It does not state that the take must already exist or how to discover valid take names. This leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_detail_attribA
Set a detail attribute on a SOP node.
Appends an Attribute Create SOP after the node and moves the display flag to it; the result includes the new node's path.
Args: node_path: Node path. attrib_name: Attribute name. value: Value to set.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| node_path | Yes | ||
| attrib_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose important side effects: it appends an Attribute Create SOP, moves the display flag, and returns the new node's path. This goes beyond the schema and alerts the agent to network mutation, though it does not cover error cases or multiple-call accumulation.
Agents need to know what a tool does to the world before calling 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 primary action, followed by a concise behavioral note and a minimal parameter list. No filler sentences, though the Args block is highly redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the core behavior and return value but omits prerequisites (e.g., node must exist and be a SOP node), indicates no error conditions, and does not mention that repeated calls will keep appending new nodes. Given the tool's complexity, it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but the Args list merely restates the schema titles ('Node path', 'Attribute name', 'Value to set') without adding type semantics, valid formats, or the fact that value accepts arrays. It adds little beyond the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set a detail attribute on a SOP node', naming a specific verb, resource, and scope. It further differentiates itself by describing the implementation ('Appends an Attribute Create SOP after the node and moves the display flag to it'), distinguishing it from generic parameter setters 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 does not explicitly route the agent to alternatives or state when not to use it. The intended use is implied by the first sentence (when you need to set a detail attribute on a SOP node), but there is no mention of exclusions or comparisons to sibling set_* tools like set_parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_expressionC
Set an expression on a parameter.
Args: node_path: Node path. parm_name: Parameter name. expression: Expression string. language: "hscript" (default) or "python".
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | hscript | |
| node_path | Yes | ||
| parm_name | Yes | ||
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry behavioral disclosure. It only says 'Set an expression on a parameter' โ implying a mutation but no details on side effects, error conditions, or return behavior. There's no mention of whether it overwrites existing expressions, whether it triggers a cook, or what happens if the parameter is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence + an Args list. Information is front-loaded and there is no fluff. The format is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and 0% schema coverage, this description is too sparse. It lacks examples or format guidance for node_path, parm_name, or expression syntax. An agent attempting to construct a valid call would have to infer the expected expression format from elsewhere. Sibling tools like set_parameter and evaluate_expression have richer context, making this feel incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source. It lists all four parameters with terse definitions: node_path, parm_name, expression, language. It does clarify that language can be 'hscript' or 'python' but omits syntax examples or path formats, leaving significant ambiguity 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 states 'Set an expression on a parameter' โ a specific verb, resource, and object. It clearly distinguishes from set_parameter (which sets values) and get_expression/evaluate_expression. However, it could be more explicit about the difference between setting an expression vs a value, but the intended purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool instead of alternatives. It doesn't mention when to prefer this over set_parameter or evaluate_expression. The description is purely functional, leaving the agent to infer usage from names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_frameC
Set the current frame in the timeline.
Args: frame: Frame number.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full responsibility for behavioral disclosure. It only says 'Set the current frame' with no mention of side effects, return behavior, or whether this changes playback/cooking state. This is below the minimum viable level for an unannotated mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the main action, and has a clean Args section for the parameter. It contains no wasted words, though it might be considered under-specified rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter setter with no output schema, the description provides a minimal but recognizable invocation path: supply a frame number. However, because there are no annotations or behavioral details, an agent still lacks enough context about side effects or expected return value, leaving mild gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description's 'frame: Frame number' adds no meaning beyond the schema's type:'number' and title:'Frame'. It does not clarify expected range, integer vs float, or what frame numbering convention applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Set the current frame') and the resource ('in the timeline'), so an agent can understand what the tool does. It does not explicitly distinguish itself from related siblings like get_frame or set_frame_range, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as set_frame_range, set_playback_range, or playbar_control. The description only states what it does, but offers no when/when-not or alternative-routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_frame_rangeC
Set the global frame range.
Args: start: Start frame. end: End frame.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states only that the tool sets a global frame range, but does not disclose side effects, validation behavior, whether start must be less than end, or whether the current frame changes. This is a thin disclosure for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately short, front-loaded with the main purpose, and the Args section is neatly structured. The parameter lines add little semantic value, but structurally the description is clean and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but without annotations, output schema, or richer parameter documentation, the description should clarify how 'global frame range' relates to playback range, current frame, and sibling setter tools. It does not, leaving gaps in selecting and invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds only tautological one-line definitions ('start: Start frame' and 'end: End frame'), which barely go beyond the schema's property titles ('Start'/'End'). It omits type constraints, units, ordering expectations, or integer/float guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: 'Set the global frame range.' It is specific about what the tool does. However, it does not actively distinguish itself from sibling tools like set_playback_range or set_frame, so it misses the top tier of differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as set_frame, set_playback_range, or cook_frame_range. There is no mention of context, exclusions, or preferred use cases, leaving the agent to infer usage from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_hda_interfaceA
Author an HDA's Type Properties interface in one call.
Use this for the asset's TYPE interface โ tab folders, strict ranges,
ordered menus, Hide/Disable When. create_spare_parameter is a different
thing: it adds parameters to one node instance and never reaches the type.
Each entry of parameters is a dict:
name, label, type (int|float|string|toggle|menu|folder),
default, min, max, min_strict, max_strict, components,
menu_items ([value, label] pairs or plain strings),
folder_type (tabs|simple|collapsible|radio) + children for folders,
hide_when / disable_when (Houdini conditionals), help.
Example โ a Controls tab whose Bevel disappears for a single stud: [{"name": "controls", "label": "Controls", "type": "folder", "children": [ {"name": "stud_count", "type": "int", "default": 4, "min": 1, "max": 8, "min_strict": True, "max_strict": True}, {"name": "bevel", "type": "float", "default": 0.02, "min": 0.0, "max": 0.1, "hide_when": "{ stud_count == 1 }"}, {"name": "material", "type": "menu", "menu_items": [["plastic", "Plastic"], ["metal", "Metal"]]}]}]
It is edit_hda_interface with one insert per entry: names already in the
interface are refused before anything is written, and the reply is read
back off the definition โ ops[].stored, renamed_by_houdini (a tab
folder joins the existing tab set's naming series), not_found_after_write
and instance_parms_missing.
Args:
ctx: MCP context.
node_path: An instance of the HDA whose definition is edited.
parameters: Interface spec (see above). create_spare_parameters'
spelling (parm_name, parm_type, default_value) is accepted too.
replace: Start from an empty interface. Built-in parameters of the node
type cannot be removed: Houdini puts them back
(reinstated_by_houdini).
dry_run: Validate and report the plan without writing.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| replace | No | ||
| node_path | Yes | ||
| parameters | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses atomicity ('names already in the interface are refused before anything is written'), response read-back fields (ops[].stored, renamed_by_houdini, etc.), replace behavior including reinstated_by_houdini, and dry_run semantics. This is far beyond minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, the description is densely organized into purpose, usage, parameter spec, example, behavior, and arguments. Every sentence adds value, and the core purpose is front-loaded before the 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?
Given the complex nested parameter structure, four parameters, zero schema coverage, and no output schema, the description covers every necessary aspect: parameter schema, behavior, edge cases (built-in params, naming series), and return fields. There are no obvious gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage. The description compensates by fully documenting the parameters dict: allowed types, field meanings, menu_items formats, folder children, Houdini conditionals, and an example. It also explains node_path, replace, and dry_run semantics, plus acceptance of create_spare_parameters spelling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: 'Author an HDA's Type Properties interface in one call.' It names a sibling tool, create_spare_parameter, and explains the distinction, and also references edit_hda_interface to position the tool exactly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Use this for the asset's TYPE interface' and contrasts it with create_spare_parameter, which 'adds parameters to one node instance and never reaches the type.' The relationship to edit_hda_interface is also stated, so an agent knows when to choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_hda_section_contentC
Write content to a specific section in an HDA definition.
Args: ctx: MCP context. node_path: Node path. section_name: Section name. content: Section content.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| node_path | Yes | ||
| section_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. 'Write content' implies mutation but does not disclose whether it overwrites existing content, whether the section must already exist, if there are permission requirements, or what happens on failure. There is no mention of side effects or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence plus an args list) and is technically concise, but it is under-specified to the point of being unhelpful. It is not a case of efficient writing but of missing essential information, so it does not earn credit 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?
With no annotations, no output schema, and three undocumented parameters, the description is severely incomplete. It does not explain return values, error behavior, or the format of 'content'. An agent cannot reliably call this tool without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not add any explanation for the three parameters (node_path, section_name, content). It merely lists their names without defining what they represent or what format content should be in. This fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('write content') and a specific resource ('a specific section in an HDA definition'). It is clear that this is a mutation tool for HDA sections. However, it does not distinguish itself from siblings like get_hda_section_content or explain what 'content' means in terms of format or structure, so it is not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The sibling list includes get_hda_sections and get_hda_section_content, but no comparison or condition is given. Prerequisites such as the existence of the HDA or node are not mentioned, so an agent has no idea when this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_keyframeC
Set a single keyframe on a parameter.
Args: node_path: Node path. parm_name: Parameter name. frame: Frame number. value: Value at this keyframe. slope: Tangent slope. accel: Acceleration.
| Name | Required | Description | Default |
|---|---|---|---|
| accel | No | ||
| frame | Yes | ||
| slope | No | ||
| value | Yes | ||
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'set', implying a mutation, but does not reveal whether this overwrites an existing keyframe, how it interacts with existing animation, or what the tool returns. This is a significant gap for an operation that modifies scene 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 brief, which is positive, but the structure is a simple list of parameter names without elaboration. It is concise but under-specified; the arg list is not informative enough to help the agent understand the tool's 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 a 6-parameter tool with no annotations and no output schema, this description is severely lacking. It fails to explain the meaning of slope and accel, potential side effects (like overwriting), prerequisites, or return values. An agent cannot reliably invoke this tool based on the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining each parameter. It lists names like 'slope' and 'accel' without defining their meaning, units, or acceptable ranges. The bare list adds no value beyond the schema's property names, leaving the agent to guess semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Set a single keyframe on a parameter.' The word 'single' distinguishes it from sibling set_keyframes (plural), so an agent can differentiate the tools without extra context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus set_keyframes (plural) or delete_keyframe. There is no mention of prerequisites, such as whether the node must already exist or the parameter must be animatable, and no alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_keyframesB
Batch-set multiple keyframes on a parameter.
Args: node_path: Node path. parm_name: Parameter name. keyframes: List of dicts with "frame", "value", and optionally "slope"/"accel".
| Name | Required | Description | Default |
|---|---|---|---|
| keyframes | Yes | ||
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden of behavioral disclosure. It does not state whether existing keyframes are overwritten, whether the parameter must already exist, what happens on partial failure, or what the tool returns. This is a meaningful gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: one clear purpose sentence followed by an Args block. Every line earns its place and there is no filler. It could have integrated more usage context, but as structured it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is incomplete for safe autonomous use. It explains the inputs but not the call's side effects, overwrite semantics, return value, or error behavior. For a tool that mutates keyframes, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add value by explaining node_path, parm_name, and especially the keyframes format as a list of dicts with frame, value, and optional slope/accel. However, it omits value types and allowed ranges, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Batch-set'), a specific resource ('multiple keyframes on a parameter'), and the batch aspect clearly distinguishes it from the sibling set_keyframe. An agent can understand what this tool does at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Batch-set' implies this tool is for setting multiple keyframes at once, which hints at when to use it versus set_keyframe or delete_keyframe. However, it never explicitly names alternatives or states when NOT to use this tool, leaving the routing decision mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_light_propertiesC
Set properties on a USD light prim via an inline Python LOP.
Args: node_path: LOP node path to connect after. prim_path: USD light prim path. properties: Property name-value pairs to set.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| prim_path | Yes | ||
| properties | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'sets properties' but doesn't disclose whether this is a mutating operation, whether it requires a specific LOP context, whether it cooks the node, or what happens if the prim doesn't exist. The mention of 'inline Python LOP' hints at implementation but doesn't explain side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. The Args section is a compact list that maps directly to the parameters. It's efficient with no wasted words, though the parameter explanations are terse to the point of being 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 the tool's complexity (3 required params, nested object, no output schema, no annotations), the description is incomplete. It doesn't explain the expected structure of the 'properties' object, whether the LOP node is created or must exist, what 'connect after' means in the node graph, or what the tool returns. An agent would need to guess or inspect other 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%, so the description must compensate. It lists the three parameters (node_path, prim_path, properties) with brief explanations, but these are minimal and don't add meaning beyond the parameter names. For example, it doesn't explain what 'connect after' means, what format properties should take, or how the LOP node is created/used. The description adds some value by naming the parameters, but not enough to fully compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set properties on a USD light prim via an inline Python LOP.' It identifies the resource (USD light prim) and the mechanism (inline Python LOP). It doesn't explicitly distinguish from sibling tools like set_usd_attribute or set_parameter, but the specific mention of 'light prim' and 'properties' provides enough clarity for an agent to understand the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention that this is for USD light prims specifically, nor does it contrast with set_usd_attribute, set_parameter, or create_light. The agent is left to infer usage from the name and description alone, with no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_node_colorB
Set a node's color in the network editor.
Args: ctx: MCP context. node_path: Node path. r: Red (0.0-1.0). g: Green (0.0-1.0). b: Blue (0.0-1.0).
| Name | Required | Description | Default |
|---|---|---|---|
| b | Yes | ||
| g | Yes | ||
| r | Yes | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden of behavioral disclosure, but it only describes the action itself. It does not mention side effects, persistence, reversibility, error behavior, or whether the change affects only the editor or also render outputs. This is a significant gap for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized: a single, clear purpose sentence followed by a compact argument list. Every line earns its place, with no filler or repetition. The key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter, the description covers the action and all parameters, and it clarifies the color domain. However, it lacks error behavior, path format, reversibility information, and any return value description. With no annotations or output schema, those gaps remain unfilled, leaving the description merely adequate for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It does so by enumerating each parameter with semantic meaning: node_path as 'Node path', and r/g/b as color components with a valid range of 0.0-1.0. This adds real value beyond the bare schema. However, node_path semantics are thin and the path format is not specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Set a node's color in the network editor.' This clearly communicates what the tool does. It does not explicitly differentiate from sibling tools like set_node_position or set_node_flags, but the focus on 'color' and RGB parameters makes it unambiguous in 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?
No guidance is given about when to use this tool versus alternatives. There are no exclusions, prerequisites, or references to sibling tools. The short phrase 'in the network editor' provides minor context, but not enough for an agent to make an informed choice among the many set_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_node_flagsC
Set flags on a node.
Args: ctx: MCP context. node_path: Node path. display: Display flag. render: Render flag. bypass: Bypass flag. template: Template flag. lock: Lock flag.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | ||
| bypass | No | ||
| render | No | ||
| display | No | ||
| template | No | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. 'Set flags on a node' communicates mutation but not what happens when a flag is true, false, or null, whether flags persist, or what the operation returns. It does not contradict annotations, but it reveals almost nothing beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and the summary sentence is front-loaded, which is good. However, the Args section largely duplicates the schema's property titles, and the 'ctx: MCP context.' line carries no practical value for the agent. It is concise but not every line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with six parameters, zero annotations, and no output schema, the description is incomplete. It does not explain the behavioral semantics of each flag, what null means, or the result of the call. An agent could call it correctly by guessing, but it cannot predict consequences or return behavior from this 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?
Schema description coverage is 0%, so the description must compensate, but it merely repeats parameter names with one-word labels like 'Display flag' and 'Lock flag'. It adds no semantics about how the boolean/null values behave, whether flags are independent, or what 'bypass' vs 'template' mean in context. The 'ctx: MCP context' entry is also not present in the input schema and adds confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Set flags on a node' states a clear verb and resource, and the argument list names the five flags (display, render, bypass, template, lock), so an agent can tell this is the generic node-flag setter rather than something like set_cop_flags. It is not a pure tautology, though it leaves the meaning of each flag undefined. It doesn't explicitly differentiate from siblings, but the target and flag names are sufficiently specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives or whether null values mean 'leave unchanged'. There is no mention of preconditions, side effects, or cases where another flag-related tool should be used instead. All usage context is absent, so an agent must infer entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_node_positionC
Set a node's position in the network editor.
Args: ctx: MCP context. node_path: Node path. x: Horizontal position. y: Vertical position.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits, but it only states the mutation action. It does not mention coordinate systems, whether the change is relative or absolute, side effects on other nodes, error conditions, or the response format. This is a significant gap for a mutation tool without any 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 extremely short, which is concise, but the Args block simply repeats parameter names and adds no explanatory value, making it redundant. It lacks a structured overview of the operation or its context, so while it is not verbose, it is not well-organized for decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 no annotations and no output schema, the description should cover essential context such as coordinate system, typical use cases, and any limitations. It provides none of this, leaving the agent with insufficient information to call the tool correctly in all scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description merely lists parameter names without adding any meaning. 'node_path', 'x', and 'y' are not explained beyond their titles, leaving an agent without insight into expected formats, units, or constraints. The description fails to compensate for the sparse 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 ('Set a node's position') and identifies the resource ('in the network editor'), which clearly distinguishes it from transform tools that might affect the 3D viewport. However, it does not explicitly differentiate from sibling tools like set_object_transform, so it earns a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as set_object_transform or set_parameter. No context about prerequisites (e.g., valid node path) or when to avoid it is provided, leaving the agent to infer usage on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_object_transformA
Set an object's translate, rotate, scale and/or parent in one call.
Only the arguments you pass change. Object-level nodes under /obj only; SOP transforms are a Transform SOP, not this.
Args: ctx: MCP context. node_path: Object node, e.g. "/obj/geo1". translate: [tx, ty, tz]. rotate: [rx, ry, rz] in degrees. scale: [sx, sy, sz]. parent: Object to parent under, or "" to unparent.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| parent | No | ||
| rotate | No | ||
| node_path | Yes | ||
| translate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose meaningful behavior: only passed arguments change, parent '' unparents, rotate is in degrees, and only object-level nodes are valid. It stops short of describing return behavior or side effects beyond 'set,' which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the core purpose, and uses a tight Args block that adds schema-missing meaning. The 'ctx' line is mild boilerplate, but overall every substantive line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All five parameters are covered with units, examples, and scope restrictions, so an agent can invoke the tool correctly. With no output schema and no annotations, the absence of return/error behavior leaves the behavioral contract slightly incomplete, but not enough to impair selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by documenting every parameter with formats, examples, and sentinel values: node_path example '/obj/geo1', translate/scale vector component order, rotate degrees, and parent '' for unparenting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Set an object's translate, rotate, scale and/or parent in one call.' It also draws an explicit boundary with 'Object-level nodes under /obj only; SOP transforms are a Transform SOP, not this,' which prevents confusion with keyframe or SOP-transform 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?
Gives explicit when/when-not guidance: only object-level nodes under /obj, and SOP transforms are explicitly routed elsewhere ('not this'). It also clarifies partial-update semantics ('Only the arguments you pass change'), so the agent knows omitted parameters are untouched.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_parameterC
Set a parameter value.
Args: node_path: Node path. parm_name: Parameter name. value: New value (int, float, string, bool, or list).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| node_path | Yes | ||
| parm_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It only restates that the tool sets a parameter value and lists accepted value types; it does not disclose side effects, whether setting triggers a cook, behavior on locked parameters, or how the value is applied.
Agents need to know what a tool does to the world before calling 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 structured as an args block with no filler. It is easy to scan, though it is too sparse to carry full 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 no annotations, no output schema, and a large sibling set of parameter-related tools, the description leaves important context missing including when to use this over set_parameters or set_expression, and what happens after the value is 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 must compensate. It adds minimal gloss for the three parameters, especially the accepted value types for 'value, but it does not explain node_path formatting, parameter name syntax, or value coercion behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: 'Set a parameter value.' It is not tautological and implies a mutating counterpart to get_parameter, though it does not explicitly distinguish itself from set_parameters or set_expression.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 sibling tools such as set_parameters, set_expression, link_parameters, or revert_parameter. No context about prerequisites, restrictions, or typical use cases is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_parametersB
Batch-set multiple parameters on a node.
Args: node_path: Node path. params: Mapping of parameter names to values.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description mentions 'Batch-set' which implies a mutation operation, but it does not disclose any side effects, permission requirements, or error handling. Given the simplicity of the operation)Skip? There is no description of what happens on failure, whether changes are transactional, or if the node must exist. This is a moderate gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two bullet-point parameter explanations in a docstring format. It is front-loaded with the core purpose. The only slight inefficiency is the repetition of parameter names that are already in the schema, but overall it is appropriately sized and 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?
Given the tool's moderate complexity (batch parameter setting) and the lack of output schema or annotations, the description is adequate but not complete. It covers the input parameters and the operation, but misses behavioral details like whether partial failures are possible, whether it validates that parameters exist, or how it handles concurrent modifications. It doesn't explain the return value (if any) beyond consequences of the operation, which could be important for agents to verify success.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This 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 provides no descriptions for the parameters. The description lists the parameters (node_path and params) with brief hints ('Node path', 'Mapping of parameter names to values'), which adds some meaning beyond the schema's bare type definitions. However, it does not elaborate on the expected format of 'params' (e.g., value types, nested structures) or any constraints on node_path. Since there are only 2 parameters and the description provides basic semantics, a 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 'Batch-set multiple parameters on a node', specifying the verb 'set' and the resource 'node', with a clear scope (batch). It does not explicitly differentiate from the sibling 'set_parameter' (singular), but the word 'Batch-set multiple' implies the distinction, and the sibling list is extensive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting multiple parameters at once, and the context (node_path and params) suggests a typical batch operation. However, it does not explicitly state when to use this tool versus 'set_parameter' (singular), nor does it mention any prerequisites or limitations (e.g., whether parameters must exist, type constraints).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_playback_rangeC
Set the playback range (green bar in the timeline).
Args: start: Start frame. end: End frame.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the core behavior and the visual timeline cue, but does not mention constraints like start <= end, behavior on invalid input, side effects on the playhead, or whether cooking or scrubbing is triggered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the purpose, and structured with an Args block. It is efficient, though the parameter lines largely repeat what the schema already exposes without adding substantial new 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 two-parameter setter, the description is nearly usable, but without annotations, usage guidance, or richer parameter semantics, it leaves meaningful gaps around validation, invalid ranges, and relationship to sibling timeline tools. An agent could call it incorrectly with inverted or unreasonable 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 input schema has no property descriptions, so the description must add the missing semantics. The description only says 'Start frame' and 'End frame', which only slightly extends the property names and leaves out units, inclusivity, ordering constraints, and valid ranges 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 names a specific action and resource: 'Set the playback range' and clarifies it as the 'green bar in the timeline'. This is clear and usable, but it does not distinguish the tool from siblings like set_frame_range or playbar_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?
There is no guidance about when to use this tool versus alternatives such as set_frame_range, set_frame, or playbar_control. No context, exclusions, or prerequisites are provided, so an agent must infer when this tool 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.
set_render_settingsB
Set render parameters on a ROP node.
Args: node_path: ROP node path. settings: Parameter name-value pairs.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | No | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Set render parameters', which implies mutation, but provides no details on side effects, whether the node is cooked, overwriting behavior, or reversibility. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with an Args list. Every sentence contributes, and it is not bloated. However, the Args section is slightly redundant with the schema property names, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is quite minimal. It lacks information about prerequisites, error handling, return values, or relationship to related tools like get_render_settings. An agent may not know how to invoke it correctly in a real workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds brief but meaningful semantics: node_path is 'ROP node path' and settings are 'Parameter name-value pairs'. This helps clarify the parameters beyond the bare schema, though it could be more detailed about the settings format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets render parameters on a ROP node, which is a specific verb and resource. It does not explicitly differentiate this from sibling tools like set_parameter or set_parameters, so it lacks the explicit sibling distinction needed for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, such as set_parameter or set_parameters. The phrase 'on a ROP node' implies a context, but there is no explicit 'when to use' or 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_selectionC
Set the node selection.
Args: node_paths: Node paths to select.
| Name | Required | Description | Default |
|---|---|---|---|
| node_paths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full behavioral burdenaine. It only states 'Set the node selection,' which adds no behavioral detail beyond the operation name. It does not disclose whether the selection is replaced or toggled, what side effects occur, or how null is handled. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded with the verb phrase 'Set the node selection.' The Args block follows a conventional docstring pattern with no filler. While brevity borders on under-specification, the structure itself is clean and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single optional parameter, no annotations, and no output schema, the description needed to fully document the call semantics. It omits essential details like the exact form of node paths, what an empty array means, and whether passing null resets the selection. An agent might guess the signature but cannot reliably perform the selection change without extra 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?
The schema's only parameter has no description, and the description's 'Node paths to select' is nearly tautological with the schema's title. It adds no information about path syntax (absolute vs relative), escaping, or null behavior. Since schema coverage is 0%, the description was expected to fully explain this one parameter, 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 starts with 'Set the node selection,' a clear verb and direct object that unambiguously names the operation. It stands apart from the many getter and setter siblings (e.g., get_selection, set_keyframe) because 'node selection' is a distinct resource accomplice. However, it does not explicitly differentiate itself from related selection tools like get_selection or frame_selection, and it is vague about whether this affects the network editor or viewport selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to call this tool or how it relates to alternatives. It does not mention that it complements get_selection, that it might be used before other node-manipulation steps, or that null node_paths could clear the selection. An agent is left to infer usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_update_modeA
Set Houdini's cook update mode, or read it when called with no mode.
"manual" before a long build stops every parameter change from re-cooking; set "auto" back afterwards.
Args: ctx: MCP context. mode: "auto", "on_mouse_up" or "manual". Omit to read.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the dual read/write behavior, the effect of 'manual' (stops every parameter change from re-cooking), and the recommended reset to 'auto'. It does not mention side effects on existing cooks or whether the mode persists across scenes, but the core behavioral traits are clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action is in the first sentence, the usage rationale follows immediately, and the parameter documentation is minimal but complete. Every sentence earns its place 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 single-parameter tool with no output schema, the description covers the action, the parameter values, the read mode, and the recommended usage pattern. The only minor gap is the exact return value when reading the mode, but the description's 'read it' phrasing is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does: it lists the three valid values ('auto', 'on_mouse_up', 'manual') and explains that omitting the mode reads the current setting. The description adds meaning beyond the schema's bare 'mode' property, though it doesn't specify the exact return format when reading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Set') and resource ('Houdini's cook update mode'), and also covers the read behavior when called with no mode. It clearly distinguishes the tool's purpose from siblings like get_cook_status or set_parameter by naming the exact setting it controls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: use 'manual' before a long build to prevent re-cooking, and set 'auto' back afterwards. It also explains the read mode when mode is omitted. This is actionable usage context that an agent can follow without additional inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_flip_simA
Build a FLIP fluid simulation network from source geometry.
Preferred over manual DOP wiring โ builds the entire FLIP network in one call. Use FLIP Source SOP or Volume Source DOP for custom sourcing.
Args: source_geo: Source SOP path. domain: Domain type. particle_sep: Particle separation distance. name: Top-level geo node name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | flip_sim | |
| domain | No | box | |
| source_geo | No | /obj/geo1/sphere1 | |
| particle_sep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool 'builds' a network, but it does not disclose whether existing nodes are overwritten, whether new nodes are created under the given name, whether cooking is triggered, or any side effects beyond node creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then usage context, then parameter list. Every sentence contributes meaningful 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 setup tool with no annotations and no output schema, the description gives a reasonable starting point, but it omits important call-time details like allowed domain values, units for particle_sep, whether the function returns a node path, and behavior on naming conflicts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args list adds basic meaning for all four parameters, but 'domain: Domain type' is vague, particle_sep lacks units, and source_geo is not explained beyond 'Source SOP path.' It is helpful but not detailed.
Input schemas describe structure but not intent. Descriptions should explain non-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: 'Build a FLIP fluid simulation network from source geometry.' The phrase 'FLIP fluid simulation' clearly distinguishes it from sibling setup tools like setup_pyro_sim, setup_rbd_sim, and setup_vellum_sim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 positions this tool as 'Preferred over manual DOP wiring' and explains the value proposition: 'builds the entire FLIP network in one call.' It also hints at sourcing alternatives, though it does not explicitly contrast with sibling setup tools or state when NOT to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_pyro_simA
Build a Pyro smoke/fire simulation network from source geometry.
Preferred over manual DOP wiring โ builds the entire pyro network in one call. For custom setups beyond what this provides, use create_node with DOP nodes (pyrosolver, smokeobject, volumesource, etc.).
Args: source_geo: Source SOP path. container: Container type. res_scale: Resolution scale multiplier. substeps: DOP substeps. name: Top-level geo node name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | pyro_sim | |
| substeps | No | ||
| container | No | box | |
| res_scale | No | ||
| source_geo | No | /obj/geo1/sphere1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It only says 'builds the entire pyro network in one call', which is more of a usage convenience than a behavioral guarantee. It does not disclose whether existing nodes are overwritten, whether the source geometry is modified, what permissions are needed, or what the resulting network contains. For a mutation-like operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: an opening sentence stating the core function, a usage-guidance sentence, and a compact Args list. It is front-loaded and every section earns its place. The slight redundancy between 'Build a Pyro smoke/fire simulation network' and 'builds the entire pyro network in one call' is minor, so it does not warrant a 5, but it remains 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?
This is a complex setup operation with no annotations and no output schema, so the description must explain the full context. It does not mention what node(s) are created, whether existing content is replaced, what the function returns, or any prerequisites (e.g., that source_geo must exist). An agent cannot fully predict the tool's side effects or result from the provided text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides an Args list with one-line meanings for all five parameters, e.g., 'source_geo: Source SOP path' and 'res_scale: Resolution scale multiplier'. This adds some value, but several entries are vague (e.g., 'container: Container type' is almost tautological and does not enumerate valid values). It partially compensates but leaves ambiguity that the schema does not resolve.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Build a Pyro smoke/fire simulation network from source geometry.' It clearly identifies what is built and from what, and the subsequent line ('For custom setups beyond what this provides, use create_node with DOP nodes...') distinguishes it from the generic creation tool. This is unambiguous and immediately scopes the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Preferred over manual DOP wiring โ builds the entire pyro network in one call') and when not to ('For custom setups beyond what this provides, use create_node with DOP nodes...'). It names the alternative and the condition that selects it, giving an agent clear decision-making guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_rbd_simA
Build an RBD rigid-body simulation network with fracture and solver.
Preferred over manual DOP wiring โ builds the entire RBD network in one call. For source geometry, build SOP chains with native nodes (voronoifracture, booleanfracture, rbdmaterialfracture) instead of VEX.
Args: geo_path: Source geometry object path. ground: Add a ground plane. pieces_type: Fracture method ("voronoi"). name: Top-level geo node name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | rbd_sim | |
| ground | No | ||
| geo_path | No | /obj/geo1 | |
| pieces_type | No | voronoi |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that the tool builds the entire RBD network in one call and includes fracture and solver, which is useful. However, it does not mention side effects such as whether existing nodes are overwritten, whether it cooks the network, or what happens when geo_path is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then usage preference, then source geometry guidance, then parameter summaries. Every sentence adds value, and the Args block is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a network-building tool with no output schema and no annotations, the description could be more complete by stating what the tool returns and what prerequisites are required (e.g., does geo_path need to already exist?). It covers the parameters and intent but leaves the result and failure behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides a concise Args block covering all four parameters with meaningful one-line explanations, including the fracture method default. The explanations are brief but sufficient for basic invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Build an RBD rigid-body simulation network with fracture and solver.' It also states it is preferred over manual DOP wiring, which clearly distinguishes it from the generic build_network and sibling sim setup tools like setup_pyro_sim and setup_flip_sim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this instead of manual DOP wiring and gives guidance to prepare source geometry with native SOP nodes rather than VEX. It does not explicitly state when not to use it relative to other simulation setup siblings, but the RBD scope is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_renderA
Set up a render configuration with camera and ROP node.
Args: renderer: Renderer type ("karma", "mantra"). camera: Camera node path; creates one if omitted. output_path: Output image path (supports Houdini variables). resolution: [width, height] resolution. samples: Render sample count. name: ROP node name in /out.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | render1 | |
| camera | No | ||
| samples | No | ||
| renderer | No | karma | |
| resolution | No | ||
| output_path | No | $HIP/render/output.$F4.exr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It does disclose key creation behavior, such as 'creates one if omitted' for the camera and places the ROP node name in /out. Missing are explicit side-effect details, such as whether an existing ROP node is overwritten, and whether the tool only configures without rendering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence states the purpose efficiently, followed by a compact Args block that covers all parameters without fluff. Every sentence adds necessary semantic value, making the definition easy to scan and use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 largely sufficient for invoking the tool because all parameters and key behaviors are explained. The main gaps are the absence of return-value information and no explicit statement that this tool configures rather than executes a render, which would be valuable given the many render-related 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%, so the description must fully compensate, and it does. Every parameter is explained with useful semantics: renderer enumerates accepted values ('karma', 'mantra'), camera notes creation behavior, output_path notes variable support, and resolution specifies its [width, height] format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Set up a render configuration with camera and ROP node.' This is clear and distinguishes it from render-execution siblings like start_render or render_node_network. However, it does not explicitly name or contrast those siblings, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to prefer this tool over closely related tools such as create_render_node, set_render_settings, or start_render. The description implies a setup role, but it never states that actual rendering is out of scope or names alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_vellum_simA
Build a Vellum simulation network with configure node and solver.
Preferred over manual DOP wiring โ builds the entire Vellum network in one call. Use Vellum Drape SOP to let cloth settle before the main simulation.
Args: geo_path: Source geometry object path. sim_type: Simulation type ("cloth", "hair", "grain", "softbody"). substeps: Solver substeps. name: Top-level geo node name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | vellum_sim | |
| geo_path | No | /obj/geo1 | |
| sim_type | No | cloth | |
| substeps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that it builds the entire network in one call and names the components (configure node and solver). However, it does not mention side effects such as overwriting existing nodes, prerequisites like a valid geo_path, or whether it cooks the simulation, leaving notable behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by a usage preference, a workflow tip, and clean parameter documentation. Every sentence adds value 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 build tool with four parameters and no output schema, the description covers the essential information needed to call it: what it does, when to prefer it, and what each parameter means. It could be more complete by mentioning return values or failure preconditions, but those 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?
Schema description coverage is 0%, but the description includes an Args section that explains all four parameters meaningfully. It specifies geo_path as source geometry path, lists valid sim_type values, defines substeps as solver substeps, and clarifies name as top-level geo node name, fully compensating for the empty schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Build a Vellum simulation network with configure node and solver.' It clearly differentiates from sibling setup tools (setup_pyro_sim, setup_rbd_sim, setup_flip_sim) by specifying Vellum and by stating it is preferred over manual DOP wiring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: 'Preferred over manual DOP wiring โ builds the entire Vellum network in one call.' It also gives a workflow tip about using Vellum Drape SOP. However, it does not explicitly name alternative tools or state when not to use this tool, so exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_usd_attributeB
Set a USD attribute value via an inline Python LOP.
Args: node_path: LOP node path to connect after. prim_path: USD prim path. attr_name: Attribute name. value: Value to set.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| attr_name | Yes | ||
| node_path | Yes | ||
| prim_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'Set a USD attribute value' without disclosing side effects, whether it creates or modifies an existing LOP node, reversibility, or network implications. 'Connect after' hints at network construction but leaves behavior ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in one sentence, followed by a compact parameter list with no fluff. Every line earns its place, and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a mutation tool with no annotations and no output schema, the description should provide richer behavioral context. It fails to explain whether a new LOP node is created or an existing one is used, how attribute types are handled, or typical usage flow. The parameter list helps, but overall context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides one-line explanations for all four parameters, adding value beyond the schema's bare titles. Notably, 'node_path: LOP node path to connect after' clarifies the parameter's role, which is not obvious from the name 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 ('Set') and resource ('USD attribute value') and adds the implementation mechanism ('via an inline Python LOP'). It is clear and distinct from siblings like set_parameter or set_detail_attrib, 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 implies usage for USD attribute modification, which is clear from context. However, it gives no explicit guidance on when to prefer this tool over alternatives (e.g., set_parameter for Houdini parameters, set_detail_attrib for geometry attributes) and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewer_contextA
Point the Scene Viewer at a network, and optionally a node inside it.
set_current_network moves the network EDITOR; this moves the VIEWER. That is what decides whether a scene graph view exists, so it is the prerequisite for previewing a USD stage or setting a Hydra delegate: call this with "/stage" before set_viewport_renderer or before binding a USD camera prim.
The result reports is_scene_graph_view, which is the question you are usually really asking.
Args: network_path: Network for the viewer to display, e.g. "/stage". current_node: Node inside it to make current, which selects the stage a Solaris viewport shows. pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_name | No | ||
| current_node | No | ||
| network_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool's result reports is_scene_graph_view, which is the key behavioral outcome an agent needs to know. It also explains the side effect of current_node: 'selects the stage a Solaris viewport shows.' It doesn't mention whether this mutates scene state or requires specific permissions, but the description is honest about what the tool does and what it returns. A 4 is appropriate because it adds meaningful behavioral context beyond a simple verb definition.
Agents need to know what a tool does to the world before calling 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, the second clarifies the distinction from a sibling, the third explains the prerequisite relationship, and the fourth states the key return value. The Args section is clean and maps directly to the schema. Every sentence earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no output schema, and no annotations, the description covers the essential context: what it does, how it differs from set_current_network, when to call it, and what the result reports. The only minor gap is that it doesn't describe the full return structure beyond is_scene_graph_view, and pane_name is under-explained. But given the tool's simplicity, this is nearly 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: each parameter is explained with a concrete example ('network_path: Network for the viewer to display, e.g. "/stage"'), and current_node's effect is described ('selects the stage a Solaris viewport shows'). pane_name is only given a terse 'Pane tab name,' which is thin but acceptable. The description adds meaning beyond the raw schema titles, though pane_name could use more detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Point the Scene Viewer at a network, and optionally a node inside it.' It uses a specific verb ('point') and resource ('Scene Viewer'), and distinguishes itself from set_current_network by explicitly contrasting viewer vs editor. This makes it easy for an agent to understand what it does and how it differs from a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it explains that set_current_network moves the editor while this moves the viewer, and that this is the prerequisite for previewing a USD stage or setting a Hydra delegate. It even gives a concrete example: 'call this with "/stage" before set_viewport_renderer or before binding a USD camera prim.' This is strong when-to-use guidance with a clear alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_cameraA
Set the viewport to look through a specific camera.
Args: camera_path: Camera node path, or a USD camera prim path for a Solaris viewport. The result reports the camera the viewport is actually looking through, and fails if it did not take. pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_name | No | ||
| camera_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does meaningful work by stating that the tool reports the camera the viewport is actually looking through and fails if the change did not take. It does not discuss side effects or persistence, but the failure/verification behavior is genuinely useful 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 purpose, followed by only necessary parameter details. Every sentence contributes operational 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 simple two-parameter viewport action with no output schema and no annotations, the description gives path-type behavior, optional pane, and failure behavior. It could more explicitly state what happens when pane_name is omitted, but the information needed to call the tool correctly is otherwise present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args block is the only semantic source of parameter meaning. camera_path is well explained with node path, USD prim path, and Solaris-viewport context, while pane_name only repeats its schema title and 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 states a specific verb ('Set'), a specific resource ('the viewport'), and a precise outcome ('look through a specific camera'). The emphasis on camera_path and Solaris viewports distinguishes it clearly from viewport display, renderer, and direction 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 intended use is implied: use this when the viewport should view through a specific camera. However, it never names alternatives like set_viewport_direction, set_viewport_display, or set_viewport_renderer, nor gives explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_directionA
Set the viewport to a standard viewing direction.
Args: direction: "front", "back", "top", "bottom", "left", "right", or "perspective". pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | ||
| pane_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the operation and parameter meanings; it does not mention whether the change is persistent, how it affects the current camera, whether a pane must be visible first, or any side effects. This is a sparse description for a mutating viewport 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?
Extremely concise and front-loaded. The intent is clear in the first sentence, and the Args block uses a compact list with inline values. Every line earns its place; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers the core behavior and required parameter values. The optional pane_name behavior and pane identification could be more explicit, but the default null in the schema fills that gap. Low complexity and the description cover most of what an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by enumerating all allowed direction strings and clarifying that pane_name is the 'Pane tab name.' This adds meaning beyond the raw schema, which merely types them as strings. However, it does not explicitly state that pane_name is optional or how to specify a pane uniquely, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Set the viewport to a standard viewing direction.' The list of cardinal directions clarifies the exact scopechers, and the phrase 'standard viewing direction' distinguishes it from related tools like set_viewport_camera or set_viewport_display without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as set_viewport_camera, frame_selection, or set_viewport_display. Usage must be inferred from the name and the phrase 'standard viewing direction.' No exclusions or alternative indicators are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_displayC
Set the viewport shading mode.
Args: display_mode: One of 'wireframe', 'shaded', 'smooth', 'smooth_wire', 'hidden_line', 'flat', 'flat_wire', 'matcap', 'matcap_wire'. pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_name | No | ||
| display_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only states the action and lists arguments; it does not explain side effects, whether it applies to the active pane when pane_name is null, or what the return behavior is. This is minimal and does not go beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main purpose, followed by an Args block. The display_mode options are presented in a readable list, and there is minimal redundancy with the schema. It is concise and well-structured, though not as tight as a two-sentence description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool, the description is incomplete. It does not explain what happens when pane_name is null, whether the tool applies to the current viewport or requires a specific pane, or what happens with an invalid display_mode. With no annotations and no output schema, an agent lacks the context needed to invoke the tool correctly in all situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides a list of allowed display_mode values, which adds meaning beyond the schema's bare string type. For pane_name, it gives 'Pane tab name', which adds a hint but does not clarify the default behavior or format. Overall, it partially compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set the viewport shading mode.' This is a specific verb and resource, and it is distinct from sibling tools like set_viewport_camera and set_viewport_direction. However, it does not explicitly name or contrast with any sibling, so it falls short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are no prerequisites, exclusions, or comparisons with other viewport-related tools. The purpose implies usage when setting shading mode, but the description does not state any contextual rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_rendererA
Set the viewport's Hydra rendering delegate for live preview.
Use this during lookdev to preview materials and lighting directly in the viewport instead of writing full renders to disk.
Args: renderer: Renderer name. The result reports the delegate that is actually active afterwards, read back from Houdini rather than inferred from a setter not raising. renderer: Renderer name โ "GL", "Storm", "Karma CPU", "Karma XPU", etc. Case-insensitive partial match. pane_name: Pane tab name.
| Name | Required | Description | Default |
|---|---|---|---|
| renderer | Yes | ||
| pane_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds useful behavioral detail beyond the action itself: the result 'reports the delegate that is actually active afterwards, read back from Houdini rather than inferred from a setter not raising.' This tells the agent how to interpret the outcome and that the tool verifies rather than assumes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the prose is generally tight, but the Args block repeats the renderer parameter twice with slightly different wording. This duplication is a structural defect and makes the description less clean than it should 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?
For a two-parameter viewport setter with no output schema, the description is largely sufficient: it explains why to use it, what the result reflects, and what renderer values are acceptable. It does not exhaustively cover edge cases like pane_name resolution behavior, but it is complete enough for an agent to call the tool correctly in the stated lookdev workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add valuable renderer semantics with examples and 'case-insensitive partial match,' but the pane_name parameter is only described as 'Pane tab name,' adding little beyond the schema. The duplicate 'renderer' line also creates ambiguity and wastes an opportunity to fully document the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set the viewport's Hydra rendering delegate for live preview.' It clearly distinguishes this from sibling rendering tools by contrasting live preview with 'writing full renders to disk,' so an agent can tell it apart from render_viewport and related viewport setters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use it: 'during lookdev to preview materials and lighting directly in the viewport.' It also gives an implicit exclusion by saying 'instead of writing full renders to disk,' although it does not name an alternative tool explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_wrangle_codeB
Set VEX code on an existing Attribute Wrangle node.
Args: node_path: Path to the wrangle node. vex_code: VEX snippet to set.
| Name | Required | Description | Default |
|---|---|---|---|
| vex_code | Yes | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It only states the action without disclosing side effects (e.g., overwriting existing code), error handling, or prerequisites. This is a gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose. It uses a clean Args list with no wasted words, 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?
For a simple setter, the description covers the basic action but omits any behavior on invalid inputs, whether the node is cooked, or return values. Without annotations or output schema, it is not fully complete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides one-line explanations for both parameters, which adds meaning beyond the schema's bare titles. However, it lacks details on path format or VEX syntax. With zero schema coverage, this partial compensation 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 states a clear action ('Set') on a specific resource ('VEX code on an existing Attribute Wrangle node'). It distinguishes from siblings like get_wrangle_code (get vs set) and create_wrangle (new vs existing) by emphasizing 'existing'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 existing wrangle nodes but does not explicitly mention alternatives or conditions. It lacks exclusions or guidance on when to prefer this tool over get_wrangle_code or create_wrangle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_renderA
Execute any node that renders or writes files.
Foreground by default: Houdini shows its own progress dialog and the user can cancel. The call holds until the render finishes, however long that is; a client that hands a long call to a background task notifies you with the verdict. Do nothing else in Houdini meanwhile and never poll the disk.
Not just /out ROPs: a LOP usdrender_rop (which is how Solaris renders), a SOP ROP Geometry, or a File Cache's Save to Disk all work, because what matters is whether the node can be executed rather than its category.
The result reports the output path it wrote to and whether anything is actually on disk there, so a render that succeeds and writes nowhere is visible instead of silent.
Args: node_path: Any node with a render() or an 'execute' button. frame_range: [start, end] or [start, end, increment]. background: Render in a separate hython on the saved hip and return at once with status "launched"; get_render_progress reports the process, its log tail and the files. The user sees no progress in Houdini, so use it only when asked to keep working while a render runs.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| background | No | ||
| frame_range | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It transparently discloses that the call blocks until render completion, shows a progress dialog, can be canceled by the user, and that background mode spawns a separate hython process returning immediately with status 'launched.' It also explains that the result reports output path and disk presence, making silent failures visible. This is exhaustive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place. It starts with the core purpose, then details blocking behavior, node support, result reporting, and parameters in a logical order. No fillerโall content is directly actionable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool that executes renders, the description covers all necessary operational context: blocking vs background, node type support, output reporting, and parameter syntax. It even notes when not to use background. There is no missing information that would prevent an agent from calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It does: node_path is any node with a render() or 'execute' button; frame_range is [start, end] or [start, end, increment]; background renders in a separate hython on the saved hip and returns at once with status 'launched.' This adds critical semantic meaning beyond the bare type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Execute any node that renders or writes files.' It explicitly distinguishes itself from sibling tools like render_viewport or get_render_progress by clarifying scope (any executable node, not just ROPs) and behavior (holds until finish). This gives an agent a precise mental model of what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: it explains foreground vs background behavior, when background should be used ('only when asked to keep working while a render runs'), and instructs the agent to 'Do nothing else in Houdini meanwhile and never poll the disk.' It also clarifies which node categories are valid, preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_simulationB
Advance the simulation by a number of frames.
Args: node_path: DOP network node path. steps: Number of frames to advance.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | ||
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description states the action but doesn't disclose side effects, such as whether this cooks the simulation, whether it's reversible, or what happens if the node_path is invalid. It also doesn't mention whether this blocks until the simulation is advanced or if it's asynchronous. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main action. The Args section is minimal and directly maps to the parameters. Every sentence earns its place, though the format could be slightly more 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 tool with no annotations, no output schema, and 0% schema description coverage, the description is thin. It doesn't explain what the agent should expect after calling it (e.g., does it return a status? does it cook the frame?), nor does it mention edge cases or prerequisites. An agent would need to infer a lot about how to use 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?
Schema description coverage is 0%, so the description must compensate. The description lists both parameters (node_path and steps) with brief explanations, which adds meaning beyond the schema's bare property names. However, it doesn't provide details like the expected format of node_path (e.g., '/obj/dopnet1') or constraints on steps (e.g., must be positive). The description adds some value but doesn't fully compensate for the 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 states a specific verb and resource: 'Advance the simulation by a number of frames.' This clearly identifies the action and target. It doesn't explicitly distinguish itself from sibling tools like reset_simulation or get_simulation_info, but the action is specific enough that an agent can infer its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it advances a simulation, which is distinct from resetting or querying simulation state. However, it doesn't explicitly state when to use this tool versus alternatives like reset_simulation or get_simulation_info, nor does it mention prerequisites like the simulation needing to be set up or the node_path needing to point to a valid DOP network.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undoA
Undo the last change(s) made in Houdini.
Every tool call is one undo step, however many nodes it touched, so one undo reverses one build_network or set_parameters call. Needs a graphical Houdini: hython keeps no undo history.
Args: ctx: MCP context. steps: How many steps to undo (default 1).
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses the undo-step semantics and the graphical-Houdini requirement, which are non-obvious behavioral constraints. However, it doesn't explicitly state that undo is destructive or that it changes scene state, though that is implied by the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: first line states the action, second paragraph explains granularity and environment, third lists args. No filler, front-loaded 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 undo tool with one optional parameter and no output schema, the description covers all necessary information: action, scope, environment requirement, and parameter explanation. 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 has 0% description coverage, but the description explains the only parameter 'steps' with meaning and default value. It also mentions 'ctx' as an argument, though that is not in the schema, which is a minor inconsistency but doesn't harm usability.
Input schemas describe structure but not intent. Descriptions should explain 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 exactly what it does: undo last change(s) in Houdini. Clarifies granularity (one undo per tool call) and gives concrete examples (reverses build_network or set_parameters). This distinguishes it from other mutation tools and even from redo by explaining its 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?
Provides context that it works only in graphical Houdini (not hython), which is a clear exclusion condition. It also implies when to use it (after a mutation tool call) via the undo-step explanation, but doesn't explicitly mention alternatives like redo or revert_parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uninstall_hdaC
Uninstall an HDA file from the current session.
Args: ctx: MCP context. file_path: HDA file path.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Uninstall' implies a destructive/mutating action, but the description does not disclose what happens to the HDA, whether it is reversible, or any side effects on the current session. It lacks critical behavioral detail for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and to the point, with the main purpose front-loaded. It has no unnecessary prose, but the inclusion of 'ctx' which is not a schema parameter slightly muddies the structure. Still, it 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?
For a destructive operation with no annotations and no output schema, the description is incomplete. It does not explain return values, success/failure behavior, whether the current session is affected, or how it differs from related operations. An agent would lack critical information to safely invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only says 'file_path: HDA file path', which adds minimal meaning beyond the schema's type declaration. It does not explain expected format, restrictions, or any other relevant parameter details. The mention of 'ctx' not present in the schema adds confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Uninstall' and the resource 'HDA file from the current session'. It is distinct from sibling tools like install_hda, reload_hda, and create_hda, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as install_hda or reload_hda. It does not mention prerequisites, side effects, or when it is appropriate to uninstall versus other operations, leaving the agent without contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_hdaC
Save the current node contents back to its HDA definition.
Args: ctx: MCP context. node_path: Node path.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the burden of behavioral disclosure. It says 'Save' but does not mention side effects such as overwriting the HDA definition, affecting other instances of the asset, requiring an unlocked or writable HDA, or whether the change can be reverted. This is a significant transparency gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded: the main action appears in the first sentence with no filler. The only minor waste is the 'ctx: MCP context.' line, which is redundant and not a schema parameter, but the overall 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?
For a one-parameter mutation tool with no annotations and no output schema, the description should provide more operational context. It omits when to use this tool versus HDA siblings, what side effects occur, and any constraints on the node or HDA definition. An agent could invoke it, but without knowing consequences or prerequisites it is not sufficiently 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 needed to compensate. It only restates 'node_path: Node path', which adds little beyond the schema's existing title 'Node Path'. It does not clarify what the node path must point to, whether it must be an HDA instance, or any format requirements. The listed 'ctx' argument is also not part of the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Save the current node contents back to its HDA definition.' This clearly communicates the core action. It is distinguishable from siblings like create_hda, reload_hda, and uninstall_hda by its meaning, though it never explicitly names or contrasts 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 about when to use this tool instead of related HDA operations such as create_hda, install_hda, reload_hda, or get_hda_info. The description only states what the tool does, with no context on 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.
validate_vexA
Validate VEX code by cooking the node and checking for errors.
Args: node_path: Path to the wrangle node.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that the node is cooked and errors are checked, which is useful behavioral detail. However, it does not state side effects of cooking, what happens when errors are found, or how results are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with no filler. The purpose statement is followed immediately by the only parameter explanation, and every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should clarify what the caller receives after validation. It never explains whether the tool returns a boolean, error messages, or raises an exception, and it omits any mention of cooking side effects or node prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description compensates by documenting the single parameter: 'node_path: Path to the wrangle node.' This adds the important constraint that the path must point to a wrangle node, beyond the schema's bare 'Node Path' title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Validate VEX code' by 'cooking the node and checking for errors.' This clearly differentiates it from siblings like get_node_errors_detailed or find_error_nodes by emphasizing validation through cooking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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, nor any exclusions or preconditions. The intended use is only implied by the tool name and action phrase, so an 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.
verify_networkA
Inspect every node in a network at once โ errors, warnings, flags, and the display node's cooked geometry counts.
Call this after building or modifying a network, the way an artist
middle-clicks nodes: if healthy is false or error_nodes is
non-empty, fix those nodes before telling the user anything is done.
Args: parent_path: Network to verify (e.g. "/obj/geo1").
| Name | Required | Description | Default |
|---|---|---|---|
| parent_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses the types of information inspected (errors, warnings, flags, cooked geometry counts) and references key return fields (healthy, error_nodes), implying a read-only verification action. However, it does not explicitly state it is non-destructive or describe any side effects, though the language strongly implies a read-only check. It also does not explain the full return structure or pagination, but for a verification tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs with a clear args section. The purpose is front-loaded in the first sentence, and every sentence adds value (purpose, usage, parameter explanation). No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations or output schema, the description provides the essential information: what it does, when to use it, how to interpret results (healthy/error_nodes), and the parameter format. It does not enumerate all return fields (e.g., warnings, flags, geometry counts) but does imply them in the first sentence. Given the tool's simplicity, this is nearly 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 so excellently by providing the parameter name, its meaning ('Network to verify'), and a concrete example ('/obj/geo1'). This gives the agent full clarity on what to supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('inspect'), a resource ('every node in a network'), and detailed scope ('errors, warnings, flags, and the display node's cooked geometry counts'). This clearly distinguishes it from sibling tools like find_error_nodes or get_node_errors_detailed, which have narrower or different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage timing ('after building or modifying a network') and a clear workflow directive (if healthy is false or error_nodes is non-empty, fix before confirming). It does not explicitly mention alternative tools or when not to use it, but the guidance is sufficient for an agent to know when to invoke it. Missing explicit alternatives slightly lowers the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_cacheA
Execute a cache node, and report whether a cache actually appeared.
Foreground by default: Houdini shows its own progress dialog and the user can cancel. The call holds until the write finishes, however long that is; a client that hands a long call to a background task notifies you with the verdict when it lands. Do nothing else in Houdini meanwhile (every other call queues behind the write) and never poll the disk.
success and wrote_files reflect the files on disk and the errors of the
node that did the writing -- a filecache delegates to an internal ROP and
stays silent itself, so a failed write used to be reported as success.
Errors are named with the node they came from.
Args: ctx: MCP context. node_path: Path to the cache node. frame_range: [start, end] frame range to render. Overrides the node's $FSTART/$FEND expressions for this and later writes. background: Save from a separate Houdini process (File Cache's own "Save to Disk in Background") so Houdini stays usable, at the cost of the user seeing no progress there. Saves the hip first, returns at once with status "launched"; follow it with get_cache_status. Use it only when asked to keep working while a cache writes. A verified foreground write turns the node's Load from Disk on.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| background | No | ||
| frame_range | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it discloses foreground default, user-cancellation, blocking semantics, queueing, the 'do nothing else' constraint, failure semantics (success/wrote_files reflect disk and node errors, historical false-success), and the background process behavior including hip save and immediate 'launched' return. It also mentions verifying foreground write turns Load from Disk on. This is exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but tightly packed with essential information. Every sentence adds valueโbehavioral rules, parameter semantics, and error reporting. It front-loads the core action and then layers necessary detail. A slight trim of the background paragraph could improve conciseness, but nothing is redundant 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 tool with 3 parameters and no output schema, the description covers everything an agent needs to call it correctly: what it returns (success/wrote_files semantics), how to handle background mode, what to avoid (polling, concurrent calls), and the side effects (Load from Disk). The mention of get_cache_status as a follow-up completes the loop. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates: node_path is explained as the path to the cache node; frame_range is described as overriding $FSTART/$FEND for this and later writes; background is detailed with its separate-process behavior, hip save, immediate return, and situation to use it. Each parameter's meaning and side effects are covered beyond the schema's bare type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Execute a cache node, and report whether a cache actually appeared.' This clearly distinguishes it from sibling queries like list_caches or get_cache_status, and names the relevant node type (cache node). The purpose is unambiguous and not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 context for when to use foreground vs. background mode ('Use it only when asked to keep working while a cache writes'), warns never to poll the disk, and names the follow-up tool (get_cache_status). It also explains the blocking/queueing behavior so an agent knows not to issue concurrent calls. This is more than adequate.
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.
12 tool updates
v2.18.0- Added
change_node_type - Changed
connect_nodes1 field changed- added
Input schema / properties / indirect_inputAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Indirect Input" +}
- Added
edit_hda_interface - Changed
get_node_card1 field changed- added
Input schema / properties / include_helpAdded value: +{ + "default": true, + "title": "Include Help", + "type": "boolean" +}
- Added
get_parm_references - Added
get_parm_template_tree - Changed
get_usd_attribute3 fields changed- added
Input schema / properties / fullAdded value: +{ + "default": false, + "title": "Full", + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "default": 64, + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "title": "Offset", + "type": "integer" +}
- Added
get_usd_bound_material - Changed
get_usd_prim1 field changed- added
Input schema / properties / fullAdded value: +{ + "default": false, + "title": "Full", + "type": "boolean" +}
- Changed
load_scene2 fields changed- added
Input schema / properties / node_pathsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Node Paths" +} - added
Input schema / properties / overwrite_on_conflictAdded value: +{ + "default": false, + "title": "Overwrite On Conflict", + "type": "boolean" +}
- Added
press_button - Added
set_hda_interface
199 tool updates
v0.1.0- First observed
assign_material - First observed
build_network - First observed
build_sop_chain - First observed
cancel_top_cook - First observed
capture_network_editor - First observed
capture_screenshot - First observed
clear_cache - First observed
compare_snapshots - First observed
connect_nodes - First observed
connect_nodes_batch - First observed
cook_frame_range - First observed
cook_top_node - First observed
copy_node - First observed
create_chop_node - First observed
create_cop_node - First observed
create_hda - First observed
create_light - First observed
create_light_rig - First observed
create_lop_node - First observed
create_material - First observed
create_material_network - First observed
create_network_box - First observed
create_node - First observed
create_render_node - First observed
create_spare_parameter - First observed
create_spare_parameters - First observed
create_sticky_note - First observed
create_take - First observed
create_vex_expression - First observed
create_wrangle - First observed
delete_keyframe - First observed
delete_node - First observed
dirty_work_items - First observed
disconnect_node - First observed
evaluate_expression - First observed
execute_hscript - First observed
execute_python - First observed
explain_node - First observed
export_chop_to_parm - First observed
export_file - First observed
find_error_nodes - First observed
find_expensive_nodes - First observed
find_nearest_point - First observed
find_nodes - First observed
find_usd_prims - First observed
frame_all - First observed
frame_selection - First observed
generate_static_items - First observed
get_attrib_stats - First observed
get_attrib_values - First observed
get_attribute_info - First observed
get_bounding_box - First observed
get_cache_status - First observed
get_chop_data - First observed
get_context_info - First observed
get_cook_chain - First observed
get_cook_status - First observed
get_cop_geometry - First observed
get_cop_info - First observed
get_cop_layer - First observed
get_cop_vdb - First observed
get_current_take - First observed
get_dop_field - First observed
get_dop_object - First observed
get_dop_relationships - First observed
get_env_variable - First observed
get_expression - First observed
get_failed_work_items - First observed
get_file_references - First observed
get_frame - First observed
get_geometry_info - First observed
get_group_members - First observed
get_groups - First observed
get_hda_info - First observed
get_hda_section_content - First observed
get_hda_sections - First observed
get_help_page - First observed
get_houdini_connection_status - First observed
get_keyframes - First observed
get_last_modified_prims - First observed
get_material_info - First observed
get_network_overview - First observed
get_node_card - First observed
get_node_errors_detailed - First observed
get_node_info - First observed
get_parameter - First observed
get_parameter_schema - First observed
get_parameters - First observed
get_pdg_graph - First observed
get_points - First observed
get_prim_intrinsics - First observed
get_prims - First observed
get_render_progress - First observed
get_render_settings - First observed
get_scene_info - First observed
get_scene_summary - First observed
get_selection - First observed
get_shelf_tool_script - First observed
get_sim_memory_usage - First observed
get_simulation_info - First observed
get_stage_info - First observed
get_top_logs - First observed
get_top_network_info - First observed
get_top_scheduler_info - First observed
get_usd_attribute - First observed
get_usd_composition - First observed
get_usd_layers - First observed
get_usd_materials - First observed
get_usd_prim - First observed
get_usd_prim_stats - First observed
get_usd_variants - First observed
get_viewport_info - First observed
get_volume_info - First observed
get_work_item_info - First observed
get_work_item_states - First observed
get_workflow_guide - First observed
get_wrangle_code - First observed
import_file - First observed
inspect_usd_layer - First observed
install_hda - First observed
layout_children - First observed
link_parameters - First observed
list_caches - First observed
list_children - First observed
list_chop_channels - First observed
list_cop_node_types - First observed
list_dop_objects - First observed
list_hda_versions - First observed
list_installed_hdas - First observed
list_lights - First observed
list_material_types - First observed
list_materials - First observed
list_node_types - First observed
list_panes - First observed
list_render_nodes - First observed
list_shelf_tools - First observed
list_takes - First observed
list_usd_prims - First observed
load_scene - First observed
lock_parameter - First observed
log_status - First observed
move_node - First observed
new_scene - First observed
pause_top_cook - First observed
playbar_control - First observed
redo - First observed
reload_hda - First observed
rename_node - First observed
render_node_network - First observed
render_quad_view - First observed
render_viewport - First observed
reorder_inputs - First observed
reset_simulation - First observed
revert_parameter - First observed
run_shelf_tool - First observed
sample_geometry - First observed
save_scene - First observed
search_help - First observed
set_cop_flags - First observed
set_current_network - First observed
set_current_take - First observed
set_detail_attrib - First observed
set_expression - First observed
set_frame - First observed
set_frame_range - First observed
set_hda_section_content - First observed
set_keyframe - First observed
set_keyframes - First observed
set_light_properties - First observed
set_node_color - First observed
set_node_flags - First observed
set_node_position - First observed
set_object_transform - First observed
set_parameter - First observed
set_parameters - First observed
set_playback_range - First observed
set_render_settings - First observed
set_selection - First observed
set_update_mode - First observed
set_usd_attribute - First observed
set_viewer_context - First observed
set_viewport_camera - First observed
set_viewport_direction - First observed
set_viewport_display - First observed
set_viewport_renderer - First observed
set_wrangle_code - First observed
setup_flip_sim - First observed
setup_pyro_sim - First observed
setup_rbd_sim - First observed
setup_render - First observed
setup_vellum_sim - First observed
start_render - First observed
step_simulation - First observed
undo - First observed
uninstall_hda - First observed
update_hda - First observed
validate_vex - First observed
verify_network - First observed
write_cache
TDQS
Scored across 206 tools
With 206 tools, many clusters have unclear boundaries: get_scene_summary/get_scene_info/get_network_overview, create_material/create_material_network, capture_screenshot/render_viewport, and the various get_cop_*/get_work_item_* tools all overlap in purpose. Individual descriptions help, but an agent will frequently have difficulty choosing the correct tool from these near-synonymous groups.
Most tools follow a clear get_/set_/create_/list_ verb_noun snake_case pattern, but there are notable deviations like playbar_control, undo, and redo. The list/get prefix is also used inconsistently for collection reads (get_parameters vs list_caches), and singular/plural forms vary (list_node_types vs get_work_item_info), making the naming pattern predictable but not uniform.
206 tools is an extreme mismatch for a single MCP server. Even for a comprehensive Houdini automation surface, this is far beyond the recommended 3-15 range and would overwhelm an agent's context window and tool-selection space. Many of these tools could be consolidated or grouped behind a smaller set of flexible operations.
The tool surface covers virtually every Houdini domain: node lifecycle, parameters, animation, geometry, USD/LOP, simulation (DOP and TOPs), COPs, CHOPs, HDAs, materials, rendering, viewport control, shelf tools, help documentation, and workflow guides. Both high-level setup tools (setup_pyro_sim, build_network) and atomic operations (set_keyframe, delete_node) are present, so there are no obvious dead ends or critical missing operations.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Eโฆ
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Nifty's MCP server โ exposes tasks, projects, messages, and files as tools for AI agents.
Free public MCP for AI agents โ 193 tools, 44 workflows. No API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural language control of SideFX Houdini for tasks including node management, parameter editing, and geometry inspection. It leverages RPYC to execute Python scripts and manage scene data through an MCP-compatible interface.MIT
- AlicenseCqualityBmaintenanceConnects SideFX Houdini to Claude via the Model Context Protocol, enabling control of Houdini scenes, nodes, rendering, and more through 166 MCP tools.100442 PyPI4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to directly control SideFX Houdini, including creating nodes, setting parameters, executing Python, capturing viewports, and rendering frames, via 57 MCP tools.2MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to control SideFX Houdini 3D software, providing tools for scene management, node operations, rendering, and more through the Model Context Protocol.1MIT