HoudiniMCP
Connects AI agents to SideFX Houdini for reading, editing, running, rendering, documenting, and automating scenes via MCP.
Read scenes and nodes:
scene_overview,node_inspect,geometry_inspect,stage_inspect,select,console.Edit networks and assets: create/delete/copy/move/rename/color/layout nodes, set parameters, connect wires, manage HDAs, and run atomic multi-step
batchbuilds.Run Houdini operations: cook nodes/frames, manage caches and simulations, render through ROPs, run PDG/TOP work items, control playbar, and save/load/undo scene files.
See visual results: capture viewport, quad views, camera views, flipbooks, frame sheets, or MP4 movies.
Execute code: Python, HScript, expressions, VEX compile checks, environment lookups, and background jobs.
Read offline Houdini docs: search/read node, VEX, HOM, and manual pages from the installed build.
Manage sessions: status/list/attach/detach/start headless/GUI/interrupt/stop Houdini sessions.
Supports headless Hython when no GUI is open and returns JSON results with errors, warnings, and session info.
Controls SideFX Houdini via MCP, providing tools for scene management, node operations, parameters, rendering, geometry, PDG/TOPs, USD/Solaris, HDAs, animation, VEX, DOPs, viewport, COPs, CHOPs, takes, cache, 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., "@HoudiniMCPcreate a sphere and apply a noise to it"
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.
Houdini MCP
Connect SideFX Houdini to Claude, Codex, Gemini, Cursor, opencode or pi.
This MCP provides Full Markdown Documentation and Viewport Screenshots support to your agents of choice, enabling strong feedback loops and autonomous workflows.
Install
Windows
powershell -c "irm https://raw.githubusercontent.com/JTCHE/houdini-mcp/main/bootstrap.bat -OutFile bootstrap.bat; .\bootstrap.bat"macOS / Linux
curl -sSL https://raw.githubusercontent.com/JTCHE/houdini-mcp/main/bootstrap.sh | bashuv
uv tool install houdini-mcp-server && houdinimcp-installThe installer adds the plugin to Houdini and the server to your AI clients of choice. Restart both.
pi also needs pi install npm:pi-mcp-adapter.
Claude plugin
This repository is also a Claude plugin, for Claude Code and for Cowork on your computer. It needs uv.
The plugin starts a headless Houdini without setup. To connect the Houdini that you have open, ask Claude to run the houdini-setup skill.
uv run --frozenbuilds an environment fromuv.lockin the plugin folder, then starts the MCP server from this repository.The server talks to Houdini on
localhostonly. It startshython, orhoudinion request, from your Houdini install, andffmpegto encode a flipbook movie.docsreads the documentation out of your Houdini install with houdinimd-docs. It sends nothing over the network.houdini-setupwrites the HoudiniMCP package into your Houdini preferences folder, after you approve it.No tool sends data to a remote service.
executeruns any Python that Claude writes in your Houdini session.
Related MCP server: HoudiniMCP
Tools
Read |
|
Edit |
|
Run |
|
See |
|
Code |
|
Docs |
|
Session |
|
No Houdini open? The server starts a headless hython.
batch builds a whole network in one call, and it is all or nothing: a failed
step undoes the steps before it. A build that works comes back with the cooked
point and primitive counts, and the nodes with errors.
Warning:
executeruns any Python in Houdini. Save your work.
Problem | Fix |
No Houdini listens for the bridge | Start Houdini, or click Toggle MCP Server on the HoudiniMCP shelf. |
No HoudiniMCP shelf | Restart Houdini. |
Houdini started from Git Bash has no plugin | Git Bash sets |
| The session is headless. Call |
You must have a fixed port | Set |
Without a terminal, the installer asks nothing and takes the defaults.
houdinimcp-install --list # Houdini installs and clients found, as JSON
houdinimcp-install --yes --json # newest Houdini, every client found; JSON report
houdinimcp-install --houdini-version 22.0 --harness claude-code --yes
houdinimcp-install --dry-run --yes # change nothing
houdinimcp-install --uninstall # remove the plugin and every client entryFlags: --houdini-version none skips the plugin, --prefs-dir PATH names the
prefs folder, --harness none|all|KEY (repeatable), --quiet-start stops the
first-launch dialogs. The bootstrap scripts pass every flag through.
Manual client setup: run houdinimcp-bridge with no arguments.
claude mcp add --transport stdio houdini -- houdinimcp-bridge for Claude Code.
From a clone: uv run python -m bridge.onboarding.install.
Layout: src/houdinimcp/ is the plugin, a TCP server inside Houdini on
localhost:9877. src/bridge/ is the MCP server and the installer. Messages
are JSON with a 4-byte length prefix. HOUDINIMCP_NO_HEADLESS=1 stops the
headless start. Read AGENTS.md before you change code.
Credits
Built on blender-mcp, capoomgit/houdini-mcp, eetumartola/houdini-mcp, Houdini21MCP and fxhoudinimcp. MIT licensed.
Not affiliated with SideFX. Houdini and SideFX are trademarks of SideFX Software Inc.
Available Tools
20 toolsbatchADestructive
Run several Houdini tools in one call.
Use it to build a network: many nodes, their wires and their parameters go
in one round trip and one undo group, and a person can undo the whole thing
with one keystroke.
Do not use it when a later step needs to read what an earlier step made.
The list runs without you in the middle, so nothing can branch on a result.
A failed batch changes nothing. Every step is checked before any step
runs, and a step with a wrong argument stops the batch. A step that fails
as it runs stops the list, and the steps before it are undone. A step whose
item failed is a failed step, and so is a parameter write that did not
apply. The error names the index of the step and its error.
Returns JSON with one result for each operation, in the order of the
operations, and the picture of every capture step.
A batch that works cooks the display node of each SOP network that it
touched: `check` gives its point and primitive counts, and the touched
nodes that have errors. Read it before you build on the result.
A capture step with no `output` writes to a file of its own, so one batch
can hold several captures.
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | The steps, in order. Each is {"tool": "<tool name>", "params": {...}}, with the arguments that the tool takes on its own. Any tool of this server except batch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive/non-idempotent, and the description adds substantial context beyond them: validation-before-execution, the exact failure/rollback semantics (a failed batch changes nothing, prior steps undone), the error format naming step index, the return shape, and the side effect of cooking touched SOP networks so `check` must be read afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and constraints are front-loaded in the first two paragraphs, failure semantics follow, and return behavior closes. Despite length, every paragraph carries a distinct operational fact 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 complex multi-step mutation tool with no output schema, the description covers the essentials: atomic rollback, error identification, return ordering, cook side effects, and capture file behavior. Nothing critical to calling 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 100%, and the schema documents that each step is {"tool": ..., "params": ...} with any tool except batch. The description reinforces ordering ('in the order of the operations') but does not add syntax or format beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: run several Houdini tools in one call. It is unmistakably the batch executor among siblings like cook, parm_set, and connect, which run one operation each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use (building a network in one round trip and one undo group) and an explicit when-not-to-use condition: 'Do not use it when a later step needs to read what an earlier step made.' The branching limitation is stated as a hard rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
captureIdempotent
Make a picture of the scene, or of the network editor, and look at it.
Modes: viewport, quad, camera, flipbook, sheet, movie, network.
Use it to confirm your own work: numbers in a node do not tell you that the
result looks wrong. Use it before you report that a task is done.
Do not use it for a final picture: render does that through a ROP.
The view goes back to where the user left it when the picture is written.
Nothing here changes the scene for good.
mode:
"viewport" — the viewport as it is now.
"quad" — four pictures: top, front, right and perspective.
"camera" — through the camera node at `camera`.
"flipbook" — a sequence over `frame_range` [start, end]. Returns the
path of the files, not a picture.
"sheet" — `node` at many frames on one picture, a tile for each
frame with its number, all from one camera that does not
move. Frames: `frames`, or `count` frames from `start`
(the current frame) at `step` (1). A step over 2 hides
movement and gives a warning: look at a short range at
step 1. `reference` is a picture to put first, to
compare. `columns`, `tile_width` set the grid. The
frames cook in order, forward, and the result gives
the cook seconds of each one.
`azimuths` (a list of angles) draws each frame from
each angle: one frame and 8 angles is a turntable.
`bounds` [xmin, ymin, zmin, xmax, ymax, zmax] is the
box to frame, for example the hands only.
"movie" — `node` over `frames` or `frame_range` (the playbar
range) as an MP4 at `fps`, `resolution` [width] wide.
Returns the path; open it in a player.
"network" — a drawing of the network `node` from the scene data:
node colors, flags, names, comments, path text, dots,
network boxes, sticky notes, and the wires in the wire
style of the network (straight or rounded, Shift+S).
`paths` are the items to frame (default all). It does
not touch the screen and works without a window.
sheet and movie draw with an OpenGL ROP, with or without a window,
over a flat grey `background`. To see where a point attribute lives, use
"sheet" with one frame and `color_by`, with `contour`, `slab` or
`vectors`.
A Houdini with no window has no viewport, and there an OpenGL ROP draws the
same picture from the same arguments over a grey background. It runs in a
new hython, so the scene gets no camera and no ROP.
Aim the view with `frame` and `fill`, with `target`, `look_from` and
`radius`, with `direction`, with `azimuth` and `elevation`, or with
`camera`.
Returns the picture, plus JSON with the state of the window: the frame, the
open file, the selection, the network in front, and which nodes carry the
display, the render and the template flag. A picture that does not change
after an edit is almost always a display flag on another node.
Houdini without a GUI has no viewport: then the result says so and names
the next action.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | movie: frames per second. | |
| fill | No | How much of the picture the framed thing takes: 0.9 leaves air around it, 1.0 fills it. | |
| mode | No | One of "viewport", "quad", "camera", "flipbook", "sheet", "movie", "network". | viewport |
| node | No | The node to look at. It gets the display flag for the picture, and the flag goes back after. The viewer shows its network, and goes back after. Without `frame`, the view also frames it. | |
| slab | No | [axis, thickness], for example ["z", 0.1]: draw only the points in a thin cut through the middle, so the inside of a solid cloud shows. | |
| step | No | sheet: the frames between tiles. Over 2 hides movement and gives a warning. | |
| count | No | sheet: how many tiles, when frames is not given. | |
| frame | No | What to frame the view on: "selection", "all", or a node path (the box of what that node cooked). | |
| paths | No | network: the items to frame in the network editor. | |
| start | No | sheet: the first frame. Without it, the current frame. | |
| bounds | No | sheet: [xmin, ymin, zmin, xmax, ymax, zmax], the box to frame. | |
| camera | No | camera mode: the camera node to look through. On a LOP network with `renderer`, a USD camera prim. | |
| frames | No | One frame, a list, or {"start": 1, "end": 10, "step": 2}: one picture for each. sheet: the frames of the tiles. The playbar goes back after. A picture that holds only the background is an error. | |
| output | No | The file to write. Without it, a temporary file. | |
| radius | No | The distance between target and look_from. | |
| settle | No | Seconds that a renderer such as Karma draws before each picture. Karma starts from noise: 20 to 30 gives a clean frame. With frames or in flipbook mode it renders a sequence through the viewport, with no husk and no render license. | |
| target | No | [x, y, z]: the point that the view turns around. | |
| azimuth | No | Degrees around the up axis, around what the view frames. 0 looks from the front. Nothing is added to the scene. | |
| columns | No | sheet: tiles in each row. | |
| contour | No | sheet: a step. Colour by the fraction of the value over the step, so the lines of equal value show, for example the shells of a distance field. | |
| shading | No | One of "smooth", "smooth_wire", "flat", "wireframe". | |
| vectors | No | sheet: a scale. Draw a line along the color_by vector from up to about 3000 points. An empty result is an error. | |
| azimuths | No | sheet: a list of angles; each frame is drawn from each angle. | |
| color_by | No | sheet and movie: colour the points by this attribute, blue at the low end of color_range and red at the high end. A vector uses its length. | |
| renderer | No | The Hydra renderer of a viewer on a LOP network, for example "Karma CPU". An unknown name lists the ones available. | |
| direction | No | The view axis: "top", "front", "left", "right", "back", "bottom" or "persp". | |
| elevation | No | Degrees above the ground, with azimuth. 30 with azimuth 45 is a three-quarter view. | |
| look_from | No | [x, y, z]: the point that the view looks from. | |
| reference | No | sheet: a picture file to put in the first tile, to compare. | |
| background | No | sheet and movie: the grey of the background, 0-255. Smoke reads best on mid grey. | |
| resolution | No | [width, height] in pixels. The height follows the shape of the viewport, so the picture is not stretched. | |
| tile_width | No | sheet: the width of each tile in pixels. | |
| color_range | No | [low, high] for color_by. Without it, [0, 1]. | |
| frame_range | No | flipbook and movie: [start, end]. |
connectIdempotent
Change how nodes feed each other.
Modes: connect, disconnect, reorder.
Use it after node_edit made the nodes. A list of wires goes in one undo
group and one round trip.
Do not use it to wire a node that you make now: node_edit mode "create"
takes `input_path` and wires it in the same call. Do not use it to read the
wires: scene_overview mode "network" lists them.
mode:
"connect" — src_path feeds dst_path. dst_input_index chooses the
input, src_output_index the output. Both count from 0.
A wire into an input that has one replaces it.
Either end can be a network dot.
"disconnect" — path loses the wire on input_index.
"reorder" — path takes its inputs in the order input_indices.
For several wires, give `items`: for "connect", each item has src_path and
dst_path, and can have dst_input_index and src_output_index; for
"disconnect", each item has path, and can have input_index.
Returns JSON, one line for each wire, with the paths that Houdini used.
An input index that the node does not have is reported, not dropped.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "connect", "disconnect", "reorder". | connect |
| path | No | disconnect and reorder: the node whose inputs change. | |
| items | No | A list of wires for "connect" or "disconnect", each a dictionary with the keys of one wire, for example {"src_path": "/obj/geo1/grid1", "dst_path": "/obj/geo1/mountain1"}. An argument outside items is the default for each one. | |
| dst_path | No | connect: the node or network dot whose input takes the wire. | |
| src_path | No | connect: the node or network dot whose output feeds the wire. | |
| input_index | No | disconnect: the input that loses its wire, from 0. | |
| input_indices | No | reorder: the old input indices in their new order, for example [1, 0]. | |
| dst_input_index | No | connect: the input of dst_path, from 0. | |
| src_output_index | No | connect: the output of src_path, from 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
consoleARead-only
Read the Houdini log and the node errors.
Use it when something did not do what you expected. A cook error often
hides behind an empty result: the geometry has no points, and the reason is
here.
Do not use it for the errors of nodes that you cook now: cook returns them,
with the nodes upstream that failed. scene_overview mode "errors" lists every
node with a cook error, without the log.
Each call takes the log entries away, so a call returns only what is new
since the call before it.
Returns JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many log entries come back, the newest ones. | |
| source | No | Keep the entries whose source holds this text, for example "Python". | |
| severity | No | Keep one level only: "message", "important", "warning", "error" or "fatal". | |
| root_path | No | The network that node_errors walks, for example /obj or /stage. | /obj |
| node_limit | No | How many nodes with an error or a warning come back. Errors come first, and the report says how many it left out. | |
| node_errors | No | Also report the nodes under root_path that hold an error or a warning. False gives the log alone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the crucial destructive trait absent from annotations: 'Each call takes the log entries away, so a call returns only what is new since the call before it.' This is a consumption side effect that matters operationally and is consistent with idempotentHint=false. The readOnlyHint=true annotation sits alongside, and the description clarifies the non-persistent read nature rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then exclusions, then behavior. Every sentence earns its place except the trailing 'Returns JSON.', which is redundant given an output schema exists. Efficient overall with only that minor waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return structure. It fully covers purpose, routing to siblings, and the log-consumption behavior, so an agent has everything required 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 100%, so every parameter (limit, source, severity, root_path, node_limit, node_errors) is already fully documented in the schema. The description adds the relationship hint that root_path is 'the network that node_errors walks' but otherwise introduces no parameter detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (Read) and two concrete resources (the Houdini log and node errors). It is immediately distinguishable from cook (which returns live cook errors) and scene_overview (which lists erroring nodes), both named later in 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?
It states when to use it ('when something did not do what you expected', with the empty-geometry cook-error example), when NOT to use it ('Do not use it for the errors of nodes that you cook now'), and names the two alternatives (cook, scene_overview mode "errors") with the condition selecting each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookDestructive
Force work to happen, and report what the work said and what it cost.
Modes: cook, cache_write, cache_clear, sim_step, sim_reset, recook.
Use it to run a test: write a few parameters, cook a range of frames, and
read the seconds for each frame. That is one call, and it is the loop that
every look iteration needs.
Do not use it to read the result: geometry_inspect does that, and it cooks
the node as well.
mode:
"cook" — cook the nodes and return the errors, the warnings and
the time. `frames` or `frame_range` cooks over more
than one frame; the playbar goes back to where it was.
"cache_write" — write the file cache of the node. frame_range is
[start, end]; without it the node writes its own range.
"cache_clear" — remove the cached files of the node.
"sim_step" — step a DOP network num_steps frames.
"sim_reset" — clear the cache of a simulation, so that the next cook
runs it again. It accepts a DOP network and a solver
SOP such as a Pyro, FLIP, Vellum or RBD solver. After
you change anything inside a solver, reset it: the node
gives its old result back with no error and no warning.
On a solver SOP it cooks the sources first, cooks the
start frame after the reset, and reports the
primitives there. It fails when the result is empty
while the sources are not: that simulation stays
empty on every frame.
"recook" — cook again each node at or under `paths` that holds
an error or a warning, the deepest first, and say
which messages were stale (gone) and which are
current. Use it when an error names a cause that the
network does not have, such as "Infinite recursion"
with no cycle.
Cook frames here, not in an execute loop of hou.setFrame and geometry():
the viewport cooks the same nodes during the loop, and that can leave
false errors on the nodes inside a solver.
Returns JSON: the seconds in total, for each frame, and the slowest frame,
with the errors and the warnings of every node. Each frame also gives the
point count, the primitive count and the bounds of each SOP: one call
checks that a result moves or grows over a range. `ok` is false when a
node failed to cook, and `failed` then names each node upstream of it or
inside it that holds an error, with the text: the node that broke is
often another node than the one you cooked. A cook can take minutes:
the call waits, and a timeout does not stop the cook. Cook a long range in
parts of a few seconds, so that one call does not block Houdini past the
timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "cook", "cache_write", "cache_clear", "sim_step", "sim_reset", "recook". The description says what each one does. | cook |
| force | No | Cook even when Houdini thinks the node is up to date. | |
| paths | Yes | The node to cook, or a list of nodes. | |
| frames | No | One frame, a list of frames, or {"start": 1001, "end": 1010, "step": 2}. For cook. The playbar goes back after. | |
| num_steps | No | How many frames sim_step steps the DOP network. | |
| parameters | No | Values to write before the cook, as {"/obj/geo1/pyro": {"divsize": 0.05}}. The result says which writes changed nothing. | |
| frame_range | No | [start, end]: every frame between. For cook and cache_write. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
docsARead-onlyIdempotent
Read the official Houdini documentation.
This is the authority on every node, parameter, VEX function and HOM call.
Read the page before you use an API that you have not confirmed in this
session: names and enum members change between Houdini releases, and a
wrong one often fails without a message.
Do not answer from memory, and do not read sidefx.com yourself.
The pages come from the Houdini install on this machine, so they match the
build exactly. The first search on a build indexes it once, which takes a
few seconds; the index stays on disk. A page read never waits for it.
Give exactly one of `query` (search), `page` (read a page from a hit) or
`node` (the page of a node type). A node path is the only input that needs
Houdini.
Returns markdown for a page, JSON for a search.
| Name | Required | Description | Default |
|---|---|---|---|
| node | No | A node path in the scene, for example "/obj/geo1/attribwrangle1", or a node type name, for example "mountain". Returns the page of that node type. | |
| page | No | A page path from a hit, for example "nodes/sop/copytopoints". A loose name or a sidefx.com address also works. | |
| part | No | A long page comes in parts of about 20,000 characters: 2, 3 and so on read the next ones. | |
| build | No | The Houdini build to read, for example "21.0.829". Default: the build of the attached session, then $HFS, then the newest build on this machine. | |
| limit | No | query: how many hits come back. | |
| query | No | Words to search, for example "copy to points". Returns the hits with their page paths. | |
| section | No | Read only the part of a page under one heading, for example "Quick renders and flipbooks". A long page lists its headings. | |
| category | No | query: keep the search inside one folder, for example "nodes/sop", "vex/functions" or "hom/hou". node with a type name: the context, for example "sop" or "lop". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safe-read profile (readOnly/idempotent/not open-world). The description adds real behavior: pages come from the local install so they match the build, the first search indexes a build in a few seconds and persists to disk, and page reads never wait on the index. It also discloses return formats (markdown for a page, JSON for a search).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then usage rules, then operational behavior, then the parameter contract. Short paragraphs, no filler; each sentence carries a distinct instruction or disclosure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need only light mention, and the description still summarizes them. Combined with the mode contract, build defaulting behavior (session build, then $HFS, then newest), and the indexing caveat, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds meaning beyond the schema by stating the mutually exclusive mode contract ('give exactly one of query, page, or node') which the schema does not express as a oneOf, and by noting that 'node' is the only input needing a live Houdini session. It does not add detail for part/build/section/limit/category.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the official Houdini documentation') and immediately scopes it ('the authority on every node, parameter, VEX function and HOM call'). This clearly separates it from all siblings, which manipulate or inspect the live scene rather than read reference 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?
Explicit when-to-use ('read the page before you use an API that you have not confirmed in this session'), why it matters (names and enum members change between releases and wrong ones fail silently), and explicit exclusions ('do not answer from memory, do not read sidefx.com yourself'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
executeDestructive
Run code in Houdini, with the full hou module and no guard.
Modes: python, hscript, expression, vex_check, env, job.
Use it for what no other tool covers, and to confirm an API in the live
session, for example `print(dir(hou.Node))`. The code runs with the rights
of the Houdini process: it can write files, delete nodes and quit Houdini.
Do not use it to build a network: one batch of node_edit create, connect
and parm_set is also one round trip, and each step reports its errors.
`hou.Node.inputs()` skips network dots and gives the node behind them; use
`inputConnections()` and `inputItem()` for the real wiring before you
rewire or delete.
Prefer a named tool when one exists. A write in code to a parameter that
holds an expression, that is disabled or hidden, or whose range clamps the
value changes nothing, and a write to a channel reference changes another
node. The answer lists each such write in `write_warnings`; read it. If you
write the same script twice, the named tool for it is missing: say so in
the feedback at the end of the session.
mode:
"python" — run `source` as Python. Returns stdout and stderr, and
keeps them when the script raises. Print what you want
to see: the value of the last line does not come back.
"hscript" — run `source` as an HScript command.
"expression" — evaluate `source` as an expression. `language` is
"hscript" or "python".
"vex_check" — compile `source` as VEX and report the errors. Nothing
runs.
"env" — read the Houdini variable `name`, for example "HIP".
"job" — the state of the background job `job`: running, with
what it printed so far, or done, with its result.
`wait` waits for the end, up to that many seconds.
Use `file` for a script that you run again with other values. Houdini
answers nothing while a script runs: for long work, such as a sweep, use
`background` with a large `timeout`. session action='interrupt' stops it.
| Name | Required | Description | Default |
|---|---|---|---|
| job | No | job: the job id that background returned. | |
| args | No | file: the values of sys.argv[1:]. | |
| file | No | A Python file to run instead of source, as from a shell: __file__ is its path, __name__ is "__main__", args are in sys.argv[1:]. The text travels once. | |
| mode | No | One of "python", "hscript", "expression", "vex_check", "env", "job". | python |
| name | No | env: the Houdini variable to read, for example "HIP". | |
| wait | No | job: the most seconds to wait for the job to end. The answer comes when it ends or when the wait is over, with what it printed so far. | |
| source | No | The code: Python, HScript, an expression or VEX, as mode says. | |
| globals | No | Names that exist before the script runs, for example {"radius": 2.0}. | |
| timeout | No | The seconds the script may run. Past it, the script stops where it is, the answer says where, and what it changed stays. | |
| language | No | expression: "hscript" or "python". | hscript |
| background | No | python: return at once with a job id and let the script run. Read it with mode job. Until it ends, other calls are refused. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
geometry_inspectIdempotent
Read the geometry that a node produces. This cooks the node.
Modes: summary, points, prims, attrib, groups, group_members, bbox, intrinsics, nearest, skeleton, compare, try, volume_stats, volume_voxels, volume_sample, volume_compare, image, volume, export, fingerprint, stretch, inside, crossings.
Use it to confirm that a node made what you expected: the point count, an
attribute that a wrangle wrote, the shape of a volume, the size of the
bounding box.
Do not use it to read parameters: node_inspect does that.
mode:
"summary" — counts, attributes, groups, volumes, bounds. Start
here. An empty result carries the errors and the
warnings of the node, which is where the reason is.
"points" — `count` points from `start`, with `attribs`.
"prims" — `count` primitives from `start`.
"attrib" — the values of `attrib_name` on `attrib_class`
("point", "prim", "vertex", "detail"): min, max
and mean of each component over every element,
and `limit` (10) values from `start`. A vector
attribute keeps its shape. unique=True returns each
value that occurs and how many elements carry it,
which is how you find the pieces in a geometry.
"groups" — the groups of `group_type`.
"group_members" — the members of `group_name`.
"bbox" — the bounding box.
"intrinsics" — the intrinsic values of primitive `prim_index`.
"nearest" — the point nearest to `position`, for example [0,1,0].
"skeleton" — a KineFX skeleton: each joint with its name, its
parent and its transform. `pattern` keeps the names
that match ("|" between alternatives, * as a
wildcard). A KineFX import holds the skeletons on
output 1 and 2: give `output`.
"compare" — the difference from the node at `against`. Points are
matched by `match_attrib` ("name" by default), not by
their order. Use it to prove that a new node gives
the result of the node it replaces.
"try" — run `steps`, a list of
{"node_type": ..., "parameters": {...}}, on the
geometry of `path` as verbs. Nothing changes in the
scene. Use it to learn what a node would make. A
menu takes its token ("poly") or its index. A type
with no verb, such as an asset, runs as a temporary
node in a hidden network that is then deleted.
`attrib_name` reads that attribute on the result,
as mode "attrib" does, `unique` included.
"volume_stats" — every volume or VDB: resolution, voxel size, the
extremes, the mean, the sum, percentiles. `name`
reads one, `bins` adds a histogram, `threshold`
counts the voxels below and above it and gives the
world box of the voxels above it.
"volume_voxels" — one field as an array indexed [z][y][x], with its
shape and its transform. `name` is the field.
`reduce` gives one answer instead: "sum", "mean",
"max", "min", or "project_x", "project_y",
"project_z" (the sum along that axis, a 2D array).
An array past `limit` numbers is thinned.
"volume_sample" — read `names` (fields) at `positions`, or at the
points of `from_node`, with no node added to the
scene. Returns min, max, mean, percentiles, a
histogram of `bins` (10), the counts on each side of
`threshold`, and the values when there are at most
`limit` (1000).
"volume_compare" — how much of the field `name` sits in each band of the
field `against`. The answer to "how much smoke is
inside the collider". `from_node` holds `against`
when another node does, such as the collider SDF.
"image" — a COP node: resolution, planes, and `plane_name`.
"volume" — the VDB grids in a COP node.
"export" — write the geometry to disk. `format` is "obj",
"bgeo" or another that Houdini writes, and `file`
is the file path. A file that is there is
overwritten. The other modes write nothing.
"fingerprint" — for each node of `path` and each frame: counts,
bounds, a hash of P and of the attribute names.
`name` saves it. After a refactor, call it again
with `against` (the saved name) and `renamed`, and
read `compare`: what differs, or same=true.
"stretch" — how much each edge grew against the same edge of
the rest mesh `against`: max, percentiles, the
count over `threshold`, the worst edges and the
places where they are, on the rest mesh.
"inside" — the points of `path` inside the closed mesh
`against`: the count, the depth, where they are.
Run it before a cloth sim.
"crossings" — the points where the surfaces of `path` cross,
themselves or `against`, counted for each pair of
parts of `split_by`. A part with itself is a self
crossing.
Returns JSON. A large read is slow: keep `count` small and page with
`start`.
| Name | Required | Description | Default |
|---|---|---|---|
| bins | No | volume_stats, volume_sample, volume_compare: a count of equal bands, or a list of band edges, for example [-1, 0, 0.05, 0.15, 0.25]. | |
| file | No | export: the file path to write. | |
| mode | No | One of "summary", "points", "prims", "attrib", "groups", "group_members", "bbox", "intrinsics", "nearest", "skeleton", "compare", "try", "volume_stats", "volume_voxels", "volume_sample", "volume_compare", "image", "volume", "export", "fingerprint", "stretch", "inside", "crossings". | summary |
| name | No | volume_stats: one volume to read. volume_voxels, volume_compare: the field. fingerprint: save the result under this name. | |
| path | Yes | The SOP or COP node to read, or a list. A list keeps going after a node that fails, and each result names its path. | |
| count | No | points, prims: how many elements. Keep it small: a large read is slow. | |
| limit | No | attrib: how many values (10). volume_voxels: how many numbers before the array is thinned. volume_sample: return the values when there are at most this many (1000). stretch: how many of the worst edges (10). | |
| names | No | volume_sample: the fields to read. | |
| start | No | points, prims, attrib: the first element. Page with it. | |
| steps | No | try: a list of {"node_type": ..., "parameters": {...}} to run on the geometry. A menu takes its token or its index. Nothing changes in the scene. | |
| format | No | export: the file type, for example "obj" or "bgeo". | obj |
| frames | No | Read at other frames, without moving the playbar: one frame, a list, or {"start": 1001, "end": 1010, "step": 2}. One answer for each frame. | |
| output | No | The output of the node to read, 0 by default. A KineFX import has the mesh on 0, the rest skeleton on 1, the animated skeleton on 2. | |
| reduce | No | volume_voxels: one answer instead of the array: "sum", "mean", "max", "min", "project_x", "project_y" or "project_z". | |
| unique | No | attrib: return each value that occurs and how many elements carry it. That is how you find the pieces in a geometry. | |
| against | No | compare: the node to compare with. volume_compare: the field whose bands hold the field `name`. fingerprint: the name of a saved fingerprint to compare with. stretch: the rest mesh. inside: the closed mesh. crossings: a second geometry, such as the body. | |
| attribs | No | points: the attributes to return, for example ["P", "Cd"]. | |
| pattern | No | skeleton: keep the joints whose name matches. | |
| renamed | No | fingerprint: {"old path": "new path"} for the nodes that a refactor renamed or moved. | |
| position | No | nearest: [x, y, z]. | |
| split_by | No | crossings: a prim attribute, such as "name", whose values are the parts that the count pairs. | |
| from_node | No | volume_sample: read at the points of this node. volume_compare: the node that holds `against`, such as a collider SDF. | |
| positions | No | volume_sample: the [x, y, z] points to read at. | |
| threshold | No | volume_stats, volume_sample: count the voxels below and above it. volume_stats also gives the world box of the voxels above it. stretch: the growth to count, 0.1 (10 %) by default. inside: count the points deeper than this distance. | |
| group_name | No | group_members: the group to read. | |
| group_type | No | groups, group_members: "point", "prim", "vertex" or "edge". | point |
| plane_name | No | image: the COP plane to read, for example "C". | C |
| prim_index | No | intrinsics: the primitive to read. | |
| attrib_name | No | attrib, try: the attribute to read. try reads it on the result. | |
| attrib_class | No | attrib, try: "point", "prim", "vertex" or "detail". | point |
| match_attrib | No | compare: the attribute that pairs the points of the two nodes, not their order. | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
hdaDestructive
Read and change Houdini digital assets.
Modes: list, get, install, uninstall, reload, update, create, sections, section_get, section_set.
Use it when a node type comes from a .hda file: to find the file, to load a
new one, or to read the scripts and the help inside it.
Do not use it for the parameters of one node in the scene: node_inspect
does that.
mode:
"list" — the installed assets. `category` filters, for example
"Sop".
"get" — the definition of `node_type`: the file, the version
and the tools.
"install" — load the .hda file at `file_path` into the session.
"uninstall" — unload the .hda file at `file_path`.
"reload" — read the .hda file at `file_path` again, after an edit
on disk.
"update" — save the node at `node_path` back into its asset.
"create" — make an asset from the subnet at `node_path`, with
`name`, `label` and `file_path`.
"sections" — the section names inside `node_type`.
"section_get" — the text of `section_name`, for example "PythonModule".
"section_set" — write `content` into `section_name`.
Returns JSON. "install" and "uninstall" change every node of that type in
the session.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "list", "get", "install", "uninstall", "reload", "update", "create", "sections", "section_get", "section_set". | list |
| name | No | create: the type name of the new asset. | |
| label | No | create: the name that the TAB menu shows. | |
| content | No | section_set: the text to write into the section. | |
| category | No | list: keep one node category, for example "Sop". | |
| file_path | No | install, uninstall, reload: the .hda file. create: the file to write. | |
| node_path | No | update: the node to save into its asset. create: the subnet to make an asset from. | |
| node_type | No | get, sections, section_get, section_set: the asset type, as list names it, for example "labs::edge_damage::1.0", or with its category, "Sop/labs::edge_damage::1.0". | |
| section_name | No | section_get, section_set: the section, for example "PythonModule". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
node_editDestructive
Change the nodes in a network. One item, or a list in one undo group.
Modes: create, delete, copy, move, rename, flags, color, layout, insert, place_chain, wrangle, material, assign_material, take, current_network, note, box, split.
Use it to build a network. Then use parm_set for the values, and connect
for the wires.
Do not compute positions: create with input_path, insert and place_chain
place the nodes the way the user lays out a graph, move a node of the user
only down to make room, and return every node that moved with its old and
new position. Each returns the layout faults it sees.
Do not use it to set parameters: parm_set does that, and it reports a write
that had no effect.
mode, and the arguments that each mode reads:
"create" — node_type, parent_path, name, position,
parameters, input_path. context selects the
network kind: "sop" (default), "cop", "chop",
"lop", "material_network".
"delete" — path or paths: nodes, dots, sticky notes or
network boxes. A node that still feeds a node
outside paths is refused, with the list of its
readers, unless force=true.
"copy" — paths (or path), destination_path, suffix,
names. Copies a set of nodes with the wires
between them; a wire from outside the set goes to
the same node. suffix is added to each name, or
names maps a source path or name to a new name.
Returns `copies`, each source path with the path
of its copy: use that map, never the order of a
list. Without destination_path the copies go to
the right of the sources.
"move" — path with destination_path to put it in another
network, or path with position to move it on the
canvas.
"rename" — path, new_name.
"flags" — path, display, render, bypass. The display flag
and the render flag are different flags.
"color" — path, color as [r, g, b] from 0 to 1.
"layout" — path: lay out the children of that network:
each node under its first input (a straight
wire), side inputs from the right in port order,
a source one row above its reader, long wires down
a lane through dots. Give `paths` to lay out only
those nodes. Without it the whole network moves,
including the nodes the user placed by hand, and
the result says so.
"insert" — node_type (or path of a node), input_path, and
reader: put the node on every wire from
input_path into reader (all streams of a Vellum
chain), or into every reader. The nodes below
move down only by the room it needs.
"place_chain" — paths (in order), reader, input_index: wire the
chain into that input and place it as a side
chain, its own column right of the reader, last
node one row above it. Wire a side result into
the node that really reads it, not through
pass-through ports of a chain.
"split" — path (a SOP network) and stages: move the nodes
of each stage into a subnet of that name. Each
result that another stage reads gets an OUT_
Null, and each reader an IN_ Object Merge.
Node paths in parameters, expressions and VEX
code are rewritten for the new places. Returns
each rewrite and each path it could not
resolve. Undo puts it back in one step.
"wrangle" — parent_path with code to make a wrangle, or path
with code to write into one. code_file reads the
code from a file, so a long snippet travels once.
replace edits a snippet in place: a list of
{"old": ..., "new": ...}, and each `old` must
appear exactly once.
"material" — path, material_type, name, parameters.
"assign_material" — path, material_path.
"take" — name to make a take, or take_name to select one.
"current_network" — path: what the network editor shows.
"note" — parent_path, text, position, color: a sticky
note. Without position it goes to the right of
the nodes.
"box" — paths, text, color: a network box around those
nodes, with text as its comment.
Returns JSON. Houdini adds a numeric suffix when a name is already used, so
read the path in the result and use that path from then on. Never look the
node up again by the name you asked for.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | wrangle: the VEX snippet. | |
| mode | No | One of "create", "delete", "copy", "move", "rename", "flags", "color", "layout", "insert", "place_chain", "wrangle", "material", "assign_material", "take", "current_network", "note", "box", "split". | create |
| name | No | create, material: the name of the new node. take: the name of a new take. | |
| path | No | The node to change. layout: the network. delete: a node, a sticky note or a network box. | |
| text | No | note: the text of the note. box: the comment of the box. | |
| color | No | color, note, box: [r, g, b] from 0 to 1. | |
| force | No | delete: delete a node that still feeds a node that stays. | |
| items | No | A list of items for a repeated action, each a dictionary with the keys of one call. An argument outside items is the default for each one. | |
| names | No | copy: a new name for each source, by source path or name. | |
| paths | No | copy: the nodes to copy. delete: the nodes to delete together. layout: place only these nodes. place_chain: the chain, in order. box: the nodes to put in the box. | |
| bypass | No | flags: the bypass flag. | |
| reader | No | insert: only the wires into this node. place_chain: the node that the chain feeds. | |
| render | No | flags: the render flag, which is not the display flag. | |
| stages | No | split: {"stage name": ["node", ...]}, the nodes of `path` for each subnet. | |
| suffix | No | copy: text added to the name of each copy. | |
| context | No | create: the network kind, "sop" (default), "cop", "chop", "lop" or "material_network". | |
| display | No | flags: the display flag. | |
| replace | No | wrangle: edit the snippet in place, a list of {"old": ..., "new": ...}. Each old must appear exactly once. | |
| new_name | No | rename: the new name. | |
| position | No | create, move, note: [x, y] on the canvas. | |
| code_file | No | wrangle: read the VEX from this file, so a long snippet travels once. | |
| node_type | No | create: the node type, for example "box" or "attribwrangle". | |
| take_name | No | take: the take to make current. | |
| input_path | No | create: the node that feeds the new node. It saves a connect call and places the node under its input. insert: the node whose output wires get the new node. | |
| parameters | No | create, material: values to set on the new node, by parameter name. | |
| input_index | No | place_chain: the input of reader that the chain feeds. | |
| parent_path | No | create, wrangle, note: the network that gets the new node. | |
| material_path | No | assign_material: the material node. | |
| material_type | No | material: the shader type, for example "principledshader". | |
| destination_path | No | copy, move: the network to put the nodes in. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
node_inspectRead-onlyIdempotent
Read one node, or a list of nodes, without changing anything.
Modes: info, parms, schema, changed, names, expression, keyframes, code, cook_chain, explain, material, image, channels, simulation, render_settings, cache, time_dependency, validate, layout, readers.
Use it before you write: to confirm a parameter name, to see whether a
parameter carries an expression, and to read what a node reports after a
cook.
Do not use it to list a network: scene_overview does that.
mode:
"info" — type, inputs, outputs, flags, changed parameters.
"parms" — every parameter, or one parameter when you give
`parm`. The result says whether the value comes
from an expression.
"schema" — the parameter templates: types, ranges, menus.
Read this before you write a menu parameter.
"changed" — only the parameters that a person set: not at the
default, or with an expression or keys. Folders,
labels, buttons and hidden fields are left out, and
a ramp is one entry with its keys.
"names" — the names of the parameters, and nothing else. Read
this first when you do not know the name to write.
"expression" — the expression on `parm`, and its language.
"keyframes" — the keys on `parm`.
"code" — the VEX snippet in a wrangle node.
"cook_chain" — what this node cooks from, upstream.
"explain" — a short account of what the node does here.
"material" — the shader parameters of a material node.
"image" — the COP node: resolution, planes, data type.
"channels" — CHOP channels. `channel`, `start` and `end` read
the samples of one channel.
"simulation" — the DOP network. `object_name` reads one object,
with `field_name` one field of it.
"render_settings" — the parameters of a ROP node.
"cache" — the file cache state of a node.
"time_dependency" — which nodes under this one cook again on every
frame, and what makes each one do it. With
`frames` it times each one and sorts by the time.
"validate" — the names in the parameters of the node that name
nothing: a group, an attribute or a volume that the
input geometry does not hold. That is the failure
that gives a wrong result with no error.
"layout" — for a network: each node that sits above its input,
and each pair of nodes in one slot, where one name
covers the other. Read it after you add nodes.
"readers" — the parameters that read `parm` through a channel
reference or an expression: what else a write to
it changes.
A solver has hundreds of parameters: give pattern or fields.
Returns JSON. A cook error comes back in the result: an empty geometry with
no error line means the node cooked and made nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | channels: the last sample frame. | |
| mode | No | One of "info", "parms", "schema", "changed", "names", "expression", "keyframes", "code", "cook_chain", "explain", "material", "image", "channels", "simulation", "render_settings", "cache", "time_dependency", "validate", "layout", "readers". | info |
| parm | No | parms, expression, keyframes, readers: the parameter name. | |
| paths | Yes | One node path, or a list. A list keeps going after a node that fails, and each result names its path. | |
| start | No | channels: the first sample frame. | |
| fields | No | parms, changed: keep only these keys of each parameter, for example ["value", "expression"]. The name is always kept. | |
| frames | No | Read at another frame, or at several: one frame, a list, or {"start": 1, "end": 10, "step": 2}. With time_dependency, time each node. The playbar goes back after. | |
| channel | No | channels: the CHOP channel whose samples to read. | |
| pattern | No | parms, changed: keep the parameters whose name or label holds this text or matches it as a glob. "|" separates alternatives: "time|step|cfl". | |
| field_name | No | simulation: the field of object_name to read. | |
| object_name | No | simulation: the DOP object to read. | |
| has_expression | No | parms: keep only the parameters that carry an expression. | |
| include_all_parms | No | info: list every parameter, not only the ones that changed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
parm_setDestructive
Write parameter values, or press a button. One write, or a list in one undo group.
Modes: value, press, expression, keyframe, keyframes, delete_keyframe, revert, lock, link, spare, render_settings, chop_export, snapshot, restore, diff.
Use it after node_inspect has confirmed the parameter name and the type.
A write can be accepted and change nothing, and Houdini says nothing. This
tool looks for all six causes and names the one it found:
- the parameter carries an expression, which still decides the value;
- the parameter is animated, so the value became a new key;
- the parameter is locked;
- another parameter disables or hides it, so the cook does not read it;
- a strict range clamped the value;
- the parameter reads another node through a channel reference, so the
write would change that other node. It is refused; give
`follow_reference=true` to write the node at the other end.
Read `warnings` and `not_applied` in the result before you report success.
mode, and the arguments that each mode reads:
"value" — path, parm, value. Or path and parameters, a
dictionary of several names and values. A menu
takes its token, for example "custom". A
bit-field menu takes a token or a list of them.
"press" — path, parm: press a button, for example Save to
Disk on a File Cache, Reload on a File SOP, or
Resimulate on a solver. The result holds the errors
and the warnings of the node after the press,
because work that a button starts fails later and
in silence.
"expression" — path, parm, expression, language ("hscript" or
"python").
"keyframe" — path, parm, frame, value.
"keyframes" — path, parm, keyframes: a list of {frame, value}.
"delete_keyframe" — path, parm, frame.
"revert" — path, parm: back to the default, and the
expression goes away.
"lock" — path, parm, locked.
"link" — src_path, src_parm, path, parm: the parameter at
path follows the one at src_path.
"spare" — path, parameters: a list of controls to add, each
{name, label, type, default, min, max, strict,
help, value, expression, items}. type is "float",
"int", "vector", "toggle", "string", "menu" (with
items), "ramp" or "color_ramp" (default: a list of
[position, value]). One control can also come as
name, label, parm_type, default, expression.
On a wrangle it first does what the Create
Parameters button does, a parameter for each ch()
call, and puts every control in that folder above
the code. Use it instead of numbers typed into VEX:
the user tunes these. A control that exists is
replaced in place, so a second call is safe.
"render_settings" — path, settings for a ROP node.
"chop_export" — chop_path, channel_name, path, parm.
"snapshot" — name, paths: save every parameter of these nodes,
with expressions, keys and the bypass flag, to the
record `name` on disk. "/obj/geo1/*" names every
node in a network. It overwrites a record of the
same name.
"restore" — name: put the record back, and list what changed.
`paths` limits it to some of the nodes.
"diff" — name: list how the scene differs from the record.
Changes nothing.
In a sweep, restore before each variant, not once
at the end: a variant that does not name a
parameter keeps the value of the one before.
Returns JSON with the value before, the value after, and a reason when the
write did not take.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "value", "press", "expression", "keyframe", "keyframes", "delete_keyframe", "revert", "lock", "link", "spare", "render_settings", "chop_export", "snapshot", "restore", "diff". | value |
| name | No | spare: the name of one control. snapshot, restore, diff: the record on disk. | |
| parm | No | The parameter name, for example "tx" or "divsize". | |
| path | No | The node that holds the parameter. | |
| frame | No | keyframe, delete_keyframe: the frame of the key. | |
| items | No | A list of writes, each a dictionary with the keys of one call. An argument outside items is the default for each one. | |
| label | No | spare: the label of one control. | |
| paths | No | snapshot: the nodes to save; "/obj/geo1/*" names every node in a network. restore: put back only these nodes. | |
| value | No | value, keyframe: the value to write. A menu takes its token. | |
| locked | No | lock: true locks the parameter, false unlocks it. | |
| default | No | spare: the default of one control. | |
| language | No | expression: "hscript" or "python". | |
| settings | No | render_settings: the ROP parameters to write, by name. | |
| src_parm | No | link: the parameter to follow. | |
| src_path | No | link: the node to follow. | |
| chop_path | No | chop_export: the CHOP node. | |
| keyframes | No | keyframes: a list of {frame, value}. | |
| parm_type | No | spare: the type of one control, for example "float" or "toggle". | |
| expression | No | expression: the expression text. | |
| parameters | No | value: several names and values in one write, as a dictionary. spare: the list of controls to add. | |
| channel_name | No | chop_export: the channel that drives the parameter. | |
| follow_reference | No | Write the node at the other end of a channel reference. Without it, a write through a reference is refused. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
pdgDestructive
Cook a TOP network, and read what its work items did.
Modes: status, workitems, cook, dirty, cancel.
Use it for a TOP network only. A TOP node does not cook like a SOP: it
makes work items, and each item runs on its own. For a SOP or a DOP, use
cook. For a ROP, use render.
mode:
"status" — the counts for each state, and whether a cook runs now.
"workitems" — the items. `state` filters, for example "failed".
"cook" — start the cook. The call comes back at once; read
"status" after it to follow the work.
"dirty" — mark the node dirty. `dirty_all` also removes the
outputs on disk.
"cancel" — stop the cook that runs now.
Returns JSON. A failed item holds the command and the log path: read those
before you change the network.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "status", "workitems", "cook", "dirty", "cancel". | status |
| path | Yes | The TOP network or the TOP node. | |
| state | No | workitems: keep the items in this state, for example "failed" or "cooked". | |
| dirty_all | No | dirty: also remove the outputs of the node on disk. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
playbarIdempotent
Read or set the time of the session.
Modes: get, frame, range, playback, play.
Use it before you read geometry that changes over time: a SOP cooks at the
current frame, so the frame decides what you see.
Do not use it only to read another frame: geometry_inspect, node_inspect
and stage_inspect take `frames` and put the playbar back after. A frame
that you set here stays for the person and for every later call, and
"range" also changes what a flipbook covers, and a ROP whose range
follows $FSTART and $FEND.
mode:
"get" — the current frame and time.
"frame" — go to `frame`.
"range" — set the scene frame range to `start` and `end`.
"playback" — set the playback range inside the scene range.
"play" — `action` is "play", "stop", "next", "previous", "start"
or "end". Playback needs a GUI.
Returns JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | range and playback: the last frame. | |
| mode | No | One of "get", "frame", "range", "playback", "play". | get |
| frame | No | frame: the frame to go to. | |
| start | No | range and playback: the first frame. | |
| action | No | play: "play", "stop", "next", "previous", "start" or "end". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
render
Start a render, read its settings, or watch it run.
Modes: start, progress, settings, create, watch, stats, compare.
Use it for a final picture through a ROP node. For a fast look at the
viewport, use capture instead: it is much quicker.
mode:
"start" — render the ROP at `path`. `frame_range` is [start, end];
without it the node renders its own range. `output_path`
and `res_scale` hold for this render only: the ROP keeps
the output and the size of the user. Use them for test
renders. `wait=true` returns when every image is
complete (husk ended; up to about 28 minutes), with the
render stats of the last one. Without wait, husk can go
on after the call.
"progress" — what the ROP reports about the render.
"settings" — the output file, the camera, the resolution and the
range of the ROP; the render delegate that really runs
(`engine` cpu or xpu, and `engine_from`: the ROP
renderer, else husk:default_delegate on the render
settings prim); a warning when a Karma settings node
says another engine; and the changed Karma settings,
split into the ones that engine reads and the ones it
ignores, with the reason. Karma XPU shows the CPU
Quality controls and ignores them; its Limits tab
counts. parm_set and execute warn on a write that the
engine of the node ignores.
"create" — make a ROP of `render_type` ("opengl", "karma", "mantra",
"ifd", …) named `name` under `parent_path`.
"watch" — count the husk and mantra processes on this machine, and
say whether the file at `output_path` is there and how big
it is. This mode does not need Houdini, so it also works
while Houdini is busy with the render.
"stats" — what husk wrote into the image at `output_path`
(husk:render_stats): render time, the engine that really
ran, each XPU device with its share of the samples,
shader compiles, peak memory, the AOVs. A GPU at 0 %
with compiles in progress is not a slow GPU.
"compare" — the mean and the largest absolute difference of each AOV
of `output_path` against `reference`, to tune samples
against a clean render.
Returns JSON. A render that writes no file, with no process running, has
failed: read the node with cook to see the error.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "start", "progress", "settings", "create", "watch", "stats", "compare". | start |
| name | No | create: the name of the new ROP. | |
| path | No | start, progress, settings: the ROP node. | |
| wait | No | start: return when every image is complete, with its render stats. | |
| reference | No | compare: the image to compare `output_path` with. | |
| res_scale | No | start: a fraction of the resolution for this render only, 0.5 is half. | |
| frame_range | No | start: [start, end] or [start, end, step]. Without it the ROP renders its own range. | |
| output_path | No | start: the image file for this render only (put $F4 in it for a range). watch, stats, compare: the image file. | |
| parent_path | No | create: the network that gets the ROP. | /out |
| render_type | No | create: the ROP kind, for example "opengl", "karma", "mantra" or "ifd". | opengl |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
scene_fileDestructive
Read, save or load the scene file, or step its undo history.
Modes: info, save, load, undo, redo.
Use "save" before a change that is hard to undo, and use "info" to learn
whether the session holds work that is not saved.
mode:
"info" — the file name, the frame range, the counts, and whether the
session has changes that are not saved.
"save" — save to `path`, or over the open file when `path` is empty.
"load" — open the .hip file at `path`. Everything in the session goes
away, and the undo history with it.
"undo" — undo `count` steps. Each call of a tool that changes the
scene is one step. A batch is one step, except a batch with a
step that waits (capture, render): there each step is one.
Returns the labels it undid and the next ones.
"redo" — redo `count` steps.
Returns JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "info", "save", "load", "undo", "redo". | info |
| path | No | save: the file to write; empty saves over the open file. load: the .hip file to open. | |
| count | No | undo and redo: how many steps. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
scene_overviewRead-onlyIdempotent
List what the scene holds. Start here, before you touch a node.
Modes: scene, network, children, search, node_types, errors, materials, lights, takes, caches, render_nodes, viewports, changes.
Use it to find a node path, to see the shape of a network, or to learn
which node types this Houdini has.
Do not use it to read one node in detail: node_inspect does that. Do not
use it to read geometry: geometry_inspect does that.
mode:
"scene" — file, frame range, counts, and the top of the tree.
"network" — the children of one network by name, with their
wires, flags and dots. Each input names the dot it
comes through, then the node behind the dot.
`pattern` and `node_type` keep some nodes;
compact=True gives only the wires.
"children" — the children of `path`. recursive=True walks down.
"search" — nodes whose name matches `pattern`, under `path`.
node_type filters by type name.
"node_types" — the node types this Houdini has, for one `category`
such as "Sop", "Object", "Lop", "Driver". `pattern`
keeps the names or labels that match.
"errors" — every node under `path` that has a cook error.
"materials" — the materials in `path` (default /mat) and the types.
"lights" — the lights on the USD stage of the LOP node `path`.
"takes" — the takes, and which take is current.
"caches" — file caches under `path` and their state on disk.
"render_nodes" — the ROP nodes in /out.
"viewports" — the panes, and what the scene viewer shows.
"changes" — what the user changed in the network `path` since
your last call: nodes added, deleted, renamed or
moved, wires, flags and parameter values. Your own
changes are not listed. The first call starts to
watch the network; call it at the start of each
turn, before you change anything there.
Returns JSON. A path that does not exist comes back as an error, not as an
empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "scene", "network", "children", "search", "node_types", "errors", "materials", "lights", "takes", "caches", "render_nodes", "viewports", "changes". | scene |
| path | No | A node path such as "/obj" or "/obj/geo1": the network to list or to search. | |
| compact | No | network: return only the wires, one line each. | |
| pattern | No | search: the name to match, with * and ? as wildcards. network, node_types: keep the names that match; "|" separates alternatives, for example "*retarget*|*ik*". | |
| category | No | node_types: the context, for example "Sop", "Object", "Lop" or "Driver". | |
| node_type | No | search, network: keep the nodes of this type, for example "null". | |
| recursive | No | children: also list the children of the children. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
selectAIdempotent
Read the node selection, or set it.
Use it to see what the person works on before you change the scene, and to
show them your result when you are done. Do not use it to find nodes:
scene_overview mode "search" does that.
A path is the full path of a node, for example "/obj/geo1/mountain1". A
path that is not a node stops the call with an error, and the selection
stays as it was.
Returns JSON with the selected paths.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Leave it out to read the selection. One path or a list of paths replaces it. An empty list clears it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the description's job is to add context beyond that, which it does: an invalid path aborts the call and leaves the selection unchanged, and the return is JSON with the selected paths. It stops short of stating permission or concurrency implications of a mutation, so a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core read/write distinction, then usage, then the path format contract. The line-broken layout is slightly choppy but every sentence carries distinct information and none is 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 single-parameter dual-mode tool with annotations covering the safety profile and an output schema covering return shape, the description supplies everything needed: both modes, usage conditions, the alternative for searching, path format, and failure 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 100% and the schema already documents the three modes (omit to read, one/list to replace, empty list to clear). The description adds value on top of that by giving the path format with a concrete example ("/obj/geo1/mountain1") and the error behavior for a non-node 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?
The opening sentence states a specific verb and resource with both modes: 'Read the node selection, or set it.' It then explicitly distinguishes itself from the sibling that could be confused for it (scene_overview mode "search"), so an agent can pick correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use contexts ("see what the person works on before you change the scene, and to show them your result when you are done") and an explicit when-not-to-use with the alternative named ("Do not use it to find nodes: scene_overview mode 'search' does that"). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessionDestructive
Report the Houdini sessions, choose one, or start, stop or interrupt one.
Actions: status, list, attach, detach, interrupt, start, start_gui, stop.
Use it first when a tool says that Houdini is not reachable, and use it to
learn the Houdini version before you use an API that changed between
releases.
Several Houdini sessions can listen at the same time: the graphical one that
holds the work of the user, and a headless one for your own tests. Every
tool result names the session that answered, in `_session`. Read that line
when a scene looks empty or wrong: an empty scene is usually the wrong
session, not a lost scene.
Do not use it to read the scene: scene_overview does that.
action:
"status" — the session that the bridge talks to now, the other
sessions, and the port. Starts nothing, and always
answers.
"list" — every Houdini that runs, with its version, its process
id, its .hip file, whether it has a window and whether it
answers; and the Houdini versions installed.
"attach" — send every later command to the Houdini on `port`. Use it
when "list" shows more than one.
"detach" — forget the attached port and let the bridge choose again.
"interrupt" — stop the call that runs now in the attached Houdini, or
in the one on `port`: a script past its budget, a loop
that will not end. Houdini answers again after it. A
single long cook does not return to Python; then, in a
Houdini with a window on Windows, it sends Escape to
the window, as the user would. A stopped simulation
keeps a partial cache.
"start" — start a headless Houdini (hython) and attach to it.
`version` chooses the release, for example "21.0" or
"21.0.829"; without it, the version of the Houdini window
that runs. A Houdini that already runs is not touched, so
this is the safe way to test while a person works.
"start_gui" — start Houdini with its window and wait for the plugin to
answer, up to 4 minutes. It opens the .hip file at `hip`
when you give one, it stays open when the bridge stops,
and the bridge attaches to it. `version` as for "start".
"stop" — stop the headless Houdini that this bridge started. A
Houdini that you started yourself, or with "start_gui", is
not touched.
Returns JSON. The report says what to do next when nothing answers.
| Name | Required | Description | Default |
|---|---|---|---|
| hip | No | start_gui: the .hip file to open. | |
| port | No | attach: the port of the Houdini to talk to, from list. interrupt: the Houdini to interrupt, when not the attached one. | |
| action | No | One of "status", "list", "attach", "detach", "interrupt", "start", "start_gui", "stop". | status |
| version | No | start and start_gui: the Houdini release, for example "21.0" or "21.0.829". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
stage_inspectRead-onlyIdempotent
Read the USD stage at a LOP node. This cooks the node.
Modes: stage, prims, prim, search, layer, attribute, composition, variants, stats, modified, lights, transform.
Use it in a Solaris (LOP) network to see the prims, the layers and the
composition that a node produces.
Do not use it for SOP geometry: geometry_inspect does that.
mode:
"stage" — the stage: prim count, layers, the default prim.
"prims" — the prim tree from `root_prim`, `max_depth` deep.
"prim" — one prim at `prim_path`. include_attrs=True adds its
attributes.
"search" — prims whose path matches `pattern`, filtered by
`type_name` such as "Mesh" or "SphereLight".
"layer" — the layer stack, and the layer at `layer_index`.
"attribute" — the value of `attr_name` on `prim_path`.
"composition" — where the opinions on `prim_path` come from: each
layer of its prim stack, strongest first, with the
node that wrote it (the SOP behind an op: layer) and
its references and payloads.
"variants" — the variant sets on `prim_path` and the selection.
"stats" — counts under `prim_path`.
"modified" — the last `count` prims that this node changed. Use it
to see what one LOP did.
"lights" — the lights on the stage.
"transform" — where `prim_path` is in the world: translate, rotate
and scale composed through every parent. With
`frames`, the path of a moving prim.
Returns JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | One of "stage", "prims", "prim", "search", "layer", "attribute", "composition", "variants", "stats", "modified", "lights", "transform". | stage |
| path | Yes | The LOP node whose stage to read. | |
| count | No | modified: how many prims come back. | |
| frames | No | Read at another frame, or at several: one frame, a list, or {"start": 1, "end": 10, "step": 2}. The playbar goes back after. | |
| pattern | No | search: the prim path to match, with * as a wildcard. | |
| attr_name | No | attribute: the attribute to read, for example "points". | |
| max_depth | No | prims: how many levels of the tree come back. | |
| prim_path | No | prim, attribute, composition, variants, stats, transform: the prim, for example "/world/geo/rock". | |
| root_prim | No | prims: the prim where the tree starts. | / |
| type_name | No | search: keep the prims of this type, for example "Mesh" or "SphereLight". | |
| layer_index | No | layer: which layer of the stack, from 0 (the strongest). | |
| include_attrs | No | prim: also return the attributes of the prim. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.8.0- Changed
capture4 fields changed- added
Input schema / properties / azimuthsAdded value: +{ + "description": "sheet: a list of angles; each frame is drawn from each angle.", + "items": { + "type": "number" + }, + "type": "array" +} - added
Input schema / properties / boundsAdded value: +{ + "description": "sheet: [xmin, ymin, zmin, xmax, ymax, zmax], the box to frame.", + "items": { + "type": "number" + }, + "type": "array" +} - changed
Input schema / properties / mode / descriptionPrevious value: -"One of \"viewport\", \"quad\", \"camera\", \"flipbook\", \"sheet\", \"movie\"."New value: +"One of \"viewport\", \"quad\", \"camera\", \"flipbook\", \"sheet\", \"movie\", \"network\"." - added
Input schema / properties / pathsAdded value: +{ + "description": "network: the items to frame in the network editor.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
connect2 fields changed- changed
Input schema / properties / dst_path / descriptionPrevious value: -"connect: the node whose input takes the wire."New value: +"connect: the node or network dot whose input takes the wire." - changed
Input schema / properties / src_path / descriptionPrevious value: -"connect: the node whose output feeds the wire."New value: +"connect: the node or network dot whose output feeds the wire."
- Changed
cook1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"One of \"cook\", \"cache_write\", \"cache_clear\", \"sim_step\", \"sim_reset\". The description says what each one does."New value: +"One of \"cook\", \"cache_write\", \"cache_clear\", \"sim_step\", \"sim_reset\", \"recook\". The description says what each one does."
- Changed
execute1 field changed- added
Input schema / properties / waitAdded value: +{ + "default": 0, + "description": "job: the most seconds to wait for the job to end. The answer comes when it ends or when the wait is over, with what it printed so far.", + "type": "number" +}
- Changed
geometry_inspect14 fields changed- changed
Input schema / properties / against / descriptionPrevious value: -"compare: the node to compare with. volume_compare: the field whose bands hold the field `name`."New value: +"compare: the node to compare with. volume_compare: the field whose bands hold the field `name`. fingerprint: the name of a saved fingerprint to compare with. stretch: the rest mesh. inside: the closed mesh. crossings: a second geometry, such as the body." - changed
Input schema / properties / attrib_class / descriptionPrevious value: -"attrib: \"point\", \"prim\", \"vertex\" or \"detail\"."New value: +"attrib, try: \"point\", \"prim\", \"vertex\" or \"detail\"." - changed
Input schema / properties / attrib_name / descriptionPrevious value: -"attrib: the attribute to read."New value: +"attrib, try: the attribute to read. try reads it on the result." - added
Input schema / properties / fileAdded value: +{ + "description": "export: the file path to write.", + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"attrib: how many values (10). volume_voxels: how many numbers before the array is thinned. volume_sample: return the values when there are at most this many (1000)."New value: +"attrib: how many values (10). volume_voxels: how many numbers before the array is thinned. volume_sample: return the values when there are at most this many (1000). stretch: how many of the worst edges (10)." - changed
Input schema / properties / mode / descriptionPrevious value: -"One of \"summary\", \"points\", \"prims\", \"attrib\", \"groups\", \"group_members\", \"bbox\", \"intrinsics\", \"nearest\", \"skeleton\", \"compare\", \"try\", \"volume_stats\", \"volume_voxels\", \"volume_sample\", \"volume_compare\", \"image\", \"volume\", \"export\"."New value: +"One of \"summary\", \"points\", \"prims\", \"attrib\", \"groups\", \"group_members\", \"bbox\", \"intrinsics\", \"nearest\", \"skeleton\", \"compare\", \"try\", \"volume_stats\", \"volume_voxels\", \"volume_sample\", \"volume_compare\", \"image\", \"volume\", \"export\", \"fingerprint\", \"stretch\", \"inside\", \"crossings\"." - changed
Input schema / properties / name / descriptionPrevious value: -"volume_stats: one volume to read. volume_voxels, volume_compare: the field."New value: +"volume_stats: one volume to read. volume_voxels, volume_compare: the field. fingerprint: save the result under this name." - added
Input schema / properties / output / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - changed
Input schema / properties / output / descriptionPrevious value: -"export: the file path to write."New value: +"The output of the node to read, 0 by default. A KineFX import has the mesh on 0, the rest skeleton on 1, the animated skeleton on 2." - removed
Input schema / properties / output / typeRemoved value: -"string" - added
Input schema / properties / renamedAdded value: +{ + "additionalProperties": { + "type": "string" + }, + "description": "fingerprint: {\"old path\": \"new path\"} for the nodes that a refactor renamed or moved.", + "type": "object" +} - added
Input schema / properties / split_byAdded value: +{ + "description": "crossings: a prim attribute, such as \"name\", whose values are the parts that the count pairs.", + "type": "string" +} - changed
Input schema / properties / steps / descriptionPrevious value: -"try: a list of {\"node_type\": ..., \"parameters\": {...}} to run on the geometry as verbs. Nothing changes in the scene."New value: +"try: a list of {\"node_type\": ..., \"parameters\": {...}} to run on the geometry. A menu takes its token or its index. Nothing changes in the scene." - changed
Input schema / properties / threshold / descriptionPrevious value: -"volume_stats, volume_sample: count the voxels below and above it. volume_stats also gives the world box of the voxels above it."New value: +"volume_stats, volume_sample: count the voxels below and above it. volume_stats also gives the world box of the voxels above it. stretch: the growth to count, 0.1 (10 %) by default. inside: count the points deeper than this distance."
- Changed
node_edit7 fields changed- added
Input schema / properties / forceAdded value: +{ + "description": "delete: delete a node that still feeds a node that stays.", + "type": "boolean" +} - added
Input schema / properties / input_indexAdded value: +{ + "description": "place_chain: the input of reader that the chain feeds.", + "type": "integer" +} - changed
Input schema / properties / input_path / descriptionPrevious value: -"create: the node that feeds the new node. It saves a connect call and places the node under its input."New value: +"create: the node that feeds the new node. It saves a connect call and places the node under its input. insert: the node whose output wires get the new node." - changed
Input schema / properties / mode / descriptionPrevious value: -"One of \"create\", \"delete\", \"copy\", \"move\", \"rename\", \"flags\", \"color\", \"layout\", \"wrangle\", \"material\", \"assign_material\", \"take\", \"current_network\", \"note\", \"box\"."New value: +"One of \"create\", \"delete\", \"copy\", \"move\", \"rename\", \"flags\", \"color\", \"layout\", \"insert\", \"place_chain\", \"wrangle\", \"material\", \"assign_material\", \"take\", \"current_network\", \"note\", \"box\", \"split\"." - changed
Input schema / properties / paths / descriptionPrevious value: -"copy: the nodes to copy. layout: place only these nodes. box: the nodes to put in the box."New value: +"copy: the nodes to copy. delete: the nodes to delete together. layout: place only these nodes. place_chain: the chain, in order. box: the nodes to put in the box." - added
Input schema / properties / readerAdded value: +{ + "description": "insert: only the wires into this node. place_chain: the node that the chain feeds.", + "type": "string" +} - added
Input schema / properties / stagesAdded value: +{ + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": "split: {\"stage name\": [\"node\", ...]}, the nodes of `path` for each subnet.", + "type": "object" +}
- Changed
parm_set1 field changed- removed
Input schema / properties / language / defaultRemoved value: -"hscript"
- Changed
render6 fields changed- changed
Input schema / properties / frame_range / descriptionPrevious value: -"start: [start, end]. Without it the ROP renders its own range."New value: +"start: [start, end] or [start, end, step]. Without it the ROP renders its own range." - changed
Input schema / properties / mode / descriptionPrevious value: -"One of \"start\", \"progress\", \"settings\", \"create\", \"watch\"."New value: +"One of \"start\", \"progress\", \"settings\", \"create\", \"watch\", \"stats\", \"compare\"." - changed
Input schema / properties / output_path / descriptionPrevious value: -"watch: the image file to look for on disk."New value: +"start: the image file for this render only (put $F4 in it for a range). watch, stats, compare: the image file." - added
Input schema / properties / referenceAdded value: +{ + "description": "compare: the image to compare `output_path` with.", + "type": "string" +} - added
Input schema / properties / res_scaleAdded value: +{ + "description": "start: a fraction of the resolution for this render only, 0.5 is half.", + "type": "number" +} - added
Input schema / properties / waitAdded value: +{ + "default": false, + "description": "start: return when every image is complete, with its render stats.", + "type": "boolean" +}
- Changed
scene_overview4 fields changed- added
Input schema / properties / compactAdded value: +{ + "default": false, + "description": "network: return only the wires, one line each.", + "type": "boolean" +} - changed
Input schema / properties / mode / descriptionPrevious value: -"One of \"scene\", \"network\", \"children\", \"search\", \"node_types\", \"errors\", \"materials\", \"lights\", \"takes\", \"caches\", \"render_nodes\", \"viewports\"."New value: +"One of \"scene\", \"network\", \"children\", \"search\", \"node_types\", \"errors\", \"materials\", \"lights\", \"takes\", \"caches\", \"render_nodes\", \"viewports\", \"changes\"." - changed
Input schema / properties / node_type / descriptionPrevious value: -"search: keep the nodes of this type, for example \"null\"."New value: +"search, network: keep the nodes of this type, for example \"null\"." - changed
Input schema / properties / pattern / descriptionPrevious value: -"search: the name to match, with * and ? as wildcards."New value: +"search: the name to match, with * and ? as wildcards. network, node_types: keep the names that match; \"|\" separates alternatives, for example \"*retarget*|*ik*\"."
1 tool update
v0.7.6- Changed
connect1 field changed- changed
Input schema / properties / items / descriptionPrevious value: -"A list of wires for \"connect\" or \"disconnect\", each a dictionary with the keys of one wire. An argument outside items is the default for each one."New value: +"A list of wires for \"connect\" or \"disconnect\", each a dictionary with the keys of one wire, for example {\"src_path\": \"/obj/geo1/grid1\", \"dst_path\": \"/obj/geo1/mountain1\"}. An argument outside items is the default for each one."
2 tool updates
v0.7.5- Changed
execute1 field changed- changed
Input schema / properties / background / descriptionPrevious value: -"python: return at once with a job id and let the script run. Read it with mode job. Other calls wait until it ends."New value: +"python: return at once with a job id and let the script run. Read it with mode job. Until it ends, other calls are refused."
- Changed
hda1 field changed- changed
Input schema / properties / node_type / descriptionPrevious value: -"get, sections, section_get, section_set: the asset type, for example \"Sop/my_tool\"."New value: +"get, sections, section_get, section_set: the asset type, as list names it, for example \"labs::edge_damage::1.0\", or with its category, \"Sop/labs::edge_damage::1.0\"."
20 tool updates
v0.7.3- Changed
batch3 fields changed- added
Input schema / properties / operations / descriptionAdded value: +"The steps, in order. Each is {\"tool\": \"<tool name>\", \"params\": {...}}, with the arguments that the tool takes on its own. Any tool of this server except batch." - removed
Input schema / properties / operations / titleRemoved value: -"Operations" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
capture154 fields changed- removed
Input schema / properties / azimuth / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / azimuth / defaultRemoved value: -null - added
Input schema / properties / azimuth / descriptionAdded value: +"Degrees around the up axis, around what the view frames. 0 looks from the front. Nothing is added to the scene." - removed
Input schema / properties / azimuth / titleRemoved value: -"Azimuth" - added
Input schema / properties / azimuth / typeAdded value: +"number" - removed
Input schema / properties / background / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / background / descriptionAdded value: +"sheet and movie: the grey of the background, 0-255. Smoke reads best on mid grey." - removed
Input schema / properties / background / titleRemoved value: -"Background" - added
Input schema / properties / background / typeAdded value: +"integer" - removed
Input schema / properties / camera / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / camera / defaultRemoved value: -null - added
Input schema / properties / camera / descriptionAdded value: +"camera mode: the camera node to look through. On a LOP network with `renderer`, a USD camera prim." - removed
Input schema / properties / camera / titleRemoved value: -"Camera" - added
Input schema / properties / camera / typeAdded value: +"string" - removed
Input schema / properties / color_by / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / color_by / defaultRemoved value: -null - added
Input schema / properties / color_by / descriptionAdded value: +"sheet and movie: colour the points by this attribute, blue at the low end of color_range and red at the high end. A vector uses its length." - removed
Input schema / properties / color_by / titleRemoved value: -"Color By" - added
Input schema / properties / color_by / typeAdded value: +"string" - removed
Input schema / properties / color_range / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / color_range / defaultRemoved value: -null - added
Input schema / properties / color_range / descriptionAdded value: +"[low, high] for color_by. Without it, [0, 1]." - added
Input schema / properties / color_range / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / color_range / titleRemoved value: -"Color Range" - added
Input schema / properties / color_range / typeAdded value: +"array" - removed
Input schema / properties / columns / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / columns / defaultRemoved value: -null - added
Input schema / properties / columns / descriptionAdded value: +"sheet: tiles in each row." - removed
Input schema / properties / columns / titleRemoved value: -"Columns" - added
Input schema / properties / columns / typeAdded value: +"integer" - removed
Input schema / properties / contour / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / contour / defaultRemoved value: -null - added
Input schema / properties / contour / descriptionAdded value: +"sheet: a step. Colour by the fraction of the value over the step, so the lines of equal value show, for example the shells of a distance field." - removed
Input schema / properties / contour / titleRemoved value: -"Contour" - added
Input schema / properties / contour / typeAdded value: +"number" - removed
Input schema / properties / count / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / count / descriptionAdded value: +"sheet: how many tiles, when frames is not given." - removed
Input schema / properties / count / titleRemoved value: -"Count" - added
Input schema / properties / count / typeAdded value: +"integer" - removed
Input schema / properties / direction / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / direction / defaultRemoved value: -null - added
Input schema / properties / direction / descriptionAdded value: +"The view axis: \"top\", \"front\", \"left\", \"right\", \"back\", \"bottom\" or \"persp\"." - removed
Input schema / properties / direction / titleRemoved value: -"Direction" - added
Input schema / properties / direction / typeAdded value: +"string" - removed
Input schema / properties / elevation / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / elevation / defaultRemoved value: -null - added
Input schema / properties / elevation / descriptionAdded value: +"Degrees above the ground, with azimuth. 30 with azimuth 45 is a three-quarter view." - removed
Input schema / properties / elevation / titleRemoved value: -"Elevation" - added
Input schema / properties / elevation / typeAdded value: +"number" - removed
Input schema / properties / fill / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / fill / descriptionAdded value: +"How much of the picture the framed thing takes: 0.9 leaves air around it, 1.0 fills it." - removed
Input schema / properties / fill / titleRemoved value: -"Fill" - added
Input schema / properties / fill / typeAdded value: +"number" - removed
Input schema / properties / fps / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / fps / descriptionAdded value: +"movie: frames per second." - removed
Input schema / properties / fps / titleRemoved value: -"Fps" - added
Input schema / properties / fps / typeAdded value: +"number" - removed
Input schema / properties / frame / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / frame / defaultRemoved value: -null - added
Input schema / properties / frame / descriptionAdded value: +"What to frame the view on: \"selection\", \"all\", or a node path (the box of what that node cooked)." - removed
Input schema / properties / frame / titleRemoved value: -"Frame" - added
Input schema / properties / frame / typeAdded value: +"string" - removed
Input schema / properties / frame_range / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / frame_range / defaultRemoved value: -null - added
Input schema / properties / frame_range / descriptionAdded value: +"flipbook and movie: [start, end]." - added
Input schema / properties / frame_range / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / frame_range / titleRemoved value: -"Frame Range" - added
Input schema / properties / frame_range / typeAdded value: +"array" - changed
Input schema / properties / frames / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "additionalProperties": { - "type": "number" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "number" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } +] - removed
Input schema / properties / frames / defaultRemoved value: -null - added
Input schema / properties / frames / descriptionAdded value: +"One frame, a list, or {\"start\": 1, \"end\": 10, \"step\": 2}: one picture for each. sheet: the frames of the tiles. The playbar goes back after. A picture that holds only the background is an error." - removed
Input schema / properties / frames / titleRemoved value: -"Frames" - removed
Input schema / properties / look_from / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / look_from / defaultRemoved value: -null - added
Input schema / properties / look_from / descriptionAdded value: +"[x, y, z]: the point that the view looks from." - added
Input schema / properties / look_from / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / look_from / titleRemoved value: -"Look From" - added
Input schema / properties / look_from / typeAdded value: +"array" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"viewport\", \"quad\", \"camera\", \"flipbook\", \"sheet\", \"movie\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / node / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / node / defaultRemoved value: -null - added
Input schema / properties / node / descriptionAdded value: +"The node to look at. It gets the display flag for the picture, and the flag goes back after. The viewer shows its network, and goes back after. Without `frame`, the view also frames it." - removed
Input schema / properties / node / titleRemoved value: -"Node" - added
Input schema / properties / node / typeAdded value: +"string" - removed
Input schema / properties / output / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / output / defaultRemoved value: -null - added
Input schema / properties / output / descriptionAdded value: +"The file to write. Without it, a temporary file." - removed
Input schema / properties / output / titleRemoved value: -"Output" - added
Input schema / properties / output / typeAdded value: +"string" - removed
Input schema / properties / radius / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / radius / defaultRemoved value: -null - added
Input schema / properties / radius / descriptionAdded value: +"The distance between target and look_from." - removed
Input schema / properties / radius / titleRemoved value: -"Radius" - added
Input schema / properties / radius / typeAdded value: +"number" - removed
Input schema / properties / reference / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / reference / defaultRemoved value: -null - added
Input schema / properties / reference / descriptionAdded value: +"sheet: a picture file to put in the first tile, to compare." - removed
Input schema / properties / reference / titleRemoved value: -"Reference" - added
Input schema / properties / reference / typeAdded value: +"string" - removed
Input schema / properties / renderer / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / renderer / defaultRemoved value: -null - added
Input schema / properties / renderer / descriptionAdded value: +"The Hydra renderer of a viewer on a LOP network, for example \"Karma CPU\". An unknown name lists the ones available." - removed
Input schema / properties / renderer / titleRemoved value: -"Renderer" - added
Input schema / properties / renderer / typeAdded value: +"string" - removed
Input schema / properties / resolution / anyOfRemoved value: -[ - { - "items": { - "type": "integer" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / resolution / defaultRemoved value: -null - added
Input schema / properties / resolution / descriptionAdded value: +"[width, height] in pixels. The height follows the shape of the viewport, so the picture is not stretched." - added
Input schema / properties / resolution / itemsAdded value: +{ + "type": "integer" +} - removed
Input schema / properties / resolution / titleRemoved value: -"Resolution" - added
Input schema / properties / resolution / typeAdded value: +"array" - removed
Input schema / properties / settle / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / settle / defaultRemoved value: -null - added
Input schema / properties / settle / descriptionAdded value: +"Seconds that a renderer such as Karma draws before each picture. Karma starts from noise: 20 to 30 gives a clean frame. With frames or in flipbook mode it renders a sequence through the viewport, with no husk and no render license." - removed
Input schema / properties / settle / titleRemoved value: -"Settle" - added
Input schema / properties / settle / typeAdded value: +"number" - removed
Input schema / properties / shading / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / shading / defaultRemoved value: -null - added
Input schema / properties / shading / descriptionAdded value: +"One of \"smooth\", \"smooth_wire\", \"flat\", \"wireframe\"." - removed
Input schema / properties / shading / titleRemoved value: -"Shading" - added
Input schema / properties / shading / typeAdded value: +"string" - removed
Input schema / properties / slab / anyOfRemoved value: -[ - { - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / slab / defaultRemoved value: -null - added
Input schema / properties / slab / descriptionAdded value: +"[axis, thickness], for example [\"z\", 0.1]: draw only the points in a thin cut through the middle, so the inside of a solid cloud shows." - added
Input schema / properties / slab / itemsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] +} - removed
Input schema / properties / slab / titleRemoved value: -"Slab" - added
Input schema / properties / slab / typeAdded value: +"array" - removed
Input schema / properties / start / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / start / defaultRemoved value: -null - added
Input schema / properties / start / descriptionAdded value: +"sheet: the first frame. Without it, the current frame." - removed
Input schema / properties / start / titleRemoved value: -"Start" - added
Input schema / properties / start / typeAdded value: +"number" - removed
Input schema / properties / step / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / step / descriptionAdded value: +"sheet: the frames between tiles. Over 2 hides movement and gives a warning." - removed
Input schema / properties / step / titleRemoved value: -"Step" - added
Input schema / properties / step / typeAdded value: +"number" - removed
Input schema / properties / target / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / target / defaultRemoved value: -null - added
Input schema / properties / target / descriptionAdded value: +"[x, y, z]: the point that the view turns around." - added
Input schema / properties / target / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / target / titleRemoved value: -"Target" - added
Input schema / properties / target / typeAdded value: +"array" - removed
Input schema / properties / tile_width / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / tile_width / descriptionAdded value: +"sheet: the width of each tile in pixels." - removed
Input schema / properties / tile_width / titleRemoved value: -"Tile Width" - added
Input schema / properties / tile_width / typeAdded value: +"integer" - removed
Input schema / properties / vectors / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / vectors / defaultRemoved value: -null - added
Input schema / properties / vectors / descriptionAdded value: +"sheet: a scale. Draw a line along the color_by vector from up to about 3000 points. An empty result is an error." - removed
Input schema / properties / vectors / titleRemoved value: -"Vectors" - added
Input schema / properties / vectors / typeAdded value: +"number" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
connect42 fields changed- removed
Input schema / properties / dst_input_index / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / dst_input_index / descriptionAdded value: +"connect: the input of dst_path, from 0." - removed
Input schema / properties / dst_input_index / titleRemoved value: -"Dst Input Index" - added
Input schema / properties / dst_input_index / typeAdded value: +"integer" - removed
Input schema / properties / dst_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / dst_path / defaultRemoved value: -null - added
Input schema / properties / dst_path / descriptionAdded value: +"connect: the node whose input takes the wire." - removed
Input schema / properties / dst_path / titleRemoved value: -"Dst Path" - added
Input schema / properties / dst_path / typeAdded value: +"string" - removed
Input schema / properties / input_index / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / input_index / descriptionAdded value: +"disconnect: the input that loses its wire, from 0." - removed
Input schema / properties / input_index / titleRemoved value: -"Input Index" - added
Input schema / properties / input_index / typeAdded value: +"integer" - removed
Input schema / properties / input_indices / anyOfRemoved value: -[ - { - "items": { - "type": "integer" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / input_indices / defaultRemoved value: -null - added
Input schema / properties / input_indices / descriptionAdded value: +"reorder: the old input indices in their new order, for example [1, 0]." - added
Input schema / properties / input_indices / itemsAdded value: +{ + "type": "integer" +} - removed
Input schema / properties / input_indices / titleRemoved value: -"Input Indices" - added
Input schema / properties / input_indices / typeAdded value: +"array" - changed
Input schema / properties / items / anyOfPrevious value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } +] - removed
Input schema / properties / items / defaultRemoved value: -null - added
Input schema / properties / items / descriptionAdded value: +"A list of wires for \"connect\" or \"disconnect\", each a dictionary with the keys of one wire. An argument outside items is the default for each one." - removed
Input schema / properties / items / titleRemoved value: -"Items" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"connect\", \"disconnect\", \"reorder\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / path / defaultRemoved value: -null - added
Input schema / properties / path / descriptionAdded value: +"disconnect and reorder: the node whose inputs change." - removed
Input schema / properties / path / titleRemoved value: -"Path" - added
Input schema / properties / path / typeAdded value: +"string" - removed
Input schema / properties / src_output_index / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / src_output_index / descriptionAdded value: +"connect: the output of src_path, from 0." - removed
Input schema / properties / src_output_index / titleRemoved value: -"Src Output Index" - added
Input schema / properties / src_output_index / typeAdded value: +"integer" - removed
Input schema / properties / src_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / src_path / defaultRemoved value: -null - added
Input schema / properties / src_path / descriptionAdded value: +"connect: the node whose output feeds the wire." - removed
Input schema / properties / src_path / titleRemoved value: -"Src Path" - added
Input schema / properties / src_path / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
console27 fields changed- removed
Input schema / properties / limit / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / limit / descriptionAdded value: +"How many log entries come back, the newest ones." - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - added
Input schema / properties / limit / typeAdded value: +"integer" - removed
Input schema / properties / node_errors / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / node_errors / descriptionAdded value: +"Also report the nodes under root_path that hold an error or a warning. False gives the log alone." - removed
Input schema / properties / node_errors / titleRemoved value: -"Node Errors" - added
Input schema / properties / node_errors / typeAdded value: +"boolean" - removed
Input schema / properties / node_limit / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / node_limit / descriptionAdded value: +"How many nodes with an error or a warning come back. Errors come first, and the report says how many it left out." - removed
Input schema / properties / node_limit / titleRemoved value: -"Node Limit" - added
Input schema / properties / node_limit / typeAdded value: +"integer" - removed
Input schema / properties / root_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / root_path / descriptionAdded value: +"The network that node_errors walks, for example /obj or /stage." - removed
Input schema / properties / root_path / titleRemoved value: -"Root Path" - added
Input schema / properties / root_path / typeAdded value: +"string" - removed
Input schema / properties / severity / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / severity / defaultRemoved value: -null - added
Input schema / properties / severity / descriptionAdded value: +"Keep one level only: \"message\", \"important\", \"warning\", \"error\" or \"fatal\"." - removed
Input schema / properties / severity / titleRemoved value: -"Severity" - added
Input schema / properties / severity / typeAdded value: +"string" - removed
Input schema / properties / source / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / source / defaultRemoved value: -null - added
Input schema / properties / source / descriptionAdded value: +"Keep the entries whose source holds this text, for example \"Python\"." - removed
Input schema / properties / source / titleRemoved value: -"Source" - added
Input schema / properties / source / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
cook31 fields changed- removed
Input schema / properties / force / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / force / descriptionAdded value: +"Cook even when Houdini thinks the node is up to date." - removed
Input schema / properties / force / titleRemoved value: -"Force" - added
Input schema / properties / force / typeAdded value: +"boolean" - removed
Input schema / properties / frame_range / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / frame_range / defaultRemoved value: -null - added
Input schema / properties / frame_range / descriptionAdded value: +"[start, end]: every frame between. For cook and cache_write." - added
Input schema / properties / frame_range / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / frame_range / titleRemoved value: -"Frame Range" - added
Input schema / properties / frame_range / typeAdded value: +"array" - changed
Input schema / properties / frames / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "additionalProperties": { - "type": "number" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "number" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } +] - removed
Input schema / properties / frames / defaultRemoved value: -null - added
Input schema / properties / frames / descriptionAdded value: +"One frame, a list of frames, or {\"start\": 1001, \"end\": 1010, \"step\": 2}. For cook. The playbar goes back after." - removed
Input schema / properties / frames / titleRemoved value: -"Frames" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"cook\", \"cache_write\", \"cache_clear\", \"sim_step\", \"sim_reset\". The description says what each one does." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / num_steps / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / num_steps / descriptionAdded value: +"How many frames sim_step steps the DOP network." - removed
Input schema / properties / num_steps / titleRemoved value: -"Num Steps" - added
Input schema / properties / num_steps / typeAdded value: +"integer" - added
Input schema / properties / parameters / additionalPropertiesAdded value: +{ + "additionalProperties": true, + "type": "object" +} - removed
Input schema / properties / parameters / anyOfRemoved value: -[ - { - "additionalProperties": { - "additionalProperties": true, - "type": "object" - }, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / parameters / defaultRemoved value: -null - added
Input schema / properties / parameters / descriptionAdded value: +"Values to write before the cook, as {\"/obj/geo1/pyro\": {\"divsize\": 0.05}}. The result says which writes changed nothing." - removed
Input schema / properties / parameters / titleRemoved value: -"Parameters" - added
Input schema / properties / parameters / typeAdded value: +"object" - added
Input schema / properties / paths / descriptionAdded value: +"The node to cook, or a list of nodes." - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
docs39 fields changed- removed
Input schema / properties / build / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / build / defaultRemoved value: -null - added
Input schema / properties / build / descriptionAdded value: +"The Houdini build to read, for example \"21.0.829\". Default: the build of the attached session, then $HFS, then the newest build on this machine." - removed
Input schema / properties / build / titleRemoved value: -"Build" - added
Input schema / properties / build / typeAdded value: +"string" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - added
Input schema / properties / category / descriptionAdded value: +"query: keep the search inside one folder, for example \"nodes/sop\", \"vex/functions\" or \"hom/hou\". node with a type name: the context, for example \"sop\" or \"lop\"." - removed
Input schema / properties / category / titleRemoved value: -"Category" - added
Input schema / properties / category / typeAdded value: +"string" - removed
Input schema / properties / limit / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / limit / descriptionAdded value: +"query: how many hits come back." - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - added
Input schema / properties / limit / typeAdded value: +"integer" - removed
Input schema / properties / node / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / node / defaultRemoved value: -null - added
Input schema / properties / node / descriptionAdded value: +"A node path in the scene, for example \"/obj/geo1/attribwrangle1\", or a node type name, for example \"mountain\". Returns the page of that node type." - removed
Input schema / properties / node / titleRemoved value: -"Node" - added
Input schema / properties / node / typeAdded value: +"string" - removed
Input schema / properties / page / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / page / defaultRemoved value: -null - added
Input schema / properties / page / descriptionAdded value: +"A page path from a hit, for example \"nodes/sop/copytopoints\". A loose name or a sidefx.com address also works." - removed
Input schema / properties / page / titleRemoved value: -"Page" - added
Input schema / properties / page / typeAdded value: +"string" - removed
Input schema / properties / part / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / part / descriptionAdded value: +"A long page comes in parts of about 20,000 characters: 2, 3 and so on read the next ones." - removed
Input schema / properties / part / titleRemoved value: -"Part" - added
Input schema / properties / part / typeAdded value: +"integer" - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / query / defaultRemoved value: -null - added
Input schema / properties / query / descriptionAdded value: +"Words to search, for example \"copy to points\". Returns the hits with their page paths." - removed
Input schema / properties / query / titleRemoved value: -"Query" - added
Input schema / properties / query / typeAdded value: +"string" - removed
Input schema / properties / section / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / section / defaultRemoved value: -null - added
Input schema / properties / section / descriptionAdded value: +"Read only the part of a page under one heading, for example \"Quick renders and flipbooks\". A long page lists its headings." - removed
Input schema / properties / section / titleRemoved value: -"Section" - added
Input schema / properties / section / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
execute49 fields changed- removed
Input schema / properties / args / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / args / defaultRemoved value: -null - added
Input schema / properties / args / descriptionAdded value: +"file: the values of sys.argv[1:]." - added
Input schema / properties / args / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / args / titleRemoved value: -"Args" - added
Input schema / properties / args / typeAdded value: +"array" - removed
Input schema / properties / background / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / background / descriptionAdded value: +"python: return at once with a job id and let the script run. Read it with mode job. Other calls wait until it ends." - removed
Input schema / properties / background / titleRemoved value: -"Background" - added
Input schema / properties / background / typeAdded value: +"boolean" - removed
Input schema / properties / file / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / file / defaultRemoved value: -null - added
Input schema / properties / file / descriptionAdded value: +"A Python file to run instead of source, as from a shell: __file__ is its path, __name__ is \"__main__\", args are in sys.argv[1:]. The text travels once." - removed
Input schema / properties / file / titleRemoved value: -"File" - added
Input schema / properties / file / typeAdded value: +"string" - added
Input schema / properties / globals / additionalPropertiesAdded value: +true - removed
Input schema / properties / globals / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / globals / defaultRemoved value: -null - added
Input schema / properties / globals / descriptionAdded value: +"Names that exist before the script runs, for example {\"radius\": 2.0}." - removed
Input schema / properties / globals / titleRemoved value: -"Globals" - added
Input schema / properties / globals / typeAdded value: +"object" - removed
Input schema / properties / job / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / job / defaultRemoved value: -null - added
Input schema / properties / job / descriptionAdded value: +"job: the job id that background returned." - removed
Input schema / properties / job / titleRemoved value: -"Job" - added
Input schema / properties / job / typeAdded value: +"string" - removed
Input schema / properties / language / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / language / descriptionAdded value: +"expression: \"hscript\" or \"python\"." - removed
Input schema / properties / language / titleRemoved value: -"Language" - added
Input schema / properties / language / typeAdded value: +"string" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"python\", \"hscript\", \"expression\", \"vex_check\", \"env\", \"job\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / defaultRemoved value: -null - added
Input schema / properties / name / descriptionAdded value: +"env: the Houdini variable to read, for example \"HIP\"." - removed
Input schema / properties / name / titleRemoved value: -"Name" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / source / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / source / defaultRemoved value: -null - added
Input schema / properties / source / descriptionAdded value: +"The code: Python, HScript, an expression or VEX, as mode says." - removed
Input schema / properties / source / titleRemoved value: -"Source" - added
Input schema / properties / source / typeAdded value: +"string" - removed
Input schema / properties / timeout / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / timeout / descriptionAdded value: +"The seconds the script may run. Past it, the script stops where it is, the answer says where, and what it changed stays." - removed
Input schema / properties / timeout / titleRemoved value: -"Timeout" - added
Input schema / properties / timeout / typeAdded value: +"number" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
geometry_inspect131 fields changed- removed
Input schema / properties / against / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / against / defaultRemoved value: -null - added
Input schema / properties / against / descriptionAdded value: +"compare: the node to compare with. volume_compare: the field whose bands hold the field `name`." - removed
Input schema / properties / against / titleRemoved value: -"Against" - added
Input schema / properties / against / typeAdded value: +"string" - removed
Input schema / properties / attrib_class / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / attrib_class / descriptionAdded value: +"attrib: \"point\", \"prim\", \"vertex\" or \"detail\"." - removed
Input schema / properties / attrib_class / titleRemoved value: -"Attrib Class" - added
Input schema / properties / attrib_class / typeAdded value: +"string" - removed
Input schema / properties / attrib_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / attrib_name / defaultRemoved value: -null - added
Input schema / properties / attrib_name / descriptionAdded value: +"attrib: the attribute to read." - removed
Input schema / properties / attrib_name / titleRemoved value: -"Attrib Name" - added
Input schema / properties / attrib_name / typeAdded value: +"string" - removed
Input schema / properties / attribs / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / attribs / defaultRemoved value: -null - added
Input schema / properties / attribs / descriptionAdded value: +"points: the attributes to return, for example [\"P\", \"Cd\"]." - added
Input schema / properties / attribs / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / attribs / titleRemoved value: -"Attribs" - added
Input schema / properties / attribs / typeAdded value: +"array" - changed
Input schema / properties / bins / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "integer" + }, + { + "items": { + "type": "number" + }, + "type": "array" + } +] - removed
Input schema / properties / bins / defaultRemoved value: -null - added
Input schema / properties / bins / descriptionAdded value: +"volume_stats, volume_sample, volume_compare: a count of equal bands, or a list of band edges, for example [-1, 0, 0.05, 0.15, 0.25]." - removed
Input schema / properties / bins / titleRemoved value: -"Bins" - removed
Input schema / properties / count / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / count / descriptionAdded value: +"points, prims: how many elements. Keep it small: a large read is slow." - removed
Input schema / properties / count / titleRemoved value: -"Count" - added
Input schema / properties / count / typeAdded value: +"integer" - removed
Input schema / properties / format / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / format / descriptionAdded value: +"export: the file type, for example \"obj\" or \"bgeo\"." - removed
Input schema / properties / format / titleRemoved value: -"Format" - added
Input schema / properties / format / typeAdded value: +"string" - changed
Input schema / properties / frames / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "additionalProperties": { - "type": "number" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "number" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } +] - removed
Input schema / properties / frames / defaultRemoved value: -null - added
Input schema / properties / frames / descriptionAdded value: +"Read at other frames, without moving the playbar: one frame, a list, or {\"start\": 1001, \"end\": 1010, \"step\": 2}. One answer for each frame." - removed
Input schema / properties / frames / titleRemoved value: -"Frames" - removed
Input schema / properties / from_node / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / from_node / defaultRemoved value: -null - added
Input schema / properties / from_node / descriptionAdded value: +"volume_sample: read at the points of this node. volume_compare: the node that holds `against`, such as a collider SDF." - removed
Input schema / properties / from_node / titleRemoved value: -"From Node" - added
Input schema / properties / from_node / typeAdded value: +"string" - removed
Input schema / properties / group_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / group_name / defaultRemoved value: -null - added
Input schema / properties / group_name / descriptionAdded value: +"group_members: the group to read." - removed
Input schema / properties / group_name / titleRemoved value: -"Group Name" - added
Input schema / properties / group_name / typeAdded value: +"string" - removed
Input schema / properties / group_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / group_type / descriptionAdded value: +"groups, group_members: \"point\", \"prim\", \"vertex\" or \"edge\"." - removed
Input schema / properties / group_type / titleRemoved value: -"Group Type" - added
Input schema / properties / group_type / typeAdded value: +"string" - removed
Input schema / properties / limit / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / limit / defaultRemoved value: -null - added
Input schema / properties / limit / descriptionAdded value: +"attrib: how many values (10). volume_voxels: how many numbers before the array is thinned. volume_sample: return the values when there are at most this many (1000)." - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - added
Input schema / properties / limit / typeAdded value: +"integer" - removed
Input schema / properties / match_attrib / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / match_attrib / descriptionAdded value: +"compare: the attribute that pairs the points of the two nodes, not their order." - removed
Input schema / properties / match_attrib / titleRemoved value: -"Match Attrib" - added
Input schema / properties / match_attrib / typeAdded value: +"string" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"summary\", \"points\", \"prims\", \"attrib\", \"groups\", \"group_members\", \"bbox\", \"intrinsics\", \"nearest\", \"skeleton\", \"compare\", \"try\", \"volume_stats\", \"volume_voxels\", \"volume_sample\", \"volume_compare\", \"image\", \"volume\", \"export\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / defaultRemoved value: -null - added
Input schema / properties / name / descriptionAdded value: +"volume_stats: one volume to read. volume_voxels, volume_compare: the field." - removed
Input schema / properties / name / titleRemoved value: -"Name" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / names / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / names / defaultRemoved value: -null - added
Input schema / properties / names / descriptionAdded value: +"volume_sample: the fields to read." - added
Input schema / properties / names / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / names / titleRemoved value: -"Names" - added
Input schema / properties / names / typeAdded value: +"array" - removed
Input schema / properties / output / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / output / defaultRemoved value: -null - added
Input schema / properties / output / descriptionAdded value: +"export: the file path to write." - removed
Input schema / properties / output / titleRemoved value: -"Output" - added
Input schema / properties / output / typeAdded value: +"string" - added
Input schema / properties / path / descriptionAdded value: +"The SOP or COP node to read, or a list. A list keeps going after a node that fails, and each result names its path." - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / pattern / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / pattern / defaultRemoved value: -null - added
Input schema / properties / pattern / descriptionAdded value: +"skeleton: keep the joints whose name matches." - removed
Input schema / properties / pattern / titleRemoved value: -"Pattern" - added
Input schema / properties / pattern / typeAdded value: +"string" - removed
Input schema / properties / plane_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / plane_name / descriptionAdded value: +"image: the COP plane to read, for example \"C\"." - removed
Input schema / properties / plane_name / titleRemoved value: -"Plane Name" - added
Input schema / properties / plane_name / typeAdded value: +"string" - removed
Input schema / properties / position / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / position / defaultRemoved value: -null - added
Input schema / properties / position / descriptionAdded value: +"nearest: [x, y, z]." - added
Input schema / properties / position / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / position / titleRemoved value: -"Position" - added
Input schema / properties / position / typeAdded value: +"array" - removed
Input schema / properties / positions / anyOfRemoved value: -[ - { - "items": { - "items": { - "type": "number" - }, - "type": "array" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / positions / defaultRemoved value: -null - added
Input schema / properties / positions / descriptionAdded value: +"volume_sample: the [x, y, z] points to read at." - added
Input schema / properties / positions / itemsAdded value: +{ + "items": { + "type": "number" + }, + "type": "array" +} - removed
Input schema / properties / positions / titleRemoved value: -"Positions" - added
Input schema / properties / positions / typeAdded value: +"array" - removed
Input schema / properties / prim_index / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / prim_index / descriptionAdded value: +"intrinsics: the primitive to read." - removed
Input schema / properties / prim_index / titleRemoved value: -"Prim Index" - added
Input schema / properties / prim_index / typeAdded value: +"integer" - removed
Input schema / properties / reduce / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / reduce / defaultRemoved value: -null - added
Input schema / properties / reduce / descriptionAdded value: +"volume_voxels: one answer instead of the array: \"sum\", \"mean\", \"max\", \"min\", \"project_x\", \"project_y\" or \"project_z\"." - removed
Input schema / properties / reduce / titleRemoved value: -"Reduce" - added
Input schema / properties / reduce / typeAdded value: +"string" - removed
Input schema / properties / start / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / start / descriptionAdded value: +"points, prims, attrib: the first element. Page with it." - removed
Input schema / properties / start / titleRemoved value: -"Start" - added
Input schema / properties / start / typeAdded value: +"integer" - removed
Input schema / properties / steps / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / steps / defaultRemoved value: -null - added
Input schema / properties / steps / descriptionAdded value: +"try: a list of {\"node_type\": ..., \"parameters\": {...}} to run on the geometry as verbs. Nothing changes in the scene." - added
Input schema / properties / steps / itemsAdded value: +{ + "additionalProperties": true, + "type": "object" +} - removed
Input schema / properties / steps / titleRemoved value: -"Steps" - added
Input schema / properties / steps / typeAdded value: +"array" - removed
Input schema / properties / threshold / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / threshold / defaultRemoved value: -null - added
Input schema / properties / threshold / descriptionAdded value: +"volume_stats, volume_sample: count the voxels below and above it. volume_stats also gives the world box of the voxels above it." - removed
Input schema / properties / threshold / titleRemoved value: -"Threshold" - added
Input schema / properties / threshold / typeAdded value: +"number" - removed
Input schema / properties / unique / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / unique / descriptionAdded value: +"attrib: return each value that occurs and how many elements carry it. That is how you find the pieces in a geometry." - removed
Input schema / properties / unique / titleRemoved value: -"Unique" - added
Input schema / properties / unique / typeAdded value: +"boolean" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
hda45 fields changed- removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - added
Input schema / properties / category / descriptionAdded value: +"list: keep one node category, for example \"Sop\"." - removed
Input schema / properties / category / titleRemoved value: -"Category" - added
Input schema / properties / category / typeAdded value: +"string" - removed
Input schema / properties / content / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / content / defaultRemoved value: -null - added
Input schema / properties / content / descriptionAdded value: +"section_set: the text to write into the section." - removed
Input schema / properties / content / titleRemoved value: -"Content" - added
Input schema / properties / content / typeAdded value: +"string" - removed
Input schema / properties / file_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / file_path / defaultRemoved value: -null - added
Input schema / properties / file_path / descriptionAdded value: +"install, uninstall, reload: the .hda file. create: the file to write." - removed
Input schema / properties / file_path / titleRemoved value: -"File Path" - added
Input schema / properties / file_path / typeAdded value: +"string" - removed
Input schema / properties / label / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / label / defaultRemoved value: -null - added
Input schema / properties / label / descriptionAdded value: +"create: the name that the TAB menu shows." - removed
Input schema / properties / label / titleRemoved value: -"Label" - added
Input schema / properties / label / typeAdded value: +"string" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"list\", \"get\", \"install\", \"uninstall\", \"reload\", \"update\", \"create\", \"sections\", \"section_get\", \"section_set\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / defaultRemoved value: -null - added
Input schema / properties / name / descriptionAdded value: +"create: the type name of the new asset." - removed
Input schema / properties / name / titleRemoved value: -"Name" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / node_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / node_path / defaultRemoved value: -null - added
Input schema / properties / node_path / descriptionAdded value: +"update: the node to save into its asset. create: the subnet to make an asset from." - removed
Input schema / properties / node_path / titleRemoved value: -"Node Path" - added
Input schema / properties / node_path / typeAdded value: +"string" - removed
Input schema / properties / node_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / node_type / defaultRemoved value: -null - added
Input schema / properties / node_type / descriptionAdded value: +"get, sections, section_get, section_set: the asset type, for example \"Sop/my_tool\"." - removed
Input schema / properties / node_type / titleRemoved value: -"Node Type" - added
Input schema / properties / node_type / typeAdded value: +"string" - removed
Input schema / properties / section_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / section_name / defaultRemoved value: -null - added
Input schema / properties / section_name / descriptionAdded value: +"section_get, section_set: the section, for example \"PythonModule\"." - removed
Input schema / properties / section_name / titleRemoved value: -"Section Name" - added
Input schema / properties / section_name / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
node_edit131 fields changed- removed
Input schema / properties / bypass / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Input schema / properties / bypass / defaultRemoved value: -null - added
Input schema / properties / bypass / descriptionAdded value: +"flags: the bypass flag." - removed
Input schema / properties / bypass / titleRemoved value: -"Bypass" - added
Input schema / properties / bypass / typeAdded value: +"boolean" - removed
Input schema / properties / code / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / code / defaultRemoved value: -null - added
Input schema / properties / code / descriptionAdded value: +"wrangle: the VEX snippet." - removed
Input schema / properties / code / titleRemoved value: -"Code" - added
Input schema / properties / code / typeAdded value: +"string" - removed
Input schema / properties / code_file / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / code_file / defaultRemoved value: -null - added
Input schema / properties / code_file / descriptionAdded value: +"wrangle: read the VEX from this file, so a long snippet travels once." - removed
Input schema / properties / code_file / titleRemoved value: -"Code File" - added
Input schema / properties / code_file / typeAdded value: +"string" - removed
Input schema / properties / color / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / color / defaultRemoved value: -null - added
Input schema / properties / color / descriptionAdded value: +"color, note, box: [r, g, b] from 0 to 1." - added
Input schema / properties / color / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / color / titleRemoved value: -"Color" - added
Input schema / properties / color / typeAdded value: +"array" - removed
Input schema / properties / context / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / context / defaultRemoved value: -null - added
Input schema / properties / context / descriptionAdded value: +"create: the network kind, \"sop\" (default), \"cop\", \"chop\", \"lop\" or \"material_network\"." - removed
Input schema / properties / context / titleRemoved value: -"Context" - added
Input schema / properties / context / typeAdded value: +"string" - removed
Input schema / properties / destination_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / destination_path / defaultRemoved value: -null - added
Input schema / properties / destination_path / descriptionAdded value: +"copy, move: the network to put the nodes in." - removed
Input schema / properties / destination_path / titleRemoved value: -"Destination Path" - added
Input schema / properties / destination_path / typeAdded value: +"string" - removed
Input schema / properties / display / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Input schema / properties / display / defaultRemoved value: -null - added
Input schema / properties / display / descriptionAdded value: +"flags: the display flag." - removed
Input schema / properties / display / titleRemoved value: -"Display" - added
Input schema / properties / display / typeAdded value: +"boolean" - removed
Input schema / properties / input_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / input_path / defaultRemoved value: -null - added
Input schema / properties / input_path / descriptionAdded value: +"create: the node that feeds the new node. It saves a connect call and places the node under its input." - removed
Input schema / properties / input_path / titleRemoved value: -"Input Path" - added
Input schema / properties / input_path / typeAdded value: +"string" - changed
Input schema / properties / items / anyOfPrevious value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } +] - removed
Input schema / properties / items / defaultRemoved value: -null - added
Input schema / properties / items / descriptionAdded value: +"A list of items for a repeated action, each a dictionary with the keys of one call. An argument outside items is the default for each one." - removed
Input schema / properties / items / titleRemoved value: -"Items" - removed
Input schema / properties / material_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / material_path / defaultRemoved value: -null - added
Input schema / properties / material_path / descriptionAdded value: +"assign_material: the material node." - removed
Input schema / properties / material_path / titleRemoved value: -"Material Path" - added
Input schema / properties / material_path / typeAdded value: +"string" - removed
Input schema / properties / material_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / material_type / defaultRemoved value: -null - added
Input schema / properties / material_type / descriptionAdded value: +"material: the shader type, for example \"principledshader\"." - removed
Input schema / properties / material_type / titleRemoved value: -"Material Type" - added
Input schema / properties / material_type / typeAdded value: +"string" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"create\", \"delete\", \"copy\", \"move\", \"rename\", \"flags\", \"color\", \"layout\", \"wrangle\", \"material\", \"assign_material\", \"take\", \"current_network\", \"note\", \"box\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / defaultRemoved value: -null - added
Input schema / properties / name / descriptionAdded value: +"create, material: the name of the new node. take: the name of a new take." - removed
Input schema / properties / name / titleRemoved value: -"Name" - added
Input schema / properties / name / typeAdded value: +"string" - added
Input schema / properties / names / additionalPropertiesAdded value: +{ + "type": "string" +} - removed
Input schema / properties / names / anyOfRemoved value: -[ - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / names / defaultRemoved value: -null - added
Input schema / properties / names / descriptionAdded value: +"copy: a new name for each source, by source path or name." - removed
Input schema / properties / names / titleRemoved value: -"Names" - added
Input schema / properties / names / typeAdded value: +"object" - removed
Input schema / properties / new_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / new_name / defaultRemoved value: -null - added
Input schema / properties / new_name / descriptionAdded value: +"rename: the new name." - removed
Input schema / properties / new_name / titleRemoved value: -"New Name" - added
Input schema / properties / new_name / typeAdded value: +"string" - removed
Input schema / properties / node_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / node_type / defaultRemoved value: -null - added
Input schema / properties / node_type / descriptionAdded value: +"create: the node type, for example \"box\" or \"attribwrangle\"." - removed
Input schema / properties / node_type / titleRemoved value: -"Node Type" - added
Input schema / properties / node_type / typeAdded value: +"string" - added
Input schema / properties / parameters / additionalPropertiesAdded value: +true - removed
Input schema / properties / parameters / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / parameters / defaultRemoved value: -null - added
Input schema / properties / parameters / descriptionAdded value: +"create, material: values to set on the new node, by parameter name." - removed
Input schema / properties / parameters / titleRemoved value: -"Parameters" - added
Input schema / properties / parameters / typeAdded value: +"object" - removed
Input schema / properties / parent_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / parent_path / defaultRemoved value: -null - added
Input schema / properties / parent_path / descriptionAdded value: +"create, wrangle, note: the network that gets the new node." - removed
Input schema / properties / parent_path / titleRemoved value: -"Parent Path" - added
Input schema / properties / parent_path / typeAdded value: +"string" - removed
Input schema / properties / path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / path / defaultRemoved value: -null - added
Input schema / properties / path / descriptionAdded value: +"The node to change. layout: the network. delete: a node, a sticky note or a network box." - removed
Input schema / properties / path / titleRemoved value: -"Path" - added
Input schema / properties / path / typeAdded value: +"string" - removed
Input schema / properties / paths / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / paths / defaultRemoved value: -null - added
Input schema / properties / paths / descriptionAdded value: +"copy: the nodes to copy. layout: place only these nodes. box: the nodes to put in the box." - added
Input schema / properties / paths / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - added
Input schema / properties / paths / typeAdded value: +"array" - removed
Input schema / properties / position / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / position / defaultRemoved value: -null - added
Input schema / properties / position / descriptionAdded value: +"create, move, note: [x, y] on the canvas." - added
Input schema / properties / position / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / position / titleRemoved value: -"Position" - added
Input schema / properties / position / typeAdded value: +"array" - removed
Input schema / properties / render / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Input schema / properties / render / defaultRemoved value: -null - added
Input schema / properties / render / descriptionAdded value: +"flags: the render flag, which is not the display flag." - removed
Input schema / properties / render / titleRemoved value: -"Render" - added
Input schema / properties / render / typeAdded value: +"boolean" - removed
Input schema / properties / replace / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / replace / defaultRemoved value: -null - added
Input schema / properties / replace / descriptionAdded value: +"wrangle: edit the snippet in place, a list of {\"old\": ..., \"new\": ...}. Each old must appear exactly once." - added
Input schema / properties / replace / itemsAdded value: +{ + "additionalProperties": { + "type": "string" + }, + "type": "object" +} - removed
Input schema / properties / replace / titleRemoved value: -"Replace" - added
Input schema / properties / replace / typeAdded value: +"array" - removed
Input schema / properties / suffix / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / suffix / defaultRemoved value: -null - added
Input schema / properties / suffix / descriptionAdded value: +"copy: text added to the name of each copy." - removed
Input schema / properties / suffix / titleRemoved value: -"Suffix" - added
Input schema / properties / suffix / typeAdded value: +"string" - removed
Input schema / properties / take_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / take_name / defaultRemoved value: -null - added
Input schema / properties / take_name / descriptionAdded value: +"take: the take to make current." - removed
Input schema / properties / take_name / titleRemoved value: -"Take Name" - added
Input schema / properties / take_name / typeAdded value: +"string" - added
Input schema / properties / textAdded value: +{ + "description": "note: the text of the note. box: the comment of the box.", + "type": "string" +} - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
node_inspect60 fields changed- removed
Input schema / properties / channel / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / channel / defaultRemoved value: -null - added
Input schema / properties / channel / descriptionAdded value: +"channels: the CHOP channel whose samples to read." - removed
Input schema / properties / channel / titleRemoved value: -"Channel" - added
Input schema / properties / channel / typeAdded value: +"string" - removed
Input schema / properties / end / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / end / defaultRemoved value: -null - added
Input schema / properties / end / descriptionAdded value: +"channels: the last sample frame." - removed
Input schema / properties / end / titleRemoved value: -"End" - added
Input schema / properties / end / typeAdded value: +"number" - removed
Input schema / properties / field_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / field_name / defaultRemoved value: -null - added
Input schema / properties / field_name / descriptionAdded value: +"simulation: the field of object_name to read." - removed
Input schema / properties / field_name / titleRemoved value: -"Field Name" - added
Input schema / properties / field_name / typeAdded value: +"string" - removed
Input schema / properties / fields / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / fields / defaultRemoved value: -null - added
Input schema / properties / fields / descriptionAdded value: +"parms, changed: keep only these keys of each parameter, for example [\"value\", \"expression\"]. The name is always kept." - added
Input schema / properties / fields / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / fields / titleRemoved value: -"Fields" - added
Input schema / properties / fields / typeAdded value: +"array" - changed
Input schema / properties / frames / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "additionalProperties": { - "type": "number" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "number" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } +] - removed
Input schema / properties / frames / defaultRemoved value: -null - added
Input schema / properties / frames / descriptionAdded value: +"Read at another frame, or at several: one frame, a list, or {\"start\": 1, \"end\": 10, \"step\": 2}. With time_dependency, time each node. The playbar goes back after." - removed
Input schema / properties / frames / titleRemoved value: -"Frames" - removed
Input schema / properties / has_expression / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / has_expression / descriptionAdded value: +"parms: keep only the parameters that carry an expression." - removed
Input schema / properties / has_expression / titleRemoved value: -"Has Expression" - added
Input schema / properties / has_expression / typeAdded value: +"boolean" - removed
Input schema / properties / include_all_parms / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / include_all_parms / descriptionAdded value: +"info: list every parameter, not only the ones that changed." - removed
Input schema / properties / include_all_parms / titleRemoved value: -"Include All Parms" - added
Input schema / properties / include_all_parms / typeAdded value: +"boolean" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"info\", \"parms\", \"schema\", \"changed\", \"names\", \"expression\", \"keyframes\", \"code\", \"cook_chain\", \"explain\", \"material\", \"image\", \"channels\", \"simulation\", \"render_settings\", \"cache\", \"time_dependency\", \"validate\", \"layout\", \"readers\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / object_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / object_name / defaultRemoved value: -null - added
Input schema / properties / object_name / descriptionAdded value: +"simulation: the DOP object to read." - removed
Input schema / properties / object_name / titleRemoved value: -"Object Name" - added
Input schema / properties / object_name / typeAdded value: +"string" - removed
Input schema / properties / parm / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / parm / defaultRemoved value: -null - added
Input schema / properties / parm / descriptionAdded value: +"parms, expression, keyframes, readers: the parameter name." - removed
Input schema / properties / parm / titleRemoved value: -"Parm" - added
Input schema / properties / parm / typeAdded value: +"string" - added
Input schema / properties / paths / descriptionAdded value: +"One node path, or a list. A list keeps going after a node that fails, and each result names its path." - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - removed
Input schema / properties / pattern / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / pattern / defaultRemoved value: -null - added
Input schema / properties / pattern / descriptionAdded value: +"parms, changed: keep the parameters whose name or label holds this text or matches it as a glob. \"|\" separates alternatives: \"time|step|cfl\"." - removed
Input schema / properties / pattern / titleRemoved value: -"Pattern" - added
Input schema / properties / pattern / typeAdded value: +"string" - removed
Input schema / properties / start / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / start / defaultRemoved value: -null - added
Input schema / properties / start / descriptionAdded value: +"channels: the first sample frame." - removed
Input schema / properties / start / titleRemoved value: -"Start" - added
Input schema / properties / start / typeAdded value: +"number" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
parm_set107 fields changed- removed
Input schema / properties / channel_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / channel_name / defaultRemoved value: -null - added
Input schema / properties / channel_name / descriptionAdded value: +"chop_export: the channel that drives the parameter." - removed
Input schema / properties / channel_name / titleRemoved value: -"Channel Name" - added
Input schema / properties / channel_name / typeAdded value: +"string" - removed
Input schema / properties / chop_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / chop_path / defaultRemoved value: -null - added
Input schema / properties / chop_path / descriptionAdded value: +"chop_export: the CHOP node." - removed
Input schema / properties / chop_path / titleRemoved value: -"Chop Path" - added
Input schema / properties / chop_path / typeAdded value: +"string" - removed
Input schema / properties / default / anyOfRemoved value: -[ - {}, - { - "type": "null" - } -] - removed
Input schema / properties / default / defaultRemoved value: -null - added
Input schema / properties / default / descriptionAdded value: +"spare: the default of one control." - removed
Input schema / properties / default / titleRemoved value: -"Default" - removed
Input schema / properties / expression / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / expression / defaultRemoved value: -null - added
Input schema / properties / expression / descriptionAdded value: +"expression: the expression text." - removed
Input schema / properties / expression / titleRemoved value: -"Expression" - added
Input schema / properties / expression / typeAdded value: +"string" - removed
Input schema / properties / follow_reference / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / follow_reference / descriptionAdded value: +"Write the node at the other end of a channel reference. Without it, a write through a reference is refused." - removed
Input schema / properties / follow_reference / titleRemoved value: -"Follow Reference" - added
Input schema / properties / follow_reference / typeAdded value: +"boolean" - removed
Input schema / properties / frame / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / frame / defaultRemoved value: -null - added
Input schema / properties / frame / descriptionAdded value: +"keyframe, delete_keyframe: the frame of the key." - removed
Input schema / properties / frame / titleRemoved value: -"Frame" - added
Input schema / properties / frame / typeAdded value: +"number" - changed
Input schema / properties / items / anyOfPrevious value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } +] - removed
Input schema / properties / items / defaultRemoved value: -null - added
Input schema / properties / items / descriptionAdded value: +"A list of writes, each a dictionary with the keys of one call. An argument outside items is the default for each one." - removed
Input schema / properties / items / titleRemoved value: -"Items" - removed
Input schema / properties / keyframes / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / keyframes / defaultRemoved value: -null - added
Input schema / properties / keyframes / descriptionAdded value: +"keyframes: a list of {frame, value}." - added
Input schema / properties / keyframes / itemsAdded value: +{ + "additionalProperties": true, + "type": "object" +} - removed
Input schema / properties / keyframes / titleRemoved value: -"Keyframes" - added
Input schema / properties / keyframes / typeAdded value: +"array" - removed
Input schema / properties / label / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / label / defaultRemoved value: -null - added
Input schema / properties / label / descriptionAdded value: +"spare: the label of one control." - removed
Input schema / properties / label / titleRemoved value: -"Label" - added
Input schema / properties / label / typeAdded value: +"string" - removed
Input schema / properties / language / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / language / descriptionAdded value: +"expression: \"hscript\" or \"python\"." - removed
Input schema / properties / language / titleRemoved value: -"Language" - added
Input schema / properties / language / typeAdded value: +"string" - removed
Input schema / properties / locked / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Input schema / properties / locked / defaultRemoved value: -null - added
Input schema / properties / locked / descriptionAdded value: +"lock: true locks the parameter, false unlocks it." - removed
Input schema / properties / locked / titleRemoved value: -"Locked" - added
Input schema / properties / locked / typeAdded value: +"boolean" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"value\", \"press\", \"expression\", \"keyframe\", \"keyframes\", \"delete_keyframe\", \"revert\", \"lock\", \"link\", \"spare\", \"render_settings\", \"chop_export\", \"snapshot\", \"restore\", \"diff\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / defaultRemoved value: -null - added
Input schema / properties / name / descriptionAdded value: +"spare: the name of one control. snapshot, restore, diff: the record on disk." - removed
Input schema / properties / name / titleRemoved value: -"Name" - added
Input schema / properties / name / typeAdded value: +"string" - changed
Input schema / properties / parameters / anyOfPrevious value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } +] - removed
Input schema / properties / parameters / defaultRemoved value: -null - added
Input schema / properties / parameters / descriptionAdded value: +"value: several names and values in one write, as a dictionary. spare: the list of controls to add." - removed
Input schema / properties / parameters / titleRemoved value: -"Parameters" - removed
Input schema / properties / parm / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / parm / defaultRemoved value: -null - added
Input schema / properties / parm / descriptionAdded value: +"The parameter name, for example \"tx\" or \"divsize\"." - removed
Input schema / properties / parm / titleRemoved value: -"Parm" - added
Input schema / properties / parm / typeAdded value: +"string" - removed
Input schema / properties / parm_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / parm_type / defaultRemoved value: -null - added
Input schema / properties / parm_type / descriptionAdded value: +"spare: the type of one control, for example \"float\" or \"toggle\"." - removed
Input schema / properties / parm_type / titleRemoved value: -"Parm Type" - added
Input schema / properties / parm_type / typeAdded value: +"string" - removed
Input schema / properties / path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / path / defaultRemoved value: -null - added
Input schema / properties / path / descriptionAdded value: +"The node that holds the parameter." - removed
Input schema / properties / path / titleRemoved value: -"Path" - added
Input schema / properties / path / typeAdded value: +"string" - removed
Input schema / properties / paths / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / paths / defaultRemoved value: -null - added
Input schema / properties / paths / descriptionAdded value: +"snapshot: the nodes to save; \"/obj/geo1/*\" names every node in a network. restore: put back only these nodes." - added
Input schema / properties / paths / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - added
Input schema / properties / paths / typeAdded value: +"array" - added
Input schema / properties / settings / additionalPropertiesAdded value: +true - removed
Input schema / properties / settings / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / settings / defaultRemoved value: -null - added
Input schema / properties / settings / descriptionAdded value: +"render_settings: the ROP parameters to write, by name." - removed
Input schema / properties / settings / titleRemoved value: -"Settings" - added
Input schema / properties / settings / typeAdded value: +"object" - removed
Input schema / properties / src_parm / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / src_parm / defaultRemoved value: -null - added
Input schema / properties / src_parm / descriptionAdded value: +"link: the parameter to follow." - removed
Input schema / properties / src_parm / titleRemoved value: -"Src Parm" - added
Input schema / properties / src_parm / typeAdded value: +"string" - removed
Input schema / properties / src_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / src_path / defaultRemoved value: -null - added
Input schema / properties / src_path / descriptionAdded value: +"link: the node to follow." - removed
Input schema / properties / src_path / titleRemoved value: -"Src Path" - added
Input schema / properties / src_path / typeAdded value: +"string" - removed
Input schema / properties / value / anyOfRemoved value: -[ - {}, - { - "type": "null" - } -] - removed
Input schema / properties / value / defaultRemoved value: -null - added
Input schema / properties / value / descriptionAdded value: +"value, keyframe: the value to write. A menu takes its token." - removed
Input schema / properties / value / titleRemoved value: -"Value" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
pdg16 fields changed- removed
Input schema / properties / dirty_all / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / dirty_all / descriptionAdded value: +"dirty: also remove the outputs of the node on disk." - removed
Input schema / properties / dirty_all / titleRemoved value: -"Dirty All" - added
Input schema / properties / dirty_all / typeAdded value: +"boolean" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"status\", \"workitems\", \"cook\", \"dirty\", \"cancel\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - added
Input schema / properties / path / descriptionAdded value: +"The TOP network or the TOP node." - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / state / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / state / defaultRemoved value: -null - added
Input schema / properties / state / descriptionAdded value: +"workitems: keep the items in this state, for example \"failed\" or \"cooked\"." - removed
Input schema / properties / state / titleRemoved value: -"State" - added
Input schema / properties / state / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
playbar25 fields changed- removed
Input schema / properties / action / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / action / defaultRemoved value: -null - added
Input schema / properties / action / descriptionAdded value: +"play: \"play\", \"stop\", \"next\", \"previous\", \"start\" or \"end\"." - removed
Input schema / properties / action / titleRemoved value: -"Action" - added
Input schema / properties / action / typeAdded value: +"string" - removed
Input schema / properties / end / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / end / defaultRemoved value: -null - added
Input schema / properties / end / descriptionAdded value: +"range and playback: the last frame." - removed
Input schema / properties / end / titleRemoved value: -"End" - added
Input schema / properties / end / typeAdded value: +"number" - removed
Input schema / properties / frame / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / frame / defaultRemoved value: -null - added
Input schema / properties / frame / descriptionAdded value: +"frame: the frame to go to." - removed
Input schema / properties / frame / titleRemoved value: -"Frame" - added
Input schema / properties / frame / typeAdded value: +"number" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"get\", \"frame\", \"range\", \"playback\", \"play\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / start / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / start / defaultRemoved value: -null - added
Input schema / properties / start / descriptionAdded value: +"range and playback: the first frame." - removed
Input schema / properties / start / titleRemoved value: -"Start" - added
Input schema / properties / start / typeAdded value: +"number" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
render34 fields changed- removed
Input schema / properties / frame_range / anyOfRemoved value: -[ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / frame_range / defaultRemoved value: -null - added
Input schema / properties / frame_range / descriptionAdded value: +"start: [start, end]. Without it the ROP renders its own range." - added
Input schema / properties / frame_range / itemsAdded value: +{ + "type": "number" +} - removed
Input schema / properties / frame_range / titleRemoved value: -"Frame Range" - added
Input schema / properties / frame_range / typeAdded value: +"array" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"start\", \"progress\", \"settings\", \"create\", \"watch\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / defaultRemoved value: -null - added
Input schema / properties / name / descriptionAdded value: +"create: the name of the new ROP." - removed
Input schema / properties / name / titleRemoved value: -"Name" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / output_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / output_path / defaultRemoved value: -null - added
Input schema / properties / output_path / descriptionAdded value: +"watch: the image file to look for on disk." - removed
Input schema / properties / output_path / titleRemoved value: -"Output Path" - added
Input schema / properties / output_path / typeAdded value: +"string" - removed
Input schema / properties / parent_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / parent_path / descriptionAdded value: +"create: the network that gets the ROP." - removed
Input schema / properties / parent_path / titleRemoved value: -"Parent Path" - added
Input schema / properties / parent_path / typeAdded value: +"string" - removed
Input schema / properties / path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / path / defaultRemoved value: -null - added
Input schema / properties / path / descriptionAdded value: +"start, progress, settings: the ROP node." - removed
Input schema / properties / path / titleRemoved value: -"Path" - added
Input schema / properties / path / typeAdded value: +"string" - removed
Input schema / properties / render_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / render_type / descriptionAdded value: +"create: the ROP kind, for example \"opengl\", \"karma\", \"mantra\" or \"ifd\"." - removed
Input schema / properties / render_type / titleRemoved value: -"Render Type" - added
Input schema / properties / render_type / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
scene_file11 fields changed- added
Input schema / properties / countAdded value: +{ + "default": 1, + "description": "undo and redo: how many steps.", + "type": "integer" +} - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"info\", \"save\", \"load\", \"undo\", \"redo\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / path / defaultRemoved value: -null - added
Input schema / properties / path / descriptionAdded value: +"save: the file to write; empty saves over the open file. load: the .hip file to open." - removed
Input schema / properties / path / titleRemoved value: -"Path" - added
Input schema / properties / path / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
scene_overview29 fields changed- removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - added
Input schema / properties / category / descriptionAdded value: +"node_types: the context, for example \"Sop\", \"Object\", \"Lop\" or \"Driver\"." - removed
Input schema / properties / category / titleRemoved value: -"Category" - added
Input schema / properties / category / typeAdded value: +"string" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"scene\", \"network\", \"children\", \"search\", \"node_types\", \"errors\", \"materials\", \"lights\", \"takes\", \"caches\", \"render_nodes\", \"viewports\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / node_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / node_type / defaultRemoved value: -null - added
Input schema / properties / node_type / descriptionAdded value: +"search: keep the nodes of this type, for example \"null\"." - removed
Input schema / properties / node_type / titleRemoved value: -"Node Type" - added
Input schema / properties / node_type / typeAdded value: +"string" - removed
Input schema / properties / path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / path / defaultRemoved value: -null - added
Input schema / properties / path / descriptionAdded value: +"A node path such as \"/obj\" or \"/obj/geo1\": the network to list or to search." - removed
Input schema / properties / path / titleRemoved value: -"Path" - added
Input schema / properties / path / typeAdded value: +"string" - removed
Input schema / properties / pattern / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / pattern / defaultRemoved value: -null - added
Input schema / properties / pattern / descriptionAdded value: +"search: the name to match, with * and ? as wildcards." - removed
Input schema / properties / pattern / titleRemoved value: -"Pattern" - added
Input schema / properties / pattern / typeAdded value: +"string" - removed
Input schema / properties / recursive / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / recursive / descriptionAdded value: +"children: also list the children of the children." - removed
Input schema / properties / recursive / titleRemoved value: -"Recursive" - added
Input schema / properties / recursive / typeAdded value: +"boolean" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
select5 fields changed- changed
Input schema / properties / paths / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / paths / defaultRemoved value: -null - added
Input schema / properties / paths / descriptionAdded value: +"Leave it out to read the selection. One path or a list of paths replaces it. An empty list clears it." - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
session20 fields changed- removed
Input schema / properties / action / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / action / descriptionAdded value: +"One of \"status\", \"list\", \"attach\", \"detach\", \"interrupt\", \"start\", \"start_gui\", \"stop\"." - removed
Input schema / properties / action / titleRemoved value: -"Action" - added
Input schema / properties / action / typeAdded value: +"string" - removed
Input schema / properties / hip / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / hip / defaultRemoved value: -null - added
Input schema / properties / hip / descriptionAdded value: +"start_gui: the .hip file to open." - removed
Input schema / properties / hip / titleRemoved value: -"Hip" - added
Input schema / properties / hip / typeAdded value: +"string" - removed
Input schema / properties / port / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / port / defaultRemoved value: -null - added
Input schema / properties / port / descriptionAdded value: +"attach: the port of the Houdini to talk to, from list. interrupt: the Houdini to interrupt, when not the attached one." - removed
Input schema / properties / port / titleRemoved value: -"Port" - added
Input schema / properties / port / typeAdded value: +"integer" - removed
Input schema / properties / version / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / version / defaultRemoved value: -null - added
Input schema / properties / version / descriptionAdded value: +"start and start_gui: the Houdini release, for example \"21.0\" or \"21.0.829\"." - removed
Input schema / properties / version / titleRemoved value: -"Version" - added
Input schema / properties / version / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
- Changed
stage_inspect51 fields changed- removed
Input schema / properties / attr_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / attr_name / defaultRemoved value: -null - added
Input schema / properties / attr_name / descriptionAdded value: +"attribute: the attribute to read, for example \"points\"." - removed
Input schema / properties / attr_name / titleRemoved value: -"Attr Name" - added
Input schema / properties / attr_name / typeAdded value: +"string" - removed
Input schema / properties / count / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / count / descriptionAdded value: +"modified: how many prims come back." - removed
Input schema / properties / count / titleRemoved value: -"Count" - added
Input schema / properties / count / typeAdded value: +"integer" - changed
Input schema / properties / frames / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "additionalProperties": { - "type": "number" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "number" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } +] - removed
Input schema / properties / frames / defaultRemoved value: -null - added
Input schema / properties / frames / descriptionAdded value: +"Read at another frame, or at several: one frame, a list, or {\"start\": 1, \"end\": 10, \"step\": 2}. The playbar goes back after." - removed
Input schema / properties / frames / titleRemoved value: -"Frames" - removed
Input schema / properties / include_attrs / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / include_attrs / descriptionAdded value: +"prim: also return the attributes of the prim." - removed
Input schema / properties / include_attrs / titleRemoved value: -"Include Attrs" - added
Input schema / properties / include_attrs / typeAdded value: +"boolean" - removed
Input schema / properties / layer_index / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / layer_index / descriptionAdded value: +"layer: which layer of the stack, from 0 (the strongest)." - removed
Input schema / properties / layer_index / titleRemoved value: -"Layer Index" - added
Input schema / properties / layer_index / typeAdded value: +"integer" - removed
Input schema / properties / max_depth / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / max_depth / descriptionAdded value: +"prims: how many levels of the tree come back." - removed
Input schema / properties / max_depth / titleRemoved value: -"Max Depth" - added
Input schema / properties / max_depth / typeAdded value: +"integer" - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / mode / descriptionAdded value: +"One of \"stage\", \"prims\", \"prim\", \"search\", \"layer\", \"attribute\", \"composition\", \"variants\", \"stats\", \"modified\", \"lights\", \"transform\"." - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / mode / typeAdded value: +"string" - added
Input schema / properties / path / descriptionAdded value: +"The LOP node whose stage to read." - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / pattern / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / pattern / defaultRemoved value: -null - added
Input schema / properties / pattern / descriptionAdded value: +"search: the prim path to match, with * as a wildcard." - removed
Input schema / properties / pattern / titleRemoved value: -"Pattern" - added
Input schema / properties / pattern / typeAdded value: +"string" - removed
Input schema / properties / prim_path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / prim_path / defaultRemoved value: -null - added
Input schema / properties / prim_path / descriptionAdded value: +"prim, attribute, composition, variants, stats, transform: the prim, for example \"/world/geo/rock\"." - removed
Input schema / properties / prim_path / titleRemoved value: -"Prim Path" - added
Input schema / properties / prim_path / typeAdded value: +"string" - removed
Input schema / properties / root_prim / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / root_prim / descriptionAdded value: +"prims: the prim where the tree starts." - removed
Input schema / properties / root_prim / titleRemoved value: -"Root Prim" - added
Input schema / properties / root_prim / typeAdded value: +"string" - removed
Input schema / properties / type_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / type_name / defaultRemoved value: -null - added
Input schema / properties / type_name / descriptionAdded value: +"search: keep the prims of this type, for example \"Mesh\" or \"SphereLight\"." - removed
Input schema / properties / type_name / titleRemoved value: -"Type Name" - added
Input schema / properties / type_name / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"toolArguments"
187 tool updates
v0.1.1- Removed
assign_material - Removed
assign_material_workflow - Changed
batch5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / operations / defaultRemoved value: -[] - added
Input schema / properties / operations / items / additionalPropertiesAdded value: +true - added
Input schema / requiredAdded value: +[ + "operations" +] - changed
Input schema / titlePrevious value: -"batchArguments"New value: +"toolArguments"
- Removed
build_sop_chain - Added
capture - Removed
capture_screenshot - Removed
clear_cache - Added
connect - Removed
connect_nodes - Removed
connect_nodes_batch - Added
console - Added
cook - Removed
copy_node - Removed
create_chop_node - Removed
create_cop_node - Removed
create_lop_node - Removed
create_material_network - Removed
create_material_workflow - Removed
create_node - Removed
create_render_node - Removed
create_spare_parameter - Removed
create_spare_parameters - Removed
create_take - Removed
create_vex_expression - Removed
create_wrangle - Removed
delete_keyframe - Removed
delete_node - Removed
disconnect_node_input - Added
docs - Removed
evaluate_expression - Added
execute - Removed
execute_houdini_code - Removed
execute_hscript - Removed
explain_node - Removed
export_chop_to_parm - Removed
find_error_nodes - Removed
find_nearest_point - Removed
find_nodes - Removed
frame_all - Removed
frame_selection - Removed
geo_export - Added
geometry_inspect - Removed
get_attrib_values - Removed
get_bounding_box - Removed
get_cache_status - Removed
get_changed_parms - Removed
get_chop_data - Removed
get_connection_status - Removed
get_cook_chain - Removed
get_cop_geometry - Removed
get_cop_info - Removed
get_cop_layer - Removed
get_cop_vdb - Removed
get_current_take - Removed
get_doc - Removed
get_dop_field - Removed
get_dop_object - Removed
get_dop_relationships - Removed
get_env_variable - Removed
get_expression - Removed
get_frame - Removed
get_geo_summary - Removed
get_group_members - Removed
get_groups - Removed
get_hda_section_content - Removed
get_hda_sections - Removed
get_houdini_events - Removed
get_keyframes - Removed
get_last_modified_prims - Removed
get_material_info - Removed
get_network_overview - Removed
get_node_doc - Removed
get_node_info - Removed
get_parameter - Removed
get_parameter_schema - Removed
get_points - Removed
get_prim_intrinsics - Removed
get_prims - Removed
get_render_progress - Removed
get_render_settings - Removed
get_scene_info - Removed
get_scene_summary - Removed
get_selection - Removed
get_sim_memory_usage - Removed
get_simulation_info - Removed
get_usd_attribute - Removed
get_usd_composition - Removed
get_usd_prim_stats - Removed
get_usd_variants - Removed
get_viewport_info - Removed
get_wrangle_code - Added
hda - Removed
hda_create - Removed
hda_get - Removed
hda_install - Removed
hda_list - Removed
inspect_usd_layer - Removed
layout_children - Removed
link_parameters - Removed
list_caches - Removed
list_children - Removed
list_chop_channels - Removed
list_cop_node_types - Removed
list_dop_objects - Removed
list_lights - Removed
list_material_types - Removed
list_materials - Removed
list_node_types - Removed
list_panes - Removed
list_render_nodes - Removed
list_takes - Removed
list_usd_prims - Removed
load_scene - Removed
lock_parameter - Removed
lop_import - Removed
lop_layer_info - Removed
lop_prim_get - Removed
lop_prim_search - Removed
lop_stage_info - Removed
modify_node - Removed
monitor_render - Removed
move_node - Added
node_edit - Added
node_inspect - Added
parm_set - Added
pdg - Removed
pdg_cancel - Removed
pdg_cook - Removed
pdg_dirty - Removed
pdg_status - Removed
pdg_workitems - Removed
ping - Added
playbar - Removed
playbar_control - Removed
reload_hda - Removed
rename_node - Added
render - Removed
render_flipbook - Removed
render_quad_views - Removed
render_single_view - Removed
render_specific_camera - Removed
reorder_inputs - Removed
reset_simulation - Removed
revert_parameter - Removed
save_scene - Added
scene_file - Added
scene_overview - Removed
search_docs - Added
select - Added
session - Removed
set_cop_flags - Removed
set_current_network - Removed
set_current_take - Removed
set_detail_attrib - Removed
set_expression - Removed
set_frame - Removed
set_frame_range - Removed
set_hda_section_content - Removed
set_keyframe - Removed
set_keyframes - Removed
set_material - Removed
set_node_color - Removed
set_node_flags - Removed
set_parameter - Removed
set_parameters - Removed
set_playback_range - Removed
set_render_settings - Removed
set_selection - Removed
set_usd_attribute - Removed
set_viewport_camera - Removed
set_viewport_direction - Removed
set_viewport_display - Removed
set_viewport_renderer - Removed
set_wrangle_code - Removed
setup_flip_sim - Removed
setup_pyro_sim - Removed
setup_rbd_sim - Removed
setup_render - Removed
setup_vellum_sim - Added
stage_inspect - Removed
start_render - Removed
step_simulation - Removed
subscribe_houdini_events - Removed
uninstall_hda - Removed
update_hda - Removed
validate_vex - Removed
write_cache
168 tool updates
v0.1.0- First observed
assign_material - First observed
assign_material_workflow - First observed
batch - First observed
build_sop_chain - First observed
capture_screenshot - First observed
clear_cache - First observed
connect_nodes - First observed
connect_nodes_batch - First observed
copy_node - First observed
create_chop_node - First observed
create_cop_node - First observed
create_lop_node - First observed
create_material_network - First observed
create_material_workflow - First observed
create_node - First observed
create_render_node - First observed
create_spare_parameter - First observed
create_spare_parameters - First observed
create_take - First observed
create_vex_expression - First observed
create_wrangle - First observed
delete_keyframe - First observed
delete_node - First observed
disconnect_node_input - First observed
evaluate_expression - First observed
execute_houdini_code - First observed
execute_hscript - First observed
explain_node - First observed
export_chop_to_parm - First observed
find_error_nodes - First observed
find_nearest_point - First observed
find_nodes - First observed
frame_all - First observed
frame_selection - First observed
geo_export - First observed
get_attrib_values - First observed
get_bounding_box - First observed
get_cache_status - First observed
get_changed_parms - First observed
get_chop_data - First observed
get_connection_status - First observed
get_cook_chain - 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_doc - 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_frame - First observed
get_geo_summary - First observed
get_group_members - First observed
get_groups - First observed
get_hda_section_content - First observed
get_hda_sections - First observed
get_houdini_events - First observed
get_keyframes - First observed
get_last_modified_prims - First observed
get_material_info - First observed
get_network_overview - First observed
get_node_doc - First observed
get_node_info - First observed
get_parameter - First observed
get_parameter_schema - 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_sim_memory_usage - First observed
get_simulation_info - First observed
get_usd_attribute - First observed
get_usd_composition - First observed
get_usd_prim_stats - First observed
get_usd_variants - First observed
get_viewport_info - First observed
get_wrangle_code - First observed
hda_create - First observed
hda_get - First observed
hda_install - First observed
hda_list - First observed
inspect_usd_layer - 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_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_takes - First observed
list_usd_prims - First observed
load_scene - First observed
lock_parameter - First observed
lop_import - First observed
lop_layer_info - First observed
lop_prim_get - First observed
lop_prim_search - First observed
lop_stage_info - First observed
modify_node - First observed
monitor_render - First observed
move_node - First observed
pdg_cancel - First observed
pdg_cook - First observed
pdg_dirty - First observed
pdg_status - First observed
pdg_workitems - First observed
ping - First observed
playbar_control - First observed
reload_hda - First observed
rename_node - First observed
render_flipbook - First observed
render_quad_views - First observed
render_single_view - First observed
render_specific_camera - First observed
reorder_inputs - First observed
reset_simulation - First observed
revert_parameter - First observed
save_scene - First observed
search_docs - 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_material - First observed
set_node_color - First observed
set_node_flags - 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_usd_attribute - 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
subscribe_houdini_events - First observed
uninstall_hda - First observed
update_hda - First observed
validate_vex - First observed
write_cache
TDQS
Scored across 20 tools
Most tools have clearly distinct purposes, and descriptions explicitly cross-reference alternatives (e.g., cook vs pdg vs render, node_inspect vs scene_overview vs geometry_inspect). Minor overlaps remain: scene_overview lights and stage_inspect lights both read USD stage lights, geometry_inspect image and node_inspect image both inspect COP nodes, and selection/cache data can be obtained from multiple tools. These are edge cases, but they keep the set from being perfectly unambiguous.
All names use lowercase snake_case or single lowercase tokens, with no camelCase or case-style mixing. The pattern is not strictly verb_noun: there are single verbs (capture, connect, select, cook, render, execute), single nouns (batch, console, docs, hda, pdg, playbar, session), and noun_verb compounds (node_edit, node_inspect, parm_set). Still readable and mostly predictable, with only minor deviations.
20 tools is above the typical 3-15 sweet spot and lands in the heavier 16-25 range, so it is mildly over rather than perfectly scoped. However, each tool maps to a distinct Houdini subsystem, and many operations are consolidated into mode-based tools, avoiding an even larger surface. The count is reasonable given Houdini's breadth.
The surface covers session management, scene files, inspection, node editing, parameter writing, wiring, cooking, simulation, PDG, USD, rendering, capture, HDA editing, docs, execution, undo, and more. No obvious lifecycle gap remains for the stated domain; agents have both high-level and low-level escape hatches where needed.
Maintenance
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
Related MCP Servers
- AlicenseBqualityBmaintenanceConnects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender for AI-assisted 3D modeling, scene manipulation, and rendering.2131,938MIT
- FlicenseNot gradedqualityDmaintenanceConnects Houdini to Claude AI through Model Context Protocol, enabling AI-assisted 3D modeling, scene creation, simulation setup, and rendering through natural language commands.59-
- AlicenseNot gradedqualityDmaintenanceConnects Claude AI to Houdini via the Model Context Protocol, enabling prompt-assisted 3D modeling, scene manipulation, and rendering within Houdini.11GPL 3.0
- AlicenseNot gradedqualityDmaintenanceConnects Claude AI to Houdini through the Model Context Protocol, enabling direct interaction and control for 3D modeling, scene creation, simulation, and rendering.20MIT