Complete verb catalog for AI assistants. All 115+ verbs with invocation patterns and links.
Programmatic Blueprint inspection and manipulation for Unreal Engine 5.7+.
115 verbs across 21 asset domains. Read any UObject, write Blueprints and
domain-specific assets, all from CLI or HTTP.
Invocation#
Transport tiers (fastest first)#
Tier 1 - HTTP to running editor/server (instant):
curl -s http://localhost:7850/baa/v1/status
Tier 2 - Launch BAAServer (one-time startup, then HTTP):
"<ENGINE>/UnrealEditor-Cmd.exe" "<PROJECT>.uproject" \
-run=BAAServer -port=7850 -timeout=300 -nullrhi -nosplash -nosound -unattended &
Tier 3 - One-shot commandlet (30-60s startup each time):
"<ENGINE>/UnrealEditor-Cmd.exe" "<PROJECT>.uproject" \
-run=BlueprintAIAssistant -verb=<VERB> [args...] -nullrhi -nosplash -nosound -unattended
HTTP endpoints#
| Method |
Route |
Purpose |
| POST |
/baa/v1/execute |
Execute one verb: {"verb":"...", "args":{...}} |
| POST |
/baa/v1/batch |
Execute batch operations (same JSON as batch verb) |
| GET |
/baa/v1/status |
Server health: {running, port, verbCount, mode} |
| GET |
/baa/v1/verbs |
List all registered verb names |
| POST |
/baa/v1/build |
Trigger Live Coding compile (editor mode only) |
| POST |
/baa/v1/shutdown |
Stop server (commandlet exits; editor stops HTTP only) |
Commandlet flags#
| Flag |
Purpose |
-verb=<name> |
Verb to execute |
-asset=<path> |
Asset content path (e.g., /Game/Blueprints/BP_Player) |
-format=<fmt> |
Output format: overview, summary (default), detail, backup |
-compile |
Compile after write operations |
-save |
Save after write operations |
-about=<verb> |
With -verb=help, show detailed help for one verb |
-dry-run |
Preview changes for write verbs without applying them |
Important: All argument keys are lowercase in the args map (e.g., srcnode not srcNode).
Before building (UBT)#
Shut down BAAServer first (it holds DLL locks):
curl -s http://localhost:7850/baa/v1/status
| Format |
Size |
Use case |
overview |
Smallest |
Quick scan: metadata + condensed graph only (no vars/components/CDO) |
summary |
Moderate |
Normal inspection: all sections + full tree-walk graphs (default) |
detail |
Larger |
Write operations: same as summary + 8-char node GUIDs on every node |
backup |
Full |
Complete structured JSON with all nodes, pins, and full GUIDs |
Use detail format when you need node GUIDs for connect, disconnect, set-pin-default, or remove-node.
Batch mode#
Send multiple operations in one request to avoid repeated engine startups:
{
"defaultAsset": "/Game/BP_Test",
"operations": [
{"verb": "add-var", "args": {"name": "Health", "type": "float"}},
{"verb": "set-var-default", "args": {"name": "Health", "value": "100.0"}},
{"verb": "set-var-flags", "args": {"name": "Health", "flags": "EditAnywhere,BlueprintReadWrite"}}
]
}
Use $N to reference output from operation N (1-indexed). See Batch Operations.
All 115 verbs#
Discovery & Diagnostics#
| Verb |
Description |
list |
Find assets by path, class, name, or asset type |
help |
Show structured verb documentation (-about=<verb> for details) |
validate |
Check Blueprint for issues without modifying |
find-nodes |
Search graphs for nodes by class, function, variable, or text |
Read operations#
| Verb |
Description |
export |
Export any UObject asset (overview/summary/detail/backup) |
read-graph |
Read a single graph's nodes, pins, connections |
read-var |
Read a variable's type, default value, flags |
read-cdo |
Read Class Default Object properties diffed against defaults |
read-components |
Read component hierarchy tree |
Asset lifecycle#
| Verb |
Description |
create |
Create a new Blueprint asset |
compile |
Compile a Blueprint |
save |
Save an asset to disk |
batch |
Execute multiple operations from JSON |
Variables (6 verbs)#
| Verb |
Description |
add-var |
Add a member variable (with optional type, category, replication) |
remove-var |
Remove a member variable |
set-var-default |
Set variable default value |
set-var-flags |
Set property flags (EditAnywhere, BlueprintReadWrite, Replicated, etc.) |
set-var-meta |
Set extended metadata (clamps, edit conditions, rep conditions) |
rename-var |
Rename a variable |
Functions & structure (15 verbs)#
| Verb |
Description |
add-function |
Create a function graph (optional: pure) |
remove-function |
Remove a function graph |
rename-function |
Rename a function graph |
set-function-flags |
Set access, const, RPC, category, description |
add-function-param |
Add input/output parameter to a function |
remove-function-param |
Remove a function parameter |
add-local-var |
Add a local variable to a function |
remove-local-var |
Remove a local variable from a function |
add-event-dispatcher |
Create an event dispatcher |
remove-event-dispatcher |
Remove an event dispatcher |
rename-event-dispatcher |
Rename an event dispatcher |
add-event-param |
Add a parameter to a custom event |
add-interface |
Implement an interface |
remove-interface |
Remove an implemented interface |
reparent |
Change Blueprint parent class |
Graph editing (6 verbs)#
| Verb |
Description |
add-node |
Add a graph node (40 types - see Graph Editing) |
connect |
Connect two node pins (srcnode/srcpin/dstnode/dstpin) |
disconnect |
Break pin connections (node/pin, optional targetnode/targetpin) |
set-pin-default |
Set a pin's default value |
remove-node |
Remove a node by GUID |
trace-path |
BFS traversal of exec pin connections from a source node to a target node |
Components & CDO (4 verbs)#
| Verb |
Description |
add-component |
Add a component to SCS tree |
set-component-property |
Set a property on a component |
remove-component |
Remove a component |
set-cdo-property |
Set a CDO property value (supports dot notation) |
Asset management (5 verbs)#
| Verb |
Description |
rename-asset |
Rename or move an asset |
duplicate-asset |
Duplicate an asset |
delete-asset |
Delete an asset (checks references; -force to skip) |
dependencies |
List asset dependencies |
referencers |
List assets referencing this asset |
DataTable (5 verbs)#
| Verb |
Description |
dt-list-rows |
List all rows |
dt-read-row |
Read a row's fields |
dt-add-row |
Add an empty row |
dt-remove-row |
Remove a row |
dt-set-field |
Set a field value |
Curve (3 verbs)#
| Verb |
Description |
curve-list-keys |
List keys across all channels |
curve-add-key |
Add/update a key (time, value, optional interp and channel) |
curve-remove-key |
Remove a key at a time |
UserDefinedEnum (4 verbs)#
| Verb |
Description |
enum-list |
List all values in a UserDefinedEnum asset |
enum-add-value |
Add a new value to a UserDefinedEnum |
enum-remove-value |
Remove a value from a UserDefinedEnum by name |
enum-set-display-name |
Rename a UserDefinedEnum value's display name |
Note: enum-add-value, enum-remove-value, and enum-set-display-name support -dry-run to preview changes.
UserDefinedStruct (4 verbs)#
| Verb |
Description |
struct-list-fields |
List all fields in a UserDefinedStruct asset |
struct-add-field |
Add a new field to a UserDefinedStruct (type, optional default) |
struct-remove-field |
Remove a field from a UserDefinedStruct by name |
struct-rename-field |
Rename a field in a UserDefinedStruct |
Note: struct-add-field, struct-remove-field, and struct-rename-field support -dry-run to preview changes.
Array operations (6 verbs)#
| Verb |
Description |
array-count |
Get element count and type |
array-get |
Read one element (-index=N) or all (-all) |
array-add |
Append an element |
array-remove |
Remove element by index |
array-clear |
Clear all elements |
array-set |
Set element at index |
Material graph (7 verbs)#
| Verb |
Description |
mat-list-expressions |
List expressions in a Material |
mat-add-expression |
Add an expression (class, optional name for parameters) |
mat-connect |
Connect expression outputs to inputs |
mat-connect-property |
Connect expression to material property (BaseColor, Normal, etc.) |
mat-delete-expression |
Delete an expression |
mat-recompile |
Recompile material and shaders |
MaterialInstance (2 verbs)#
| Verb |
Description |
mi-list-params |
List parameter overrides |
mi-set-param |
Set a parameter (scalar, vector, texture, staticswitch) |
AnimMontage (3 verbs)#
| Verb |
Description |
montage-list |
List sections and notifies |
montage-add-section |
Add a section (name, starttime) |
montage-add-notify |
Add a notify (time, notify class, optional duration) |
SoundCue (3 verbs)#
| Verb |
Description |
soundcue-list |
List nodes in the SoundCue graph |
soundcue-add-node |
Add a node (WavePlayer, Random, Attenuation, Modulator, etc.) |
soundcue-connect |
Connect two SoundCue nodes |
| Verb |
Description |
widget-list |
List widget tree |
widget-add |
Add a widget (class, name, optional parent panel) |
widget-remove |
Remove a widget |
widget-set-property |
Set a property on a widget |
widget-set-slot |
Set slot/layout properties (Canvas, VBox, HBox) |
Level Sequencer (5 verbs)#
| Verb |
Description |
seq-list-tracks |
List tracks in a LevelSequence |
seq-add-track |
Add a track (Float, Bool, Transform, Event, Audio, etc.) |
seq-add-section |
Add a section (startframe, endframe) |
seq-add-key |
Add a keyframe (frame, value, optional section/channel) |
seq-set-range |
Set playback range |
BehaviorTree (5 verbs)#
| Verb |
Description |
bt-list |
List node tree structure |
bt-add-node |
Add task/composite (Selector, Sequence, MoveTo, Wait, etc.) |
bt-add-decorator |
Add decorator (Blackboard, ConeCheck, Cooldown, Loop, etc.) |
bt-add-service |
Add service (BlackboardBase, DefaultFocus, or class name) |
bt-set-property |
Set a property on a BT node (supports dot notation) |
Blackboard (3 verbs)#
| Verb |
Description |
bb-list-keys |
List keys in a BlackboardData asset |
bb-add-key |
Add a key (Bool, Float, Int, String, Object, Vector, etc.) |
bb-remove-key |
Remove a key |
Niagara (2 verbs)#
| Verb |
Description |
niagara-list-params |
List user parameters on a NiagaraSystem |
niagara-set-param |
Set a user parameter value |
| Verb |
Description |
create-input-action |
Create an InputAction asset |
create-input-mapping |
Create an InputMappingContext asset |
input-map-key |
Map a key to an action in a mapping context |
Config (3 verbs)#
| Verb |
Description |
config-get |
Read a config/INI value |
config-set |
Set a config/INI value |
config-list |
List keys in a config section |
| Verb |
Description |
tag-add |
Add a gameplay tag (optional comment) |
tag-remove |
Remove a gameplay tag |
tag-list |
List tags (optional prefix filter) |
Texture (1 verb)#
| Verb |
Description |
texture-export |
Export texture to file (png, jpg, bmp, exr) |
Variable type system#
Used by add-var, add-function-param, add-local-var, add-event-param:
| Arg |
Purpose |
Examples |
type |
Base type |
bool, float, int, int64, byte, String, Name, Text, Vector, Rotator, Transform, LinearColor, Object, Class, SoftObject, Enum, Struct |
subtype |
Object/struct/enum class |
Actor, PlayerController, FMyStruct, EMyEnum |
container |
Container wrapper |
array, set, map |
keytype |
Map key type |
Same as type |
keysubtype |
Map key class |
Same as subtype |
Known limitations#
- BlueprintImplementableEvent overrides cannot be created via BAA's
add-node -type=Event. The node compiles but the override binding is not set. Add the event override manually in the editor; BAA can handle all downstream work after that.
- EnhancedInput and Niagara verbs require those plugins in the engine (conditionally compiled).
- Visual-only tasks (viewport layout, material preview, widget appearance) require the editor.
Detailed reference#
Each verb's full parameter table, examples, and notes:
Other references: