Skip to main content
Glama

node_inspect

Read-onlyIdempotent

Read Houdini nodes and parameters without modifying them to confirm names, expressions, keyframes, cook results, and validation issues before writing changes.

Instructions

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,
                        each pair of nodes where one name covers the
                        other, wires behind nodes, and the house rules:
                        node comments, box titles that are sentences or
                        cut off, a box in a box, a node in a box it is not
                        part of, a Null OUT_ display node with no Output.
                        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.

Input Schema

NameRequiredDescriptionDefault
endNochannels: the last sample frame.
modeNoOne 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
parmNoparms, expression, keyframes, readers: the parameter name.
pathsYesOne node path, or a list. A list keeps going after a node that fails, and each result names its path.
startNochannels: the first sample frame.
fieldsNoparms, changed: keep only these keys of each parameter, for example ["value", "expression"]. The name is always kept.
framesNoRead 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.
channelNochannels: the CHOP channel whose samples to read.
patternNoparms, changed: keep the parameters whose name or label holds this text or matches it as a glob. "|" separates alternatives: "time|step|cfl".
field_nameNosimulation: the field of object_name to read.
object_nameNosimulation: the DOP object to read.
has_expressionNoparms: keep only the parameters that carry an expression.
include_all_parmsNoinfo: list every parameter, not only the ones that changed.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed60 schema fields changedv0.7.3
    • removedInput schema / properties / channel / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / channel / default
      Removed value: -null
    • addedInput schema / properties / channel / description
      Added value: +"channels: the CHOP channel whose samples to read."
    • removedInput schema / properties / channel / title
      Removed value: -"Channel"
    • addedInput schema / properties / channel / type
      Added value: +"string"
    • removedInput schema / properties / end / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / end / default
      Removed value: -null
    • addedInput schema / properties / end / description
      Added value: +"channels: the last sample frame."
    • removedInput schema / properties / end / title
      Removed value: -"End"
    • addedInput schema / properties / end / type
      Added value: +"number"
    • removedInput schema / properties / field_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / field_name / default
      Removed value: -null
    • addedInput schema / properties / field_name / description
      Added value: +"simulation: the field of object_name to read."
    • removedInput schema / properties / field_name / title
      Removed value: -"Field Name"
    • addedInput schema / properties / field_name / type
      Added value: +"string"
    • removedInput schema / properties / fields / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / fields / default
      Removed value: -null
    • addedInput schema / properties / fields / description
      Added value: +"parms, changed: keep only these keys of each parameter, for example [\"value\", \"expression\"]. The name is always kept."
    • addedInput schema / properties / fields / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / fields / title
      Removed value: -"Fields"
    • addedInput schema / properties / fields / type
      Added value: +"array"
    • changedInput schema / properties / frames / anyOf
      Previous 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"
      +  }
      +]
    • removedInput schema / properties / frames / default
      Removed value: -null
    • addedInput schema / properties / frames / description
      Added 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."
    • removedInput schema / properties / frames / title
      Removed value: -"Frames"
    • removedInput schema / properties / has_expression / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / has_expression / description
      Added value: +"parms: keep only the parameters that carry an expression."
    • removedInput schema / properties / has_expression / title
      Removed value: -"Has Expression"
    • addedInput schema / properties / has_expression / type
      Added value: +"boolean"
    • removedInput schema / properties / include_all_parms / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / include_all_parms / description
      Added value: +"info: list every parameter, not only the ones that changed."
    • removedInput schema / properties / include_all_parms / title
      Removed value: -"Include All Parms"
    • addedInput schema / properties / include_all_parms / type
      Added value: +"boolean"
    • removedInput schema / properties / mode / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / mode / description
      Added 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\"."
    • removedInput schema / properties / mode / title
      Removed value: -"Mode"
    • addedInput schema / properties / mode / type
      Added value: +"string"
    • removedInput schema / properties / object_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / object_name / default
      Removed value: -null
    • addedInput schema / properties / object_name / description
      Added value: +"simulation: the DOP object to read."
    • removedInput schema / properties / object_name / title
      Removed value: -"Object Name"
    • addedInput schema / properties / object_name / type
      Added value: +"string"
    • removedInput schema / properties / parm / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / parm / default
      Removed value: -null
    • addedInput schema / properties / parm / description
      Added value: +"parms, expression, keyframes, readers: the parameter name."
    • removedInput schema / properties / parm / title
      Removed value: -"Parm"
    • addedInput schema / properties / parm / type
      Added value: +"string"
    • addedInput schema / properties / paths / description
      Added value: +"One node path, or a list. A list keeps going after a node that fails, and each result names its path."
    • removedInput schema / properties / paths / title
      Removed value: -"Paths"
    • removedInput schema / properties / pattern / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / pattern / default
      Removed value: -null
    • addedInput schema / properties / pattern / description
      Added value: +"parms, changed: keep the parameters whose name or label holds this text or matches it as a glob. \"|\" separates alternatives: \"time|step|cfl\"."
    • removedInput schema / properties / pattern / title
      Removed value: -"Pattern"
    • addedInput schema / properties / pattern / type
      Added value: +"string"
    • removedInput schema / properties / start / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / start / default
      Removed value: -null
    • addedInput schema / properties / start / description
      Added value: +"channels: the first sample frame."
    • removedInput schema / properties / start / title
      Removed value: -"Start"
    • addedInput schema / properties / start / type
      Added value: +"number"
    • removedInput schema / title
      Removed value: -"toolArguments"
  2. Addedv0.1.1

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, but the description adds traits they cannot express: a list keeps going after a failing node and each result names its path, cook errors come back inside the result payload rather than throwing, an empty geometry with no error line means the node cooked and made nothing, and the playbar is restored after `frames`. These are genuine behavioral disclosures beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then the exclusion, then mode semantics, so a reader can stop early. The mode name roll-call in the opening line is then repeated and expanded in the bullets, which is a modest redundancy in an otherwise tight, scannable layout.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be spelled out, and the description still covers the salient error semantics. For a 13-parameter, 20-mode inspection tool, the guidance on mode selection, prerequisites per mode, partial-failure behavior, and the validation mode's motivating failure mode leaves nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 goes further by explaining what each mode requires of the parameters (parm for expression/keyframes/readers, channel+start+end for channels, object_name+field_name for simulation, frames for time_dependency, pattern/fields for solver-sized parameter sets). It adds practical selection guidance such as "A solver has hundreds of parameters: give pattern or fields." It stops short of 5 only because the per-mode text largely restates the terse schema hints rather than adding new syntax or defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource plus scope: "Read one node, or a list of nodes, without changing anything." It also explicitly separates itself from the sibling that lists networks (scene_overview), so an agent can pick it without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ("Use it before you write: to confirm a parameter name, to see whether a parameter carries an expression, to read what a node reports after a cook") and an explicit when-not with the named alternative ("Do not use it to list a network: scene_overview does that"). It additionally sequences modes for the agent ("Read this first when you do not know the name to write").

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.