Skip to main content
Glama

node_inspect

Read-onlyIdempotent

Inspect one or more Houdini nodes without altering them to confirm parameter names, expressions, schema, and cook results before writing or debugging.

Instructions

Read one node, or a list of nodes, without changing anything.

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.

Input Schema

TableJSON 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

TableJSON 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 cover the safety profile (readOnlyHint, idempotentHint), yet the description still adds real behavioral context: a failed node in a list does not abort the rest and each result names its path, the playbar is restored after multi-frame reads, and an empty geometry with no error line means the node cooked and produced nothing. That is disclosure beyond what the annotations provide.

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

Conciseness4/5

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

Front-loaded with purpose, usage and exclusion before the mode reference, which is well structured as a scannable block. The size is largely justified by 20 mode values, though several lines are chatty ('and nothing else', 'Read this first when you do not know the name to write') and could be tightened.

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?

For a 13-parameter, 20-mode inspection tool with an output schema and full annotation coverage, the description covers mode semantics, pre-write usage, failure behavior and list semantics. Nothing an agent needs to select a mode and call it correctly is 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 per-parameter terse descriptions already exist; the description adds value by binding parameters to modes ('With `frames` it times each one', '`channel`, `start` and `end` read the samples of one channel', 'give pattern or fields' for solvers) and by expanding every `mode` value beyond the schema's flat list. It stops short of adding format/syntax detail beyond that.

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 then explicitly distinguishes itself from the sibling that could be confused with it: 'Do not use it to list a network: scene_overview does that.'

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 an explicit usage trigger ('Use it before you write: to confirm a parameter name, to see whether a parameter carries an expression...'), an explicit exclusion, and names the alternative tool (scene_overview) for the excluded case. It also routes within itself ('Read this first when you do not know the name to write', 'Read it after you add nodes').

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