Skip to main content
Glama

get_attrib_stats

Aggregate numeric Houdini attributes into min, max, mean, sum, and percentiles to verify simulation trends across points, prims, groups, or frames without reading raw values.

Instructions

Aggregate statistics for numeric attributes: min, max, mean, sum.

Use this to prove something is happening, rather than reading values. get_geometry_info names the attributes; get_attrib_values returns every value, which on a 60k-point cache tells you nothing you can read. Vector attributes also report per-component ranges, so a velocity field's per-axis extremes come back in the same call.

Args: node_path: SOP node path. attribs: Attribute names. Omit for every attribute of the class. A name written "age/life" is the ratio of two attributes, per element (elements dividing by zero are counted, not used). attrib_class: "point", "prim", "vertex" (uv and N usually live there) or "detail". frames: Measure at each of these frames: a row per node per frame, frames cooked in increasing order, the current frame put back. element_count is the point count and P's per-component min/max the bounds, so a sim's count and spread over time is ONE call. node_paths: Several nodes (variants) in the same call, instead of node_path. percentiles: e.g. [5, 50, 95] for the distribution (50 = median). group: Only the elements in this group pattern, as a SOP group field takes it: "grp", "@id>=0", "0-99"; space-separated parts add up. Point and prim classes. unique: Count distinct values of integer and string attributes (unique_count, most_common); for the prim class also vertices_per_prim, a trail's length and its distribution. distance_to: A SOP whose surface each point's distance is measured to (distance_to in the reply: min / max / mean, percentiles): particles crawling on or hovering over a mesh. Point class; the scene is not changed. Both are taken in their own SOP space: object transforms are not applied, so use it within one object.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
groupNo
framesNo
uniqueNo
attribsNo
node_pathNo
node_pathsNo
distance_toNo
percentilesNo
attrib_classNopoint

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv2.25.0
    • addedInput schema / properties / distance_to
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Distance To"
      +}
    • addedInput schema / properties / group
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Group"
      +}
    • addedInput schema / properties / unique
      Added value: +{
      +  "default": false,
      +  "title": "Unique",
      +  "type": "boolean"
      +}
  2. Changed8 schema fields changedv2.24.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / frames
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Frames"
      +}
    • addedInput schema / properties / node_path / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / node_path / default
      Added value: +null
    • removedInput schema / properties / node_path / type
      Removed value: -"string"
    • addedInput schema / properties / node_paths
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Node Paths"
      +}
    • addedInput schema / properties / percentiles
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Percentiles"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "node_path"
      -]
  3. First observedv0.1.0

TDQS

A4.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full load and mostly does: it discloses the state effect of frames ('cooked in increasing order, the current frame put back'), zero-division handling ('elements dividing by zero are counted, not used'), and that distance_to leaves the scene unchanged and ignores object transforms. It does not cover permissions or cost, but for a local read-only stats tool this is unusually rich disclosure.

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

Conciseness5/5

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

Front-loads the one-line purpose, then the routing rule, then a per-argument list. Long, but every sentence carries non-redundant semantics and the size is proportionate to a 9-parameter surface.

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 9-parameter tool with no annotations, 0% schema coverage and no output schema, the description supplies purpose, alternatives, per-parameter semantics, and side-effect behavior. There is no material gap an agent would need in order to invoke it correctly.

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

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it does: ratio syntax ('age/life'), attrib_class values with the note that uv/N live on vertex, frames row semantics, group pattern grammar ('grp', '@id>=0', '0-99'), percentile example, and the output fields unique and distance_to produce. This is far beyond the bare schema titles.

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+resource+output ('Aggregate statistics for numeric attributes: min, max, mean, sum') and immediately distinguishes itself from two named siblings by contrasting what each returns. An agent can pick this over get_attrib_values or get_geometry_info without opening a 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?

States the operative condition ('use this to prove something is happening, rather than reading values') and names the alternatives it supersedes. It also gives when-to-use guidance for variants: node_paths for several nodes in one call, group for subsetting, distance_to for surface proximity.

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

Deploy Server

Other Tools