Skip to main content
Glama

get_graph_nodes

Read-onlyIdempotent

Read an Unreal Blueprint graph's nodes—IDs, classes, pins, links, defaults—to inspect behavior and support pin or node edits.

Instructions

Read one Blueprint graph: every node with its node_id (NodeGuid), class, title, position, comment and pins (name, direction, type, linked_to, default) -- the read that feeds connect_pins / set_pin_default_value / delete_node, and the way to see what a graph actually DOES. TRAP: compact=true drops per-pin type metadata AND omits every pin that is unlinked and default-less (plus knots and comment boxes), so a pin missing from a compact listing is NOT proof the pin does not exist -- re-read with compact=false before concluding anything about pins. Also: a bare blueprint_name that matches two assets picks one silently (pass the full path), and reading a graph under a read-only vendor root leaves that package DIRTY in memory (reload_asset_package with on_dirty="discard" cleans it).

Returns: { blueprint_name, graph_name, nodes:[{node_id, class, title, pos_x, pos_y, comment, pins:[...], subgraph?}], node_count, compact, total_node_count, excluded_count, truncated } -- node_count is what was EMITTED, total_node_count what exists; a node owning a nested graph (composite / macro instance) carries "subgraph" with the name to pass back as graph_name.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
compactNoToken-lean listing: drops pin types, positions and comments, and skips pins that are unlinked AND have no default. Also excludes K2Node_Knot + EdGraphNode_Comment unless exclude_classes is given. Good for reading topology, WRONG for checking whether a pin exists. (Optional, default false)
max_nodesNoCap on the number of nodes emitted (<=0 or absent = unlimited); the response still counts every non-excluded node in total_node_count and sets truncated=true.
graph_nameNoTarget graph name; defaults to the Blueprint's event graph when omitted. Also resolves a collapsed composite subgraph by its title (e.g. 'In Game HUD') and accepts a path form ('EventGraph > In Game HUD').
blueprint_nameNoBlueprint asset name or path. Prefer the FULL path: a short name with more than one match resolves silently to one of them, and stale backup copies share the original's name.
blueprint_pathNoAlias of `blueprint_name` (same value, same meaning). Accepted because sibling tools spell this parameter differently; prefer `blueprint_name`.
exclude_classesNoArray of leaf node class names to skip, matched against each node's "class" field (e.g. ["K2Node_Knot"]). Pass [] to include everything even in compact mode. Absent + compact=true means knots and comments are excluded; absent + compact=false excludes nothing.
expand_compositesNoWhen true, inline the nodes of collapsed composite subgraphs recursively; each node gains a "graph" tag naming the graph it came from. Macro-library graphs are never inlined. (Optional, default false)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description goes well beyond them: compact mode drops pin metadata and omits unlinked, default-less pins plus knots/comments, a bare blueprint_name resolves silently among duplicates, and reading under a read-only vendor root leaves the package dirty in memory with the exact remedy (reload_asset_package with on_dirty="discard"). These are precisely the side effects and data-loss caveats annotations cannot express.

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 traps, then the return shape, with no filler sentences and every clause carrying operational weight. It runs long and repeats some compact-mode wording already present in the schema descriptions, which is the only drag on conciseness.

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?

Seven optional parameters with no output schema, yet the description spells out the return contract itself (nodes array fields, node_count vs total_node_count vs excluded_count, truncated, and the subgraph field naming the graph to pass back as graph_name). Combined with the annotation-covered safety profile and the trap disclosures, nothing an agent needs to call this 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 description coverage is 100%, so the baseline is 3; the description still adds practical consequence on top of the schema's compact wording by warning that a pin missing from a compact listing is not proof it doesn't exist and that total_node_count/truncated reflect the full set. It largely mirrors the schema text for blueprint_name and graph_name, which keeps it from a 5.

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?

States a specific verb and resource ('Read one Blueprint graph') and enumerates exactly what is returned per node (node_id/NodeGuid, class, title, position, comment, pins with name, direction, type, linked_to, default). It also distinguishes the tool's role from the mutating siblings it feeds (connect_pins, set_pin_default_value, delete_node), so an agent can place it 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?

Explicitly frames when to reach for it ('the read that feeds connect_pins / set_pin_default_value / delete_node', 'the way to see what a graph actually DOES') and gives a conditional re-read rule (use compact=false before concluding anything about pins). It does not name a read-side alternative (e.g. diff_blueprint_graphs or get_node_pin_info) that would let an agent choose between competing reads, so it stops short of full when/when-not/alternatives.

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