docs / reference 82 tools

The grimoire.

Every tool this build ships, grouped by category, plus the skills, the audit agent, the environment flags, and how the backends route. This is the whole surface; what you see is what you get.

One package, the proven core. These 82 tools are the ones verified safe against real projects. Read tools can't mutate; every write saves through a compile gate and a backup. Tools that could corrupt a project (or that aren't fully proven) simply aren't in this build.

Tools by category

Blueprint 39 tools

add_componentAdd a component (StaticMeshComponent, AudioComponent, etc.) to a Blueprint's SimpleConstructionScript tree: author-time component setup, not runtime spawning.
add_functionCreate a new BP function graph with the given name.
add_function_inputAdd an input parameter to an existing function.
add_function_outputAdd an output parameter to an existing function.
add_nodeSpawn a new K2 (Blueprint) node in a graph.
add_variableAdd a member variable to a Blueprint class.
apply_opsExecute a batch of write operations sequentially in a single tool call.
attach_componentRe-parent an SCS component on a Blueprint.
auto_layout_graphAuto-position the nodes in a Blueprint graph so they don't overlap.
bp_structural_diffCompare two Blueprints structurally: variables, components, function/macro/event-graph node signatures, connection counts.
clone_graphCopy every node in `graph` from the `source` Blueprint into the same-named graph of the `target` Blueprint, preserving wiring.
create_blueprintCreate a new Blueprint asset under `/Game/...` extending `parent_class`.
delete_functionDelete a Blueprint function graph by name.
delete_nodeDelete a K2 node by GUID.
delete_variableRemove a Blueprint member variable by name.
find_dangling_referencesWalk a Blueprint's function bodies (and optionally top-level graphs) for nodes referencing variables / intra-BP functions that no longer exist on the BP.
find_nodeSearch all nodes in a Blueprint by class name or title substring (case-insensitive); searches ALL graphs at once, unlike `get_graph` which reads one named graph.
find_overridersFind Blueprints under `path` that match a structural query: extend `parent_class`, override `function_name`, and/or implement `interface`.
get_componentsList the SCS components (StaticMeshComponent, LightComponent, child actors, etc.) attached to a blueprint, with parent/child hierarchy.
get_functionFetch a specific Blueprint function by name: signature (inputs, outputs, locals) + body graph.
get_graphFetch a Blueprint graph by name (default: EventGraph).
get_nodeFetch a single K2 node by GUID inside a graph.
implement_interfaceAdd `interface` to the implemented-interfaces list of the `asset` Blueprint, generating the stub function graphs the interface requires.
list_blueprintsList Blueprint assets under a content path.
list_timelinesList all Timeline nodes in a Blueprint (names, track counts, length, loop, auto_play).
list_variablesList all member variables on a Blueprint, with type, default, category, and replication state.
peek_graphLightweight probe for a Blueprint graph: returns node count + kind histogram + connection count without any node/pin/connection detail.
read_blueprintRead top-level metadata for a Blueprint: parent class, interfaces, variables, function/graph summaries, macros.
read_timelineRead a Timeline from a Blueprint: float/vector/event/linear_color tracks with their FRichCurveKey arrays (time, value, interp).
remove_componentRemove a component from a Blueprint's SCS tree by name.
rename_variableRename a Blueprint member variable.
retype_variableChange a Blueprint member variable's type without delete + re-add.
set_component_propertySet a UPROPERTY on a Blueprint component's template (the author-time default values, what the BP Details panel shows for that component).
set_node_positionMove a K2 node (by GUID) to (x, y) inside a Blueprint graph.
set_pin_defaultSet the literal default value on a node's input pin.
set_variable_categoryChange the My-Blueprint-panel category label on a Blueprint member variable (the "Stats" / "Combat" group header in the BP editor).
set_variable_defaultChange a Blueprint member variable's default value (string form, as displayed in the Details panel: e.g.
summarize_blueprintTiny orientation response for a Blueprint: parent class plus counts of variables, functions, graphs, macros, and interfaces.
wire_pinsConnect two K2 pins.

Editor 5 tools

get_compile_statusBlueprint compile status: wraps `UBlueprint::Status` into a stable string.
get_dirty_packagesList loaded packages with unsaved changes.
get_material_instance_paramsDump scalar/vector/texture parameter values from a UMaterialInstanceConstant asset.
get_static_mesh_infoStatic mesh LOD / triangle / vertex info.
health_checkProbe whether the live editor is responsive.

Anim 4 tools

list_anim_blueprintsList UAnimBlueprint assets under a content path.
list_anim_montagesList UAnimMontage assets under a content path (default `/Game`).
read_anim_blueprintWalk a UAnimBlueprint: parent class + each state machine's states (state / conduit / transition / entry).
read_anim_montageRead a UAnimMontage: sections (name, start_time, next_section), notifies (name, trigger_time, duration, notify_class), slot tracks (slot_name, anim segments with anim_sequence path).

Asset 4 tools

get_dependenciesReturn every asset (package path) that this asset DEPENDS on.
get_project_metadataRead the project's `.uproject` file and return parsed metadata (project name, EngineAssociation, category, description, plus the raw JSON for anything else).
get_referencersReturn every asset (package path) that REFERENCES this asset.
read_config_valueRead a UE config (.ini) value.

Assets 3 tools

find_assetFind assets whose name or package path contains `query` (case-insensitive).
list_assetsList every asset (any UClass) under `path`.
read_actor_instanceRead ANY object instance by package path, including a level-placed actor stored in its own external package under `/<Mount>/__ExternalActors__/...` (World Partition / One-File-Per-Actor), which `read_blueprint` can't open.

Class Info 3 tools

find_classSearch the UClass registry by substring.
get_class_infoInspect a UClass: parent + ancestor chain + every UPROPERTY + UFUNCTION.
list_functionsList every UFUNCTION on a class with its flags (BlueprintCallable, BlueprintPure, etc.).

Niagara 2 tools

list_niagara_systemsList UNiagaraSystem assets under a content path (default `/Game`).
read_niagara_systemRead a UNiagaraSystem's emitter handles (each names an underlying UNiagaraEmitter) and its exposed user parameter names.

Material 2 tools

list_materialsList all UMaterial / UMaterialInstance assets under a content path.
read_materialRead a material's expression graph: every UMaterialExpression node (id, class, parameter name, x/y), every connection (from expression output → expression input or master-material slot like BaseColor / Roughness), and the names of all exposed scalar/vector parameters.

Level Sequence 2 tools

list_level_sequencesList ULevelSequence assets under a content path.
read_level_sequenceRead a sequence's playback range (start/end seconds) and its top-level tracks.

Gameplay Tag 2 tools

list_gameplay_tagsQuery the project's GameplayTagsManager.
read_ability_setRead a GAS ability-set DataAsset: every granted ability class + its level.

Diff 2 tools

diff_assetStructural diff between two Blueprint assets.
prepare_mergeAI-assisted merge context.

State Tree 2 tools

list_state_treesList UStateTree assets under a content path (default `/Game`).
read_state_treeRead a UStateTree's hierarchy + transitions: every state (id, name, parent) and every transition (from, to, trigger).

Data Table 2 tools

list_data_tablesList all UDataTable assets under a content path.
read_data_tableLoad a DataTable and return its row-struct type, column names, and every row's field values.

Data Asset 2 tools

list_data_assetsList all UDataAsset subclass instances under a content path.
read_data_assetRead every UPROPERTY on a UDataAsset.

Behavior Tree 2 tools

list_behavior_treesList UBehaviorTree assets under a content path (default `/Game`).
read_behavior_treeWalk a UBehaviorTree's node graph.

Discover 2 tools

list_node_kindsList the `kind` values that `add_node` accepts, with required extras for each.
list_pin_categoriesList the canonical BPPinType.category values + container modifiers.

Cpp 1 tool

compile_functionCompile a tiny pseudocode DSL into a fully-wired Blueprint function.

Other 1 tool

preview_opsValidate an apply_ops batch without mutating anything.

Read 1 tool

describe_k2nodeIntrospect a K2 node class (custom or engine): given a class path like `/Script/BlueprintGraph.K2Node_FormatText` (or a short name like `K2Node_FormatText`), spawns a transient instance, calls AllocateDefaultPins, and reports its pins (name/direction/type/defaults), purity, title, tooltip, menu category, parent class, and owning module.

Widget 1 tool

read_widget_blueprintRead a UWidgetBlueprint's widget tree: every UWidget node (name, class, parent name) and the root widget's name.

Skills & the audit agent

Ship with the plugin under Claude/; install with Install-ClaudeAssets.ps1 or point your client's skills folder at it.

aethyrCore skill: inspect, edit, and operate on Blueprints: the wire format, package paths, per-tool guidance.
bp-batchesMulti-step edits as one transaction: apply_ops / preview_ops / compile_function, with rollback-on-failure.
bp-debugFailure triage: error codes, package-vs-object paths, did-you-mean, partial-write recovery.
bp-audit agentRead-only structural auditor: "audit /Game/AI" fans out reads and returns a tight report; mutates nothing.

Configuration

Set these in your MCP client's env block. The defaults are safe.

AETHYR_PROJECTPath to the .uproject to drive. Auto-discovered above the server if unset.
AETHYR_ALLOW_WRITESet 1 to enable write tools. Off by default: read-only until you opt in.
AETHYR_BACKENDauto (default) · live · commandlet · mock. Auto routes per call.
AETHYR_BACKUP1 by default: copies an asset to a backup ring before its first save each session.
AETHYR_AUTO_CHECKOUT1 by default: auto-checks-out an asset from source control before a write.
AETHYR_TIMEOUT_SECONDSPer-call subprocess timeout (default 120).

Backends

  • auto: the default. Probes each call and routes to live if an editor is open, else commandlet.
  • live: talks to a running editor over a local TCP socket (fast; great while you're working in-editor).
  • commandlet: spawns a headless editor to serve calls when none is open.
  • mock: fixtures only, no engine; for trying the wire format without a project. Writes are blocked.