Skip to main content
Glama

List Xpresso Graph Nodes

list_xpresso_nodes
Read-only

Retrieve a flat list of nodes from an Xpresso tag, each with a stable dotted-index path id and port summaries. Use these ids to address nodes in graph, port, or removal tools.

Instructions

Walk an Xpresso (Texpresso / GvNodeMaster) tag and return a flat list of its GvNodes. Each entry carries a stable dotted-index path id ('0.2' = root's first child, its third child) plus port summaries. Use the id to address nodes from apply_xpresso_graph, set_xpresso_port, remove_xpresso_node, or any handle-taking tool via {kind:'gv_node', tag, id}. Accepts either a tag handle (Texpresso) or an object handle (uses that object's first Texpresso tag).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
handleYesXpresso tag handle or host object handle.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.5.1
    • removedInput schema / definitions
      Removed value: -{
      -  "__schema0": {
      -    "anyOf": [
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "object",
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "path": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "render_data",
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "take",
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "material",
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "layer",
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "tag",
      -            "type": "string"
      -          },
      -          "object": {
      -            "type": "string"
      -          },
      -          "object_path": {
      -            "type": "string"
      -          },
      -          "tag_name": {
      -            "type": "string"
      -          },
      -          "type_id": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "video_post",
      -            "type": "string"
      -          },
      -          "render_data": {
      -            "type": "string"
      -          },
      -          "type_id": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "render_data",
      -          "type_id"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "index": {
      -            "maximum": 9007199254740991,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "shader",
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "owner": {
      -            "allOf": [
      -              {
      -                "$ref": "#/definitions/__schema0"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "owner"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "id": {
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "gv_node",
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "tag": {
      -            "allOf": [
      -              {
      -                "$ref": "#/definitions/__schema0"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "tag"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "plugin_options",
      -            "type": "string"
      -          },
      -          "plugin_id": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "string"
      -              }
      -            ]
      -          },
      -          "plugin_type": {
      -            "enum": [
      -              "command",
      -              "object",
      -              "tag",
      -              "material",
      -              "shader",
      -              "video_post",
      -              "scene_loader",
      -              "scene_saver",
      -              "bitmap_loader",
      -              "bitmap_saver",
      -              "tool",
      -              "preference",
      -              "node",
      -              "sculpt_brush"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "plugin_id"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  }
      -}
    • removedInput schema / properties / handle / allOf
      Removed value: -[
      -  {
      -    "$ref": "#/definitions/__schema0"
      -  }
      -]
    • addedInput schema / properties / handle / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "object",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "path": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "render_data",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "take",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "material",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "layer",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "tag",
      +        "type": "string"
      +      },
      +      "object": {
      +        "type": "string"
      +      },
      +      "object_path": {
      +        "type": "string"
      +      },
      +      "tag_name": {
      +        "type": "string"
      +      },
      +      "type_id": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "video_post",
      +        "type": "string"
      +      },
      +      "render_data": {
      +        "type": "string"
      +      },
      +      "type_id": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "render_data",
      +      "type_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "plugin_options",
      +        "type": "string"
      +      },
      +      "plugin_id": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "plugin_type": {
      +        "enum": [
      +          "command",
      +          "object",
      +          "tag",
      +          "material",
      +          "shader",
      +          "video_post",
      +          "scene_loader",
      +          "scene_saver",
      +          "bitmap_loader",
      +          "bitmap_saver",
      +          "tool",
      +          "preference",
      +          "node",
      +          "sculpt_brush"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "plugin_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "index": {
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "shader",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "owner": {
      +        "additionalProperties": {},
      +        "description": "Handle of the shader's owner (material, object, tag, video_post, or shader).",
      +        "properties": {
      +          "kind": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "owner"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "gv_node",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "tag": {
      +        "properties": {
      +          "kind": {
      +            "const": "tag",
      +            "type": "string"
      +          },
      +          "object": {
      +            "type": "string"
      +          },
      +          "object_path": {
      +            "type": "string"
      +          },
      +          "tag_name": {
      +            "type": "string"
      +          },
      +          "type_id": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "tag"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changedv0.4.3
    • changedInput schema / definitions / __schema0 / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "object",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "path": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "render_data",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "name"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "take",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "name"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "material",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "name"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "tag",
      -        "type": "string"
      -      },
      -      "object": {
      -        "type": "string"
      -      },
      -      "object_path": {
      -        "type": "string"
      -      },
      -      "tag_name": {
      -        "type": "string"
      -      },
      -      "type_id": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "video_post",
      -        "type": "string"
      -      },
      -      "render_data": {
      -        "type": "string"
      -      },
      -      "type_id": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "render_data",
      -      "type_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "index": {
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "kind": {
      -        "const": "shader",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "owner": {
      -        "allOf": [
      -          {
      -            "$ref": "#/definitions/__schema0"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "owner"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "id": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "gv_node",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "tag": {
      -        "allOf": [
      -          {
      -            "$ref": "#/definitions/__schema0"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "tag"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "plugin_options",
      -        "type": "string"
      -      },
      -      "plugin_id": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "string"
      -          }
      -        ]
      -      },
      -      "plugin_type": {
      -        "enum": [
      -          "command",
      -          "object",
      -          "tag",
      -          "material",
      -          "shader",
      -          "video_post",
      -          "scene_loader",
      -          "scene_saver",
      -          "bitmap_loader",
      -          "bitmap_saver",
      -          "tool",
      -          "preference",
      -          "node",
      -          "sculpt_brush"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "plugin_id"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "object",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "path": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "render_data",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "take",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "material",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "layer",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "tag",
      +        "type": "string"
      +      },
      +      "object": {
      +        "type": "string"
      +      },
      +      "object_path": {
      +        "type": "string"
      +      },
      +      "tag_name": {
      +        "type": "string"
      +      },
      +      "type_id": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "video_post",
      +        "type": "string"
      +      },
      +      "render_data": {
      +        "type": "string"
      +      },
      +      "type_id": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "render_data",
      +      "type_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "index": {
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "shader",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "owner": {
      +        "allOf": [
      +          {
      +            "$ref": "#/definitions/__schema0"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "owner"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "gv_node",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "tag": {
      +        "allOf": [
      +          {
      +            "$ref": "#/definitions/__schema0"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "tag"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "plugin_options",
      +        "type": "string"
      +      },
      +      "plugin_id": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "plugin_type": {
      +        "enum": [
      +          "command",
      +          "object",
      +          "tag",
      +          "material",
      +          "shader",
      +          "video_post",
      +          "scene_loader",
      +          "scene_saver",
      +          "bitmap_loader",
      +          "bitmap_saver",
      +          "tool",
      +          "preference",
      +          "node",
      +          "sculpt_brush"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "plugin_id"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. First observedv0.3.1

TDQS

A4.3/5.0
Behavior4/5

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

With readOnlyHint=true already covering the safety profile, the description adds genuinely non-obvious behavior: the stable dotted-index path id scheme ('0.2' decoded explicitly) and the handle-resolution rule that an object handle uses that object's first Texpresso tag. It also notes the return carries port summaries. It stops short of noting ordering guarantees or error behavior on a non-Xpresso tag.

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?

Three sentences, front-loaded with the core action, then return shape, then consumption target. Every sentence earns its place, though the id-format and handle-taking-tool sentence is dense and could parse more crisply.

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

Completeness4/5

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

For a read-only discovery tool with no output schema, the description adequately covers what comes back (flat GvNode list, ids, port summaries) and what to do with it. Minor omission: no statement of ordering, root-node inclusion, or behavior when a tag has no Xpresso graph.

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?

Only one parameter and schema coverage is 100%, so the baseline is 3, but the description meaningfully extends the schema by explaining the anyOf duality: a tag handle (Texpresso) OR an object handle, with the implicit first-Texpresso-tag fallback. That is semantic value the schema's 'Xpresso tag handle or host object handle' only hints at.

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?

The description names a specific verb and resource ('Walk an Xpresso (Texpresso / GvNodeMaster) tag and return a flat list of its GvNodes') and specifies the shape of each entry (dotted-index id plus port summaries). This is specific enough to distinguish it from the sibling list_graph_nodes/list_markers family 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 Guidelines4/5

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

It gives clear downstream context: the returned id is what you feed to apply_xpresso_graph, set_xpresso_port, remove_xpresso_node, or any handle-taking tool via {kind:'gv_node', tag, id}. That establishes when this tool belongs in a workflow, but it never states when NOT to use it or contrasts it against the node-graph siblings.

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