CodeFizz
ToolsDemoDocsRoadmapChangelogPricingFAQ
Get the plugin

Getting Started

  • Introduction
  • Quick Start
  • Requirements
  • Installing the CLI
  • License & Machines

Guides

  • Installing the Plugin
  • The AI Skill
  • CLI vs MCP
  • Multiple Editors
  • How It Works
  • Discovering Commands

Walkthroughs

  • Build a Blueprint with AI
  • Author a Material Graph
  • Create a Niagara System

Reference

  • Reference
  • Niagara
  • PCG
  • Materials
  • StateTree
  • Sequencer
  • Level Actors
  • Project Settings
  • Blueprints
  • Blueprint Structs
  • Enhanced Input
  • Asset Management
  • Bulk Asset Ops
  • Data Assets
  • Object Properties
  • UMG Widgets
  • Data Tables
  • Curves
  • Console Commands
  • Profiling
  • Core
  • Debug

Help

  • FAQ
  • Troubleshooting
  • For AI Agents
DocsReferenceNiagara

Niagara

Every Niagara command in CodeFizz Editor Agent, with parameters and examples.

Loading…
PreviousReferenceNextPCG
CodeFizz

A drop-in Unreal Engine 5 plugin that exposes the entire editor surface (Blueprints, Materials, Niagara, PCG, StateTree, Insights profiling, and more) over the Model Context Protocol. Connect Claude Code, Cursor, VS Code, or any MCP-compatible client and let your AI build inside the engine.

Product

  • Features
  • Docs
  • Tools
  • Demo
  • Roadmap
  • Changelog
  • Pricing
  • FAQ

Resources

  • Install guide
  • Discord
  • YouTube
  • Open-source edition
  • Manage subscription

Legal

  • Refund Policy
  • Privacy Policy
  • Terms of Service

© 2026 CodeFizz. All rights reserved.

CodeFizz Editor Agent is a CodeFizz product. Payments processed by Polar Software, Inc. (Polar), the Merchant of Record.

108 commands. Each shows its parameters and an example, and has a copyable deep link, so you (or an AI agent) can jump straight to one.

validate_niagara_stack

Scan a Niagara system's full stack for issues (the per-module warnings/errors the editor shows)

Walks the live Niagara stack, system stack plus every emitter stack, every module/entry, and reports all FStackIssue entries (the same warnings/errors shown on modules in the Niagara editor, e.g. unmet module dependencies). Each issue reports scope, module, category, severity (error/warning/info), short + long description, a stable issue_key, whether it is auto_fixable, and its list of fixes. Pass min_severity to filter. The system must be open in the Niagara editor (the command opens it if needed) since stack issues come from the live stack view model.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
min_severitystringNoMinimum severity to report: error | warning | info (default info)
example
cfa validate_niagara_stack --system-path /Game/VFX/NS_Fire
cfa validate_niagara_stack --system-path /Game/VFX/NS_Fire --min-severity warning
fix_niagara_stack_issue

Apply a stack issue's fix (the editor's "Fix issue" button), one issue or all auto-fixes

Executes a Niagara stack issue's fix delegate, the same action as clicking "Fix issue" in the editor (e.g. reorder a module before its dependency, add a required module). Target one issue with issue_key (from validate_niagara_stack) or match (a substring of the issue text); choose a specific fix with fix_index (default: the first auto-fix). Or pass all=true to apply every auto-fixable issue in a loop until none remain. Recompiles + saves the system afterward and reports remaining issues.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
allboolNoApply every auto-fixable issue (loop until clean)
issue_keystringNoExact issue_key from validate_niagara_stack
matchstringNoSubstring of the issue's short/long description to match
fix_indexintNoWhich fix to apply (default: first auto-fix on the issue)
example
cfa fix_niagara_stack_issue --system-path /Game/VFX/NS_Fire --all=true
cfa fix_niagara_stack_issue --system-path /Game/VFX/NS_Fire --match "SolveForcesAndVelocity"
cfa fix_niagara_stack_issue --system-path /Game/VFX/NS_Fire --issue-key <key-from-validate>
list_niagara_asset_types

List standalone Niagara data/utility asset types creatable via create_niagara_asset

Lists the asset_type values accepted by create_niagara_asset, each with its runtime asset class, availability in this build, and a one-line note. Backed by the engine factory registry (not a hardcoded doc), so it stays truthful across engine versions.

example
cfa list_niagara_asset_types
create_niagara_asset

Create a standalone Niagara data/utility asset

Creates a standalone Niagara data/utility asset (parameter collection, parameter collection instance, parameter definitions, effect type, data channel, sim cache, validation rule set) via its engine factory. Run list_niagara_asset_types for the asset_type values. Edit the created asset afterward with the generic describe_object / set_object_property reflection commands. Note: sim_cache is created blank, its data is captured at runtime, not authored here.

ParameterTypeRequiredDescription
asset_typestringYesAsset type key (see list_niagara_asset_types)
asset_pathstringYesContent Browser path for the new asset
parentstringNoparameter_collection_instance only: parent parameter collection to bind
example
cfa create_niagara_asset --asset-type parameter_collection --asset-path /Game/CFATest/NPC_Wind
cfa create_niagara_asset --asset-type parameter_collection_instance --asset-path /Game/CFATest/NPCI_Wind --parent /Game/CFATest/NPC_Wind.NPC_Wind
cfa create_niagara_asset --asset-type effect_type --asset-path /Game/CFATest/ET_Default
add_niagara_parameter_collection_parameter

Add a named parameter (with optional default value) to a parameter collection

Populates a Niagara Parameter Collection (NPC) so it actually drives values: adds a named, typed parameter under the collection's namespace and optionally sets its default on the collection's default instance. Supported types: float, int, bool, vector (vec3), color (linear color). Value format: number for float/int, {"x":..,"y":..,"z":..} for vector, {"r":..,"g":..,"b":..,"a":..} for color. The returned parameter_name is the fully namespaced name to reference from systems/emitters.

ParameterTypeRequiredDescription
asset_pathstringYesAsset path of the parameter collection
namestringYesFriendly parameter name (namespace added automatically)
typestringYesfloat | int | bool | vector | color
valuejsonNoOptional default value (number, or {x,y,z} / {r,g,b,a})
example
cfa add_niagara_parameter_collection_parameter --asset-path /Game/FX/NPC_Wind.NPC_Wind --name Strength --type float --value 2.5
cfa add_niagara_parameter_collection_parameter --asset-path /Game/FX/NPC_Wind.NPC_Wind --name Tint --type color --value '{"r":0.2,"g":0.6,"b":1.0,"a":1.0}'
create_niagara_system

Create a new Niagara particle system

Creates a new Niagara system asset at the given path. Use template to start from a preset (e.g., "empty" for a blank system, or a template name for pre-configured emitters). Returns the created asset path. Call add_niagara_emitter afterward to populate it.

ParameterTypeRequiredDescription
asset_pathstringYesContent Browser path for the new system
templatestringNoTemplate name: empty, Fountain, etc.
example
cfa create_niagara_system --asset-path /Game/VFX/NS_Explosion
cfa create_niagara_system --asset-path /Game/VFX/NS_Fire --template "Fountain"
get_niagara_system_info

Get full info about a Niagara system

Returns detailed information about a Niagara system including its emitters, user parameters, system settings, and compilation status. Use include to control what sections are returned (all, emitters, parameters, compilation). Use filter to narrow emitters and parameters by name substring.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
includestringNoSections to include: all, emitters, parameters, compilation
filterstringNoSubstring filter on emitter and parameter names
example
cfa get_niagara_system_info --system-path /Game/VFX/NS_Explosion
cfa get_niagara_system_info --system-path /Game/VFX/NS_Fire --include emitters
cfa get_niagara_system_info --system-path /Game/VFX/NS_Fire --filter Spark
list_niagara_systems

List Niagara system assets

Lists all Niagara system assets under the given path. Use name_filter to narrow results by name substring. Useful for discovering existing systems before creating new ones or for finding systems to modify.

ParameterTypeRequiredDescription
pathstringNoContent Browser path to search
name_filterstringNoFilter systems by name substring
max_resultsintNoMaximum number of results
example
cfa list_niagara_systems
cfa list_niagara_systems --path /Game/VFX --name-filter "Fire"
cfa list_niagara_systems --max-results 50
delete_niagara_system

Delete a Niagara system asset

Deletes a Niagara system asset. Checks for references by default. Set force to true to delete even if other assets reference this system. Use find_references first to understand the impact of deletion.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the system to delete
forceboolNoDelete even if referenced by other assets
example
cfa delete_niagara_system --system-path /Game/VFX/NS_OldEffect
cfa delete_niagara_system --system-path /Game/VFX/NS_Unused --force
compile_niagara_system

Compile a Niagara system

Triggers compilation of a Niagara system. Compilation resolves all module scripts, validates parameter bindings, and generates GPU compute shaders. Set wait_for_completion to false for async compilation. Returns the full compile state: is_valid, error_count, warning_count, a summary string, per-script statuses, and a messages[] array with every compile event ({script, severity error|warning|display|log, message, short_description}), the same errors and warnings the Niagara editor reports.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the system to compile
wait_for_completionboolNoWait for compilation to finish
forceboolNoForce a recompile of an up-to-date system (ForceGraphToRecompileOnNextCheck). Note: Niagara serves unchanged content from its content-addressed DDC, so fresh messages only appear after a real graph change; the messages[] otherwise reflect the last actual translation
example
cfa compile_niagara_system --system-path /Game/VFX/NS_Explosion
cfa compile_niagara_system --system-path /Game/VFX/NS_Fire --wait-for-completion=false
compile_niagara_script

Compile a standalone Niagara script (module / dynamic input / function)

Compiles a STANDALONE Niagara script asset, the standalone script editor's "Compile" button (UNiagaraScript::RequestCompile). Standalone module/dynamic-input/function scripts do not self-compile as you author them (they compile inside the system that uses them), so their editor shows 'compile status unknown' until you compile them. This runs a real, synchronous compile and returns the full state: is_valid, compile_status (up_to_date | up_to_date_with_warnings | error | dirty | unknown), error_count, warning_count, last_op_count (0 means never compiled), and a messages[] array of every compile event ({severity, message, short_description}). Pass script_path to the module/DI/function asset. If the script is OPEN in its editor this drives the editor's own Compile button on the edited copy (so the Stats panel + status update live) and returns editor_open:true, the edit persists to disk on apply_niagara_script; otherwise it compiles and saves the asset directly.

ParameterTypeRequiredDescription
script_pathstringYesAsset path of the standalone module / dynamic input / function script
forceboolNoForce a real recompile (skips the DDC cache) so messages[] reflect this graph; false serves an up-to-date result from cache
example
cfa compile_niagara_script --script-path /Game/VFX/Modules/NM_SineTornado
cfa compile_niagara_script --script-path /Game/VFX/DI/DI_Jitter --force=false
apply_niagara_script

Apply a standalone Niagara script's edits to the asset (editor Apply button)

Replicates the standalone script editor's "Apply" button (FNiagaraScriptToolkit::OnApply) for a script open in its own editor: it compiles the transient edited copy, commits it onto the on-disk asset, refreshes every script that references it, and saves. Use after build_niagara_graph / compile_niagara_script when the script is open in the editor so the change persists exactly as a user clicking Apply. Returns editor_open and applied (false when the script isn't open, the asset already holds the edits, or when the edited copy matches the original, i.e. nothing to apply).

ParameterTypeRequiredDescription
script_pathstringYesAsset path of the standalone module / dynamic input / function script
example
cfa apply_niagara_script --script-path /Game/VFX/DI/DI_Jitter
get_niagara_emitters

List emitters in a Niagara system

Returns emitters in a Niagara system with their names, indices, enabled states, and summary info (sim target, local_space, determinism, renderer_count). Use filter to narrow results by emitter name substring.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
filterstringNoSubstring filter on emitter names
example
cfa get_niagara_emitters --system-path /Game/VFX/NS_Explosion
cfa get_niagara_emitters --system-path /Game/VFX/NS_Fire --filter Spark
create_niagara_emitter

Create a standalone Niagara emitter asset

Creates a standalone UNiagaraEmitter asset at the given path via the engine emitter factory. With add_default_modules=true (default) the emitter ships with a sprite renderer plus the standard EmitterState/SpawnRate/SystemLocation/AddVelocity/UpdateAge/Color/Solver modules; set it false for a truly empty emitter. Reuse it in a system with add_niagara_emitter --emitter-path (use --inherit to control parented vs copied).

ParameterTypeRequiredDescription
asset_pathstringYesContent Browser path for the new emitter
add_default_modulesboolNoAdd the default renderer + starter modules (use =false for an empty emitter)
example
cfa create_niagara_emitter --asset-path /Game/CFATest/E_Spark
cfa create_niagara_emitter --asset-path /Game/CFATest/E_Blank --add-default-modules=false
add_niagara_emitter

Add an emitter to a Niagara system

Adds an emitter to a Niagara system. Provide emitter_path to add from an existing emitter asset (template or standalone), or template to add from a built-in template. Use emitter_name to set a custom display name. If neither emitter_path nor template is given, adds an empty emitter. Use inherit to force the new handle to be parented to the source (true, live inheritance) or a standalone copy (false); omit it to use the source emitter's own setting.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the target Niagara system
emitter_pathstringNoAsset path of an existing emitter to add (template or standalone)
emitter_namestringNoDisplay name for the emitter
templatestringNoBuilt-in template name (e.g., Fountain, Sprite)
inheritboolNo=true parented/inherited handle, =false standalone copy (omit = source's own bIsInheritable)
force_addboolNoAdd even if an emitter with this name already exists (creates a Name001 duplicate). Default false: an existing name is returned as-is (already_existed=true), so re-runs are idempotent
example
cfa add_niagara_emitter --system-path /Game/VFX/NS_Fire --template "Fountain" --emitter-name "Sparks"
cfa add_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-path /Game/CFATest/E_Spark.E_Spark --inherit=true
remove_niagara_emitter

Remove an emitter from a Niagara system

Removes an emitter from a Niagara system by name. This also removes all modules, renderers, and event handlers associated with the emitter. Use get_niagara_emitters to confirm the exact emitter name before removal.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter to remove
example
cfa remove_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-name Sparks
set_niagara_emitter_property

Set a property on an emitter

Sets a property on an emitter within a Niagara system. Supported keys: enabled, sim_target (CPUSim/GPUComputeSim), local_space, determinism, bounds_mode, max_particles. Value is JSON-encoded. Set local_space=true for any effect that should play at its actor: a module that writes Particles.Position directly renders at world (0,0,0) in the default world space; local space makes positions relative to the component so the effect follows the actor.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
propertystringYesProperty key: enabled, sim_target, local_space, determinism, bounds_mode, max_particles
valuejsonYesJSON-encoded property value
example
cfa set_niagara_emitter_property --system-path /Game/VFX/NS_Fire --emitter-name Sparks --property sim_target --value '"GPUComputeSim"'
cfa set_niagara_emitter_property --system-path /Game/VFX/NS_Fire --emitter-name Sparks --property local_space --value true
duplicate_niagara_emitter

Duplicate an emitter within a system

Creates a copy of an existing emitter within the same Niagara system. The duplicate inherits all modules, renderers, and settings from the source. Optionally provide new_name to rename the copy; otherwise it gets a default suffix.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter to duplicate
new_namestringNoName for the duplicated emitter
example
cfa duplicate_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --new-name "Sparks_Large"
reorder_niagara_emitter

Move an emitter to a new position

Changes the execution order of an emitter within a Niagara system by moving it to a new index. Emitter order affects rendering draw order (later emitters draw on top) and can affect event handler resolution.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter to move
new_indexintYesNew zero-based position index
example
cfa reorder_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --new-index 0
get_niagara_modules

List modules in an emitter's stack

Returns modules in an emitter's script stack. Filter by script_usage to see only specific stages: EmitterSpawn, EmitterUpdate, ParticleSpawn, ParticleUpdate, or all. Use filter to narrow by module function name substring. Set include_inputs to true to also return each module's input parameters and their current values.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
script_usagestringNoStage filter: all, EmitterSpawn, EmitterUpdate, ParticleSpawn, ParticleUpdate
include_inputsboolNoInclude module input parameters
filterstringNoSubstring filter on module function names
example
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage ParticleUpdate
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Color
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks --include-inputs=false
add_niagara_module

Add a module to an emitter's stack

Adds a module to an emitter's script stack at the specified stage. Target the emitter with either system_path + emitter_name (an emitter inside a system) OR emitter_path (a standalone UNiagaraEmitter asset). module_path is the asset path of a Niagara module script or scratch pad module. Use list_niagara_modules to discover available modules. Set index to -1 (default) to append at the end, or specify a zero-based position to insert at.

ParameterTypeRequiredDescription
system_pathstringNoAsset path of the Niagara system (with emitter_name)
emitter_namestringNoName of the emitter inside the system
emitter_pathstringNoAsset path of a standalone emitter (instead of system_path + emitter_name)
module_pathstringYesAsset path of the module script to add
script_usagestringYesStage: EmitterSpawn, EmitterUpdate, ParticleSpawn, ParticleUpdate
indexintNoInsert position (-1 = append at end)
force_addboolNoAdd even if this exact module is already in the stack. Default false: an already-present module is returned as-is (already_existed=true), so re-runs are idempotent
example
cfa add_niagara_module --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-path /Niagara/Modules/ScaleSpriteSize --script-usage ParticleUpdate
cfa add_niagara_module --emitter-path /Game/CFATest/E_Spark.E_Spark --module-path /Niagara/Modules/Update/Velocity/VortexVelocity.VortexVelocity --script-usage ParticleUpdate
remove_niagara_module

Remove a module from an emitter's stack

Removes a module from an emitter's script stack by name and stage. Use get_niagara_modules to find the exact module name and which script_usage stage it belongs to.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
module_namestringYesName of the module to remove
script_usagestringYesStage the module belongs to
example
cfa remove_niagara_module --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name ScaleSpriteSize --script-usage ParticleUpdate
set_niagara_module_enabled

Enable or disable a module

Enables or disables a module in an emitter's stack without removing it. Disabled modules are skipped during simulation but their configuration is preserved. Useful for debugging or A/B testing different module setups.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
module_namestringYesName of the module
script_usagestringYesStage the module belongs to
enabledboolYesTrue to enable, false to disable
example
cfa set_niagara_module_enabled --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Drag --script-usage ParticleUpdate --enabled=false
cfa set_niagara_module_enabled --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Drag --script-usage ParticleUpdate --enabled
reorder_niagara_module

Move a module to a new position in stack

Changes the execution order of a module within its script stage. Module order within a stage determines execution priority (earlier modules run first). Useful for ensuring dependent calculations happen in the correct sequence.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
module_namestringYesName of the module to move
script_usagestringYesStage the module belongs to
new_indexintYesNew zero-based position index
example
cfa reorder_niagara_module --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Drag --script-usage ParticleUpdate --new-index 0
get_niagara_module_inputs

Get input parameters for a module (keyword + top-N)

Returns the reveal-aware input parameters for a specific module in an emitter's stack, including the conditionally-revealed value inputs (Cylinder Radius, SpawnRate, Lifetime...) that the summary get_niagara_modules omits, with names, types and current values. input_filter narrows by keyword and ranks results by relevance (exact > prefix > substring); max_results caps the count (0 = all). Use both for a precise, token-light lookup like 'the radius input on ShapeLocation, top 5'. Response includes total_matched and truncated.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
module_namestringYesName of the module
script_usagestringYesStage the module belongs to
input_filterstringNoKeyword to filter + rank inputs by relevance (exact > prefix > substring)
max_resultsintNoCap returned inputs (0 = all). Pairs with input_filter for top-N.
include_valuesboolNoAttach each input's resolved current_value via the stack reader (opens the system's stack). Set false for a lighter graph-only report.
example
cfa get_niagara_module_inputs --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name AddVelocity --script-usage ParticleSpawn
cfa get_niagara_module_inputs --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name ShapeLocation --script-usage ParticleSpawn --input-filter radius --max-results 5
set_niagara_module_input

Set an input value on a module

Sets a static input value on a module. The value is JSON-encoded and must match the parameter type (float for scalars, array for vectors, object for structs). Use get_niagara_module_inputs to discover available inputs and their types. For dynamic values (random ranges, curves, linked parameters), use set_niagara_dynamic_input instead.

ParameterTypeRequiredDescription
system_pathstringNoAsset path of the Niagara system (with emitter_name)
emitter_namestringNoName of the emitter inside the system
emitter_pathstringNoAsset path of a standalone emitter (instead of system_path + emitter_name)
module_namestringYesName of the module
input_namestringYesName of the input parameter
valuejsonYesJSON-encoded value matching the parameter type
script_usagestringYesStage the module belongs to
example
cfa set_niagara_module_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnRate --input-name SpawnRate --value 500 --script-usage EmitterUpdate
cfa set_niagara_module_input --emitter-path /Game/CFATest/E_Spark.E_Spark --module-name VortexVelocity --input-name "Velocity Amount" --value 400 --script-usage ParticleUpdate
set_niagara_dynamic_input

Set a dynamic input on a module

Assigns a dynamic input to a module parameter. Dynamic inputs provide runtime-computed values. The 'script' type attaches ANY of the engine/project dynamic-input scripts (there are hundreds: Random Range Float, Random Jitter Float, Remap Range, Select Float from Array, Waveform, etc.) by its asset path via dynamic_input_script_path, discover paths with resolve_niagara_built_in_dynamic_input or search_niagara_functions --usage dynamic_input. Convenience shortcuts: random_range / uniform_random (min_value/max_value), parameter_link (parameter_name), custom_expression (expression). Not all fields apply to every type.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
module_namestringYesName of the module
input_namestringYesName of the input parameter
script_usagestringYesStage the module belongs to
dynamic_input_typestringYesrandom_range, uniform_random, parameter_link, custom_expression, or script (attach any DI script by path)
min_valuejsonNoMinimum value for ranged types
max_valuejsonNoMaximum value for ranged types
parameter_namestringNoParameter name for parameter_link type
expressionstringNoHLSL expression for custom_expression type
dynamic_input_script_pathstringNoFor type=script: asset path of the dynamic-input script to attach (any of the ~283 available)
suggested_namestringNoFor type=script: display name for the attached dynamic input node
pin_defaultsjsonNoFor type=script: {"Pin Name":"value"...} to set the dynamic input's own input pins
example
cfa set_niagara_dynamic_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name InitialSize --input-name "SpriteSize" --script-usage ParticleSpawn --dynamic-input-type random_range --min-value 5.0 --max-value 15.0
cfa set_niagara_dynamic_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name InitializeParticle --input-name "Mass" --script-usage ParticleSpawn --dynamic-input-type script --dynamic-input-script-path "/Niagara/DynamicInputs/Utility/RandomJitterFloat.RandomJitterFloat" --pin-defaults '{"Jitter Amount":"0.5"}'
set_niagara_curve

Set a curve on a module input

Assigns a curve to a module input parameter. curve_type specifies the curve dimensionality (Float, Vector2, Vector3, Vector4, LinearColor). keys is a JSON array of key objects with time and value fields. Use for time-varying properties like color over life, size over life, or velocity curves.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
module_namestringYesName of the module
input_namestringYesName of the input parameter
script_usagestringYesStage the module belongs to
curve_typestringYesCurve type: Float, Vector2, Vector3, Vector4, LinearColor
keysjsonYesJSON array of curve keys [{time, value}...]
example
cfa set_niagara_curve --system-path /Game/VFX/NS_Fire --emitter-name Flame --module-name ScaleColor --input-name "Scale Factor" --script-usage ParticleUpdate --curve-type Float --keys '[{"time": 0, "value": 0}, {"time": 0.2, "value": 1}, {"time": 1, "value": 0}]'
cfa set_niagara_curve --system-path /Game/VFX/NS_Fire --emitter-name Flame --module-name Color --input-name "Color" --script-usage ParticleUpdate --curve-type LinearColor --keys '[{"time": 0, "value": [1,0.5,0,1]}, {"time": 1, "value": [0.2,0,0,0]}]'
set_niagara_stack_value

Set any module input value via the stack (local/enum/linked/hlsl/dynamic_input/data_interface/reset)

Universal, crash-free module-input value setter. Drives the editor's own stack (UNiagaraStackFunctionInput), so it never leaves the graph in a state the Niagara compiler rejects. kind selects the value form: local (scalar, [array] for vector/color, or {object} of fields), enum (name/display/int), linked (parameter_name), hlsl (expression), dynamic_input (dynamic_input_script), data_interface (data_interface_class + properties), reset (to_base for parent-emitter base). For a nested dynamic-input pin, pass input_name_stack instead of input_name.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringNoEmitter display name (omit for system-usage modules)
script_usagestringYesStage: EmitterSpawn/EmitterUpdate/ParticleSpawn/ParticleUpdate/SystemSpawn/SystemUpdate
module_namestringYesModule function name
input_namestringYesTop-level input name (use input_name_stack for nested pins)
kindstringYeslocal, enum, linked, hlsl, dynamic_input, data_interface, reset
valuejsonNolocal/enum: scalar, [array] for vector/color, or {object} of fields
input_name_stackjsonNoOptional array: full dynamic-input chain, overrides input_name
parameter_namestringNokind=linked: source parameter name
expressionstringNokind=hlsl: HLSL expression text
dynamic_input_scriptstringNokind=dynamic_input: dynamic-input script asset path
data_interface_classstringNokind=data_interface: DI class name or path
propertiesjsonNokind=data_interface: JSON object applied to the created DI
to_baseboolNokind=reset: reset to parent-emitter base instead of script default
example
cfa set_niagara_stack_value --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name AddVelocity --input-name "Velocity" --script-usage ParticleSpawn --kind local --value '[0,0,250]'
cfa set_niagara_stack_value --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Color --input-name "Color" --script-usage ParticleUpdate --kind linked --parameter-name Particles.Color
get_niagara_stack_value

Read a module input's current value and kind (round-trips to set_niagara_stack_value)

Reads an input's current value mode via the stack view model and reports it in the same shape set_niagara_stack_value accepts: kind plus value/parameter_name/expression/dynamic_input_script/data_interface_class. Dynamic inputs recurse into their child inputs. Pass input_name_stack to read a nested dynamic-input pin.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringNoEmitter display name (omit for system-usage modules)
script_usagestringYesStage: EmitterSpawn/EmitterUpdate/ParticleSpawn/ParticleUpdate/SystemSpawn/SystemUpdate
module_namestringYesModule function name
input_namestringYesTop-level input name (use input_name_stack for nested pins)
input_name_stackjsonNoOptional array: full dynamic-input chain, overrides input_name
example
cfa get_niagara_stack_value --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name AddVelocity --input-name "Velocity" --script-usage ParticleSpawn
get_niagara_user_parameters

Get user-exposed parameters

Returns user-exposed parameters on a Niagara system asset or on a placed Niagara component in the level. Provide system_path to read the asset definition, or actor_name to read runtime overrides on a placed instance. Shows parameter names, types, and value types. Use filter to narrow by parameter name substring.

ParameterTypeRequiredDescription
system_pathstringNoAsset path of the Niagara system
actor_namestringNoName of a placed Niagara actor in the level
filterstringNoSubstring filter on parameter names
example
cfa get_niagara_user_parameters --system-path /Game/VFX/NS_Fire
cfa get_niagara_user_parameters --actor-name "NS_Fire_Instance"
cfa get_niagara_user_parameters --system-path /Game/VFX/NS_Fire --filter Color
add_niagara_user_parameter

Add a user parameter to a system

Adds a new user-exposed parameter to a Niagara system. User parameters appear in the Details panel when the system is placed in a level and can be set per-instance. parameter_type is the Niagara type name (Float, Vector, LinearColor, Bool, Int32, etc.). Optionally provide a JSON-encoded default_value.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
parameter_namestringYesName for the new parameter
parameter_typestringYesNiagara type: Float, Vector, LinearColor, Bool, Int32, etc.
default_valuejsonNoJSON-encoded default value
example
cfa add_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name "Intensity" --parameter-type Float --default-value 1.0
cfa add_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name "ParticleColor" --parameter-type LinearColor --default-value '[1, 0.5, 0, 1]'
set_niagara_user_parameter

Set a user parameter value

Sets the value of a user-exposed parameter. When actor_name is provided, sets the per-instance override on a placed Niagara component. When system_path is provided, sets the default value on the asset. parameter_type must match the parameter's declared type.

ParameterTypeRequiredDescription
parameter_namestringYesName of the user parameter
parameter_typestringYesNiagara type: Float, Vector, LinearColor, Bool, Int32, etc.
valuejsonYesJSON-encoded parameter value
actor_namestringNoName of a placed Niagara actor for per-instance override
system_pathstringNoAsset path to set the default value
example
cfa set_niagara_user_parameter --actor-name "NS_Fire_Instance" --parameter-name "Intensity" --parameter-type Float --value 2.5
cfa set_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name "ParticleColor" --parameter-type LinearColor --value '[0, 1, 0, 1]'
remove_niagara_user_parameter

Remove a user parameter from a system

Removes a user-exposed parameter from a Niagara system. Any module inputs linked to this parameter will be unlinked. Placed instances that override this parameter will lose their overrides. Use get_niagara_user_parameters to confirm the parameter name.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
parameter_namestringYesName of the parameter to remove
example
cfa remove_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name Intensity
link_niagara_parameter

Link a module input to a parameter

Links a module input to a Niagara parameter by namespace path. This makes the module input read its value from the linked parameter at runtime instead of using a static value. Common parameter paths include User.ParamName for user parameters, Emitter.Age, Particles.Lifetime, Engine.DeltaTime, etc.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
module_namestringYesName of the module
input_namestringYesName of the input parameter to link
script_usagestringYesStage the module belongs to
linked_parameterstringYesNamespace path of the parameter to link (e.g., User.Intensity)
example
cfa link_niagara_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name ScaleColor --input-name "Scale Factor" --script-usage ParticleUpdate --linked-parameter "User.Intensity"
cfa link_niagara_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Color --input-name "Color" --script-usage ParticleUpdate --linked-parameter "User.ParticleColor"
add_niagara_renderer

Add a renderer to an emitter

Adds a renderer to an emitter. renderer_type specifies the kind: SpriteRenderer, MeshRenderer, RibbonRenderer, LightRenderer, ComponentRenderer, etc. Optionally set the material and mesh at creation time. Use set_niagara_renderer_property and set_niagara_renderer_binding to configure further.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
renderer_typestringYesType: sprite, mesh, ribbon, light, component (the *Renderer long form also works)
material_pathstringNoMaterial asset path to assign
mesh_pathstringNoStatic mesh asset path (for MeshRenderer)
example
cfa add_niagara_renderer --system-path /Game/VFX/NS_Fire --emitter-name Sparks --renderer-type SpriteRenderer --material-path /Game/Materials/M_Spark
cfa add_niagara_renderer --system-path /Game/VFX/NS_Fire --emitter-name Debris --renderer-type MeshRenderer --mesh-path /Game/Meshes/SM_Chunk --material-path /Game/Materials/M_Rock
remove_niagara_renderer

Remove a renderer from an emitter

Removes a renderer from an emitter by its zero-based index. An emitter can have multiple renderers; use get_niagara_emitters or get_niagara_renderer_info to see their indices.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
renderer_indexintYesZero-based index of the renderer to remove
example
cfa remove_niagara_renderer --system-path /Game/VFX/NS_Fire --emitter-name Sparks --renderer-index 1
get_niagara_renderer_info

Get renderer properties and bindings

Returns detailed information about a renderer on an emitter, including its type, material, mesh (if applicable), all configurable properties, and all attribute bindings (which particle attributes drive which rendering features). Use to inspect before modifying.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
renderer_indexintNoZero-based renderer index
example
cfa get_niagara_renderer_info --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_renderer_info --system-path /Game/VFX/NS_Fire --emitter-name Sparks --renderer-index 1
set_niagara_renderer_property

Set a property on a renderer

Sets a property on a renderer. Common properties include SortMode, SubImageSize, Material, Alignment, FacingMode, SourceMode (for ribbons), and mesh-specific settings. Use get_niagara_renderer_info to discover available properties.

ParameterTypeRequiredDescription
system_pathstringNoAsset path of the Niagara system (with emitter_name)
emitter_namestringNoName of the emitter inside the system
emitter_pathstringNoAsset path of a standalone emitter (instead of system_path + emitter_name)
propertystringYesProperty name to set
valuejsonYesJSON-encoded property value
renderer_indexintNoZero-based renderer index
example
cfa set_niagara_renderer_property --system-path /Game/VFX/NS_Fire --emitter-name Sparks --property SortMode --value '"ViewDistance"'
cfa set_niagara_renderer_property --emitter-path /Game/CFATest/E_Spark.E_Spark --property Material --value "/Niagara/DefaultAssets/DefaultSpriteMaterial.DefaultSpriteMaterial"
set_niagara_renderer_binding

Bind a renderer slot to a particle attribute

Binds a renderer attribute slot to a particle attribute. Bindings control which particle data drives rendering features. Common binding_name values: PositionBinding, ColorBinding, SpriteRotationBinding, SpriteSizeBinding, VelocityBinding, DynamicMaterialBinding, NormalizedAgeBinding, etc.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
binding_namestringYesRenderer binding slot name (e.g., ColorBinding, SpriteSizeBinding)
attributestringYesParticle attribute path (e.g., Particles.Color)
renderer_indexintNoZero-based renderer index
example
cfa set_niagara_renderer_binding --system-path /Game/VFX/NS_Fire --emitter-name Sparks --binding-name ColorBinding --attribute "Particles.Color"
cfa set_niagara_renderer_binding --system-path /Game/VFX/NS_Fire --emitter-name Sparks --binding-name SpriteSizeBinding --attribute "Particles.SpriteSize"
create_niagara_scratch_pad_module

Create a scratch pad module on a system

Creates a new scratch pad module within a Niagara system. Scratch pad modules are system-local scripts that can be used across emitters within that system. They are useful for prototyping custom logic before extracting to a standalone module asset. Specify the script_usage stage and an optional module_name. NOTE: the engine uniquifies the name (e.g. "CustomDrag" becomes "CustomDrag_0"); use the returned module_name verbatim for all follow-up scratch-pad commands.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
script_usagestringYesStage: EmitterSpawn, EmitterUpdate, ParticleSpawn, ParticleUpdate
module_namestringNoDisplay name for the scratch pad module
example
cfa create_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --script-usage ParticleUpdate --module-name "CustomDrag"
set_niagara_scratch_pad_hlsl

Set HLSL code on a scratch pad module

Sets the HLSL code body, input definitions, and output definitions on a scratch pad module. inputs is a JSON array of {name, type} objects defining input pins. outputs is a JSON array of {name, type} objects defining output pins. The HLSL code runs per-particle or per-emitter depending on the module's script_usage.

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
hlsl_codestringYesHLSL code body for the module
inputsjsonNoJSON array of input definitions [{name, type}...]
outputsjsonNoJSON array of output definitions [{name, type}...]
example
cfa set_niagara_scratch_pad_hlsl --system-path /Game/VFX/NS_Fire --module-name "CustomDrag" --hlsl-code "OutVelocity = Velocity * (1.0 - DragCoeff * DeltaTime);" --inputs '[{"name":"Velocity","type":"Vector"},{"name":"DragCoeff","type":"Float"}]' --outputs '[{"name":"OutVelocity","type":"Vector"}]'
create_niagara_module_asset

Create a standalone Niagara script asset (module / dynamic input / function)

Creates a new standalone Niagara script asset that can be shared across systems. module_type selects the kind: module, dynamic_input, or function. Duplicates the editor's matching default template when available, else builds a minimal compilable graph. Author its graph afterward with the graph/HLSL/pin verbs via --script-path, then reference it into a system with add_niagara_module --module-path. Each graph/HLSL/pin edit auto-saves the standalone asset to disk, so authored scripts survive editor restarts. Standalone module/dynamic-input/function scripts have no self-compile, they compile in the context of the system that uses them, so 'compile status unknown' on the standalone asset is expected until it is placed in a system. New assets default to library_visibility=Exposed so they show up in the stack's Add menu; override as needed.

ParameterTypeRequiredDescription
asset_pathstringYesContent Browser path for the new script asset
module_typestringNomodule | dynamic_input | function
descriptionstringNoDescription shown in the asset's details
library_visibilitystringNoExposed (in Add menu) | Unexposed | Hidden
categorystringNoCategory shown in the asset's details / Add menu grouping
suggestedboolNoAdd to the 'Suggested' category at the top of Add menus
example
cfa create_niagara_module_asset --asset-path /Game/VFX/Modules/NM_CustomForce --module-type module --description "Applies custom force"
cfa create_niagara_module_asset --asset-path /Game/VFX/DynamicInputs/DI_Jitter --module-type dynamic_input --category "Custom/Motion" --suggested
add_niagara_event_handler

Add an event handler to an emitter

Adds an event handler that responds to events generated by another emitter. execution_mode controls how the handler runs: every_particle (run on each existing particle), spawned_particles (spawn new particles per event). Use for collision responses, death events, or inter-emitter communication.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter receiving the event
source_emitterstringYesName of the emitter generating the event
event_namestringYesEvent type name (e.g., CollisionEvent, DeathEvent)
execution_modestringNoMode: every_particle, spawned_particles
spawn_numberintNoNumber of particles to spawn per event (for spawned_particles mode)
max_events_per_frameintNoMax events per frame (0 = unlimited)
example
cfa add_niagara_event_handler --system-path /Game/VFX/NS_Fire --emitter-name Sparks --source-emitter Flame --event-name "CollisionEvent" --execution-mode spawned_particles --spawn-number 3
cfa add_niagara_event_handler --system-path /Game/VFX/NS_Fire --emitter-name Smoke --source-emitter Flame --event-name "DeathEvent" --execution-mode every_particle
add_niagara_simulation_stage

Add a simulation stage to an emitter

Adds a custom simulation stage to an emitter. Simulation stages run additional passes after the main ParticleUpdate, useful for multi-pass algorithms like fluid simulation, neighbor searches, or iterative constraint solving. iteration_source can be particles or a data interface.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
stage_namestringYesDisplay name for the simulation stage
iteration_sourcestringNoIteration source: particles or a data interface name
num_iterationsintNoNumber of iterations per frame
example
cfa add_niagara_simulation_stage --system-path /Game/VFX/NS_Fluid --emitter-name Particles --stage-name "PressureSolve" --iteration-source particles --num-iterations 4
cfa add_niagara_simulation_stage --system-path /Game/VFX/NS_Cloth --emitter-name Vertices --stage-name "ConstraintSolve" --num-iterations 8
get_niagara_event_handlers

List event handlers on an emitter

Returns all event handlers configured on an emitter, including source emitter, event type, execution mode, spawn number, and associated module stacks. Use before adding or modifying event handlers.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
example
cfa get_niagara_event_handlers --system-path /Game/VFX/NS_Fire --emitter-name Sparks
spawn_niagara_effect

Spawn a Niagara effect in the level

Spawns a Niagara system as an actor in the current level at the specified location. Returns the spawned actor name. Transform args accept Unreal canonical strings "(X=..,Y=..,Z=..)" / "(P=..,Y=..,R=..)" as well as bare CSV "X,Y,Z" or JSON object/array. Set auto_activate to false to spawn deactivated (use control_niagara_effect to activate later). Use actor_label for the Outliner display label (canonical across MCP tools); name is a legacy alias kept for backward compat.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system to spawn
locationstringNoWorld position: "(X=..,Y=..,Z=..)", "X,Y,Z", or JSON {X,Y,Z}
rotationstringNoRotation: "(P=..,Y=..,R=..)", "Pitch,Yaw,Roll", or JSON {Pitch,Yaw,Roll}
scalestringNoScale: "(X=..,Y=..,Z=..)", "X,Y,Z", or JSON {X,Y,Z}
actor_labelstringNoOutliner display label (canonical form)
namestringNoLegacy alias for actor_label (actor_label wins if both given)
auto_activateboolNoActivate the effect immediately on spawn
example
cfa spawn_niagara_effect --system-path /Game/VFX/NS_Explosion --location "(X=100,Y=200,Z=0)"
cfa spawn_niagara_effect --system-path /Game/VFX/NS_Fire --location "(X=0,Y=0,Z=50)" --scale "(X=2,Y=2,Z=2)" --actor-label "CampfireVFX"
cfa spawn_niagara_effect --system-path /Game/VFX/NS_Ambient --location "(X=0,Y=0,Z=0)" --auto-activate=false
control_niagara_effect

Control a spawned Niagara effect

Controls a Niagara effect actor in the level. action can be: activate (start playing), deactivate (stop with completion), kill (stop immediately), reset (restart from beginning), or toggle (flip active state). Use get_niagara_actors to find effect actor names.

ParameterTypeRequiredDescription
actor_namestringYesName of the Niagara actor in the level
actionstringYesAction: activate, deactivate, kill, reset, toggle
example
cfa control_niagara_effect --actor-name "NS_Fire_Instance" --action activate
cfa control_niagara_effect --actor-name "CampfireVFX" --action kill
cfa control_niagara_effect --actor-name "NS_Ambient_0" --action reset
add_niagara_component

Add a Niagara component to an actor

Adds a UNiagaraComponent to an existing actor in the level. The component plays the specified Niagara system as a child of the actor. Use relative_location to offset the effect from the actor's root. Set auto_activate to false if you want to trigger it later.

ParameterTypeRequiredDescription
actor_namestringYesName of the target actor in the level
system_pathstringYesAsset path of the Niagara system
component_namestringNoName for the new component
relative_locationjsonNoJSON object {X, Y, Z} offset from actor root
auto_activateboolNoActivate the component immediately
example
cfa add_niagara_component --actor-name "Torch_BP" --system-path /Game/VFX/NS_TorchFlame --component-name "FlameVFX" --relative-location '{"X": 0, "Y": 0, "Z": 100}'
cfa add_niagara_component --actor-name "PlayerCharacter" --system-path /Game/VFX/NS_FootDust --auto-activate=false
get_niagara_actors

List Niagara effect actors in the level

Returns all Niagara system actors currently placed in the level. Optionally filter by system asset path to find instances of a specific effect. Shows actor name, system path, location, and active state.

ParameterTypeRequiredDescription
system_filterstringNoFilter by Niagara system asset path
example
cfa get_niagara_actors
cfa get_niagara_actors --system-filter "/Game/VFX/NS_Fire"
list_niagara_modules

List available Niagara modules

Lists every module-usage Niagara script from the Asset Registry, the same source the editor's Add Module menu uses (engine + project). Filter by category (the module's folder, e.g. spawn, update, forces, beams, ribbons) or search by name/path substring. Returns module asset paths and categories. total_matched reports the count before max_results.

ParameterTypeRequiredDescription
categorystringNoCategory filter (module folder: spawn, update, forces, beams...)
searchstringNoSearch modules by name or path substring
max_resultsintNoMaximum number of results
include_engineboolNoInclude engine /Niagara modules (default true)
example
cfa list_niagara_modules --search velocity
cfa list_niagara_modules --category beams
cfa list_niagara_modules --search jitter --max-results 20
list_niagara_emitter_templates

List available emitter templates

Lists built-in and project emitter templates that can be used with add_niagara_emitter. Templates provide pre-configured emitters with modules and renderers for common effects like fountains, sprites, mesh particles, ribbons, etc. Filter by category to narrow results.

ParameterTypeRequiredDescription
categorystringNoCategory filter: all, sprite, mesh, ribbon, gpu, etc.
example
cfa list_niagara_emitter_templates
cfa list_niagara_emitter_templates --category sprite
list_niagara_data_interfaces

List Niagara data interface types

Lists available Niagara data interface types. Data interfaces provide external data to Niagara simulations (meshes, textures, audio, physics, landscape, splines, etc.). Use filter to search by name. Returns type names and descriptions.

ParameterTypeRequiredDescription
filterstringNoFilter data interfaces by name substring
example
cfa list_niagara_data_interfaces
cfa list_niagara_data_interfaces --filter "Mesh"
list_niagara_parameter_types

List Niagara parameter types by scope

Lists valid Niagara parameter types for a given scope. scope controls which namespace to list: user (User.* parameters), particle (Particles.* attributes), emitter (Emitter.* variables), system (System.* variables), or engine (Engine.* built-ins). Use filter to narrow results by name.

ParameterTypeRequiredDescription
scopestringNoParameter scope: user, particle, emitter, system, engine
filterstringNoFilter parameter types by name substring
example
cfa list_niagara_parameter_types
cfa list_niagara_parameter_types --scope particle --filter "Color"
cfa list_niagara_parameter_types --scope engine
get_niagara_emitter_attributes

Get attributes available on an emitter

Returns attributes available on an emitter including rapid iteration parameters and well-known particle attributes (Position, Velocity, Color, etc.). Shows names, types, scope, and source. Use filter to narrow by attribute name substring.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
scopestringNoAttribute scope: particle, emitter, system, engine
filterstringNoSubstring filter on attribute names
example
cfa get_niagara_emitter_attributes --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_emitter_attributes --system-path /Game/VFX/NS_Fire --emitter-name Sparks --scope particle
cfa get_niagara_emitter_attributes --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Color
get_niagara_renderer_properties

List editable properties on a renderer with current values

Returns all editable UPROPERTY fields on a renderer (sprite, ribbon, mesh, light, component) with their current values and valid enum options. Use filter to get specific properties, strongly recommended to save tokens. Property names can be used directly with set_niagara_renderer_property.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
renderer_indexintNoRenderer index (default 0)
filterstringNoSubstring filter on property name (e.g. Facing, Material, Sort, Shadow)
example
cfa get_niagara_renderer_properties --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Facing
cfa get_niagara_renderer_properties --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Material
cfa get_niagara_renderer_properties --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Sort
set_niagara_system_property

Set a system-level property via reflection

Sets any UPROPERTY on UNiagaraSystem: WarmupTime, WarmupTickDelta, bDeterminism, RandomSeed, bFixedBounds, FixedBounds, bFixedTickDelta, FixedTickDeltaTime, etc. Use the exact C++ property name (PascalCase). For booleans, can auto-add 'b' prefix.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
propertystringYesProperty name (PascalCase, e.g. WarmupTime, bDeterminism)
valuestringYesValue as string
example
cfa set_niagara_system_property --system-path /Game/VFX/NS_Fire --property WarmupTime --value 2.0
cfa set_niagara_system_property --system-path /Game/VFX/NS_Fire --property bDeterminism --value true
cfa set_niagara_system_property --system-path /Game/VFX/NS_Fire --property RandomSeed --value 42
get_niagara_rapid_iteration_parameters

Get actual module input values (spawn rate, colors, forces, etc.)

Returns all rapid iteration parameters, the real configurable values on Niagara modules. These include spawn rate, gravity, colors, sizes, lifetimes, and every other editable module input. Each parameter includes its module name, input name, current value, and type. Use the filter parameter to narrow results.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
script_usagestringNoStack filter: emitter_spawn, emitter_update, particle_spawn, particle_update, or all
filterstringNoSubstring filter on parameter name (e.g. Color, SpawnRate, Gravity)
example
cfa get_niagara_rapid_iteration_parameters --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_rapid_iteration_parameters --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter SpawnRate
cfa get_niagara_rapid_iteration_parameters --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage particle_spawn --filter Color
set_niagara_rapid_iteration_parameter

Set a module input value (spawn rate, color, force, size, etc.)

Sets a rapid iteration parameter value on a Niagara module. This is the primary way to change module inputs like spawn rate, colors, forces, sizes, and lifetimes. Use get_niagara_rapid_iteration_parameters first to discover available parameters. Value format: float (5.0), int (10), bool (true), vector ({"x":1,"y":2,"z":3}), color ({"r":1,"g":0.5,"b":0,"a":1}).

ParameterTypeRequiredDescription
system_pathstringNoAsset path of the Niagara system (with emitter_name)
emitter_namestringNoName of the emitter inside the system
emitter_pathstringNoAsset path of a standalone emitter (instead of system_path + emitter_name)
module_namestringYesModule name (e.g. SpawnRate, InitializeParticle, GravityForce)
input_namestringYesInput parameter name (e.g. SpawnRate, Color, Gravity)
valuejsonYesValue to set, format depends on type
script_usagestringYesStack: emitter_update, particle_spawn, particle_update, etc.
example
cfa set_niagara_rapid_iteration_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnRate --input-name SpawnRate --value 50 --script-usage emitter_update
cfa set_niagara_rapid_iteration_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name InitializeParticle --input-name Color --value '{"r":1,"g":0.3,"b":0,"a":1}' --script-usage particle_spawn
cfa set_niagara_rapid_iteration_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name GravityForce --input-name Gravity --value '{"x":0,"y":0,"z":-980}' --script-usage particle_update
get_niagara_system_errors

Get compilation errors and warnings for a Niagara system

Returns compilation errors, warnings, and validation issues for a Niagara system. Use to diagnose why a system isn't working, find outdated modules, or check for configuration problems. Filter by emitter name or severity level.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringNoFilter to issues from a specific emitter
severitystringNoSeverity filter: error, warning, info, or all
example
cfa get_niagara_system_errors --system-path /Game/VFX/NS_Fire
cfa get_niagara_system_errors --system-path /Game/VFX/NS_Fire --emitter-name Sparks --severity error
get_niagara_particle_stats

Get live particle counts and emitter execution state

Returns live particle counts per emitter, total spawned count, execution state (Active/Inactive/Complete), and bounds info. Requires the system to be previewing in the Niagara editor or spawned in the level. Use to verify emitters are spawning particles and to diagnose empty effects.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringNoFilter to a specific emitter's stats
example
cfa get_niagara_particle_stats --system-path /Game/VFX/NS_Fire
cfa get_niagara_particle_stats --system-path /Game/VFX/NS_Fire --emitter-name Sparks
set_niagara_playback_range

Set the timeline playback range in the Niagara editor

Controls how long the Niagara editor preview plays. If your effect dies at 0.02s, extend the range. For looping effects set a longer range (e.g. 5-10 seconds). Optionally override the frame rate.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
range_endfloatYesEnd time in seconds (e.g. 5.0)
range_startfloatNoStart time in seconds
frame_rateintNoOptional frame rate override (default 60)
example
cfa set_niagara_playback_range --system-path /Game/VFX/NS_Fire --range-end 5.0
cfa set_niagara_playback_range --system-path /Game/VFX/NS_Fire --range-start 0.5 --range-end 10.0 --frame-rate 30
get_niagara_playback_range

Get the current playback range and frame rate settings

Returns the current timeline playback range (start/end in seconds) and frame rate configuration. Use to check if the playback range is too short, a common cause of effects appearing to not play.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
example
cfa get_niagara_playback_range --system-path /Game/VFX/NS_Fire
get_niagara_module_versions

Check for outdated modules in an emitter

Identifies modules that have newer versions available, a common source of Niagara warnings and compatibility issues. Returns current and available versions per module. Use filter to narrow by module name substring.

ParameterTypeRequiredDescription
system_pathstringYesAsset path of the Niagara system
emitter_namestringYesName of the emitter
filterstringNoFilter modules by name substring
example
cfa get_niagara_module_versions --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_module_versions --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter "Spawn"
export_niagara

Export a full Niagara System / Script / Emitter as reflection-grounded JSON

Auto-detects the asset class and writes one JSON file. System export captures: system properties, user parameters (with default values), every emitter (sim target, local space, full emitter-data properties, renderers), every stage's ordered module stack with resolved input values (including dynamic inputs + nested pins), and all scratch-pad/local scripts WITH their full node graph + dynamic inputs. Separate-asset modules/DIs (engine or /Game) are listed as lightweight references (path + name + description/category/library-visibility + usage flags), NOT their internal graph, which is re-exportable by running export_niagara on that asset's path. Written to Saved/CodeFizzEditorAgent/Exports/.

ParameterTypeRequiredDescription
assetstringNoNiagara System / Script / Emitter asset path (alias: asset_path)
include_valuesboolNoRead module input values via the stack (opens the system editor)
include_referenced_graphsboolNoInline full graphs for referenced separate-asset modules/DIs too (default: reference by path only)
include_stage_graphsboolNoAlso dump the raw spliced per-stage graphs
inlineboolNoAlso return the full export JSON in the response (not just the file path)
example
cfa export_niagara --asset /Game/VFX/NS_SolarSystem
cfa export_niagara --asset /Game/VFX/NM_PlanetInit
cfa export_niagara --asset /Game/VFX/NS_SolarSystem --include-values=false --include-stage-graphs=true
get_niagara_graph_nodes

Introspect every node inside a Niagara graph

Three resolver modes: (1) system_path + module_name for scratch pad module, (2) system_path + emitter_name + script_usage for emitter stack graph, (3) script_path for standalone UNiagaraScript asset. Returns nodes with pin/link detail based on verbosity. Token-efficient, use type_filter/name_filter to narrow.

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name (mode 1)
emitter_namestringNoEmitter name (mode 2)
script_usagestringNoemitter_spawn|emitter_update|particle_spawn|particle_update (mode 2)
script_pathstringNoStandalone UNiagaraScript asset path (mode 3)
verbositystringNosummary | connections | full
type_filterstringNoSubstring on short class name (e.g. MapGet, Op, CustomHlsl)
name_filterstringNoSubstring on node title
example
cfa get_niagara_graph_nodes --system-path /Game/VFX/NS_Fire --module-name MyScratchPad
cfa get_niagara_graph_nodes --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage emitter_update --type-filter FunctionCall
get_niagara_node_info

Deep inspect a single Niagara node by index, class, or GUID

Returns full pin layout, link detail, and node-type-specific fields (op_name for Op, function_script for FunctionCall, hlsl_preview for CustomHlsl, input_name/type for Input).

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
node_indexintNoOrdinal index in Graph->Nodes
node_classstringNoShort ('MapGet') or full ('NiagaraNodeParameterMapGet')
node_idstringNoFGuid string matching UEdGraphNode::NodeGuid
example
cfa get_niagara_node_info --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 2
cfa get_niagara_node_info --script-path /Game/VFX/MyModule --node-class MapGet
trace_niagara_connection

BFS trace of connections upstream or downstream from a node

Walks the graph from a starting node with optional pin_name filter. Returns each visited node with depth so the dependency chain is visible without dumping the whole graph.

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
node_indexintNoStarting node index
node_classstringNoStarting node class
node_idstringNoStarting node GUID
directionstringNoupstream | downstream | both
max_depthintNoMax BFS depth
pin_namestringNoOptional starting-pin name filter
example
cfa trace_niagara_connection --system-path /Game/VFX/NS_Fire --module-name MyDI --node-class MapGet --direction downstream --pin-name "Vector Array"
validate_niagara_graph

Classify orphaned, dead-end, and missing-input nodes in a Niagara graph

Returns three arrays: orphaned (no incoming or outgoing links), dead_ends (inputs connected but no outputs consumed), missing_inputs (no link and no default). Skips +Add placeholder pins.

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa validate_niagara_graph --system-path /Game/VFX/NS_Fire --module-name MyDI
apply_niagara_scratch_pad

Apply scratch pad changes in an open Niagara System (Apply Scratch button)

Triggers exactly what a user clicks in the open Niagara System editor. With module_name it applies that one scratch script (FNiagaraScratchPadScriptViewModel::ApplyChanges). WITHOUT module_name it is the toolbar's "Apply Scratch" button, applies ALL pending scratch changes via the system's scratch-pad view model (FNiagaraSystemToolkit::OnApplyScratchPadChanges). Pass compile=true to also recompile + refresh + save the system afterwards (like clicking Compile next). Requires the system to be open in the editor.

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
module_namestringNoScratch pad module/DI name, omit to apply ALL pending scratch changes (Apply Scratch button)
compileboolNoAfter applying, recompile + refresh + save the system (like clicking Compile next)
example
cfa apply_niagara_scratch_pad --system-path /Game/VFX/NS_Fire            # Apply Scratch (all)
cfa apply_niagara_scratch_pad --system-path /Game/VFX/NS_Fire --module-name MyDI  # one script
cfa apply_niagara_scratch_pad --system-path /Game/VFX/NS_Fire --compile
apply_and_save_niagara_scratch_pad

Apply a scratch pad module's edit-copy and save the asset (Apply & Save button)

Mirrors FNiagaraScratchPadScriptViewModel::ApplyChangesAndSave.

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
module_namestringYesScratch pad module name
example
cfa apply_and_save_niagara_scratch_pad --system-path /Game/VFX/NS_Fire --module-name MyDI
list_niagara_scratch_pad_modules

List all scratch pad modules on a Niagara System

Returns name, path, usage, node counts, and custom HLSL node count per script.

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
example
cfa list_niagara_scratch_pad_modules --system-path /Game/VFX/NS_Fire
delete_niagara_scratch_pad_module

Delete a scratch pad module from a Niagara System

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
module_namestringYesScratch pad module name
example
cfa delete_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --module-name MyDI
duplicate_niagara_scratch_pad_module

Duplicate a scratch pad module with a new name

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
module_namestringYesSource scratch pad module name
new_namestringYesNew scratch pad module name
example
cfa duplicate_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --module-name MyDI --new-name MyDICopy
rename_niagara_scratch_pad_module

Rename a scratch pad module

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
module_namestringYesCurrent scratch pad module name
new_namestringYesNew scratch pad module name
example
cfa rename_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --module-name Old --new-name New
get_niagara_script_properties

Read the details-panel properties of a Niagara script

Returns Category, Description, Keywords, ModuleUsageBitmask, ProvidedDependencies, RequiredDependencies, LibraryVisibility, bDeprecated, DeprecationMessage, bExperimental, ExperimentalMessage, NumericOutputTypeSelectionMode, ScriptMetaData, ConversionUtility.

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (with module_name)
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa get_niagara_script_properties --system-path /Game/VFX/NS_Fire --module-name MyDI
set_niagara_script_properties

Batch-set details-panel properties on a Niagara script

Pass a JSON object under --properties with any subset of the editable fields. ModuleUsageBitmask uses ENiagaraScriptUsage bitmask (e.g. particle spawn + update = (1<<3)|(1<<4)). ProvidedDependencies takes a JSON array of strings; RequiredDependencies an array of objects.

ParameterTypeRequiredDescription
propertiesobjectYesJSON object of property name -> value
system_pathstringNoNiagara System asset path (with module_name)
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa set_niagara_script_properties --system-path /Game/VFX/NS_Fire --module-name MyDI --properties '{"Category":"MCP/DI","bExperimental":true,"ProvidedDependencies":["MCP.ArrayLength"]}'
list_niagara_script_parameters

List input + output parameters of a Niagara script

Outputs come from UNiagaraNodeOutput::Outputs. Inputs come from script variable metadata filtered to Module.* / Input.* / User.* namespaces.

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa list_niagara_script_parameters --system-path /Game/VFX/NS_Fire --module-name MyDI
add_niagara_script_parameter

Add an input or output parameter to a Niagara script

For 'output' direction appends to UNiagaraNodeOutput::Outputs. Type must be a FNiagaraTypeRegistry name (e.g. float, Vector, Vector2D, Vector4, LinearColor, Quat, Position, NiagaraID, int32, bool, Matrix, NiagaraDataInterfaceArrayPosition).

ParameterTypeRequiredDescription
namestringYesParameter name (no namespace → becomes Module.<name>)
typestringYesNiagara type name
directionstringNooutput | input
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa add_niagara_script_parameter --system-path /Game/VFX/NS_Fire --module-name MyDI --name TestFloat --type float --direction output
remove_niagara_script_parameter

Remove a named input or output parameter, cascades to Map Get/Set pins

ParameterTypeRequiredDescription
namestringYesParameter name
directionstringNooutput | input
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa remove_niagara_script_parameter --system-path /Game/VFX/NS_Fire --module-name MyDI --name Module.Default --direction input
rename_niagara_script_parameter

Rename a script parameter in-place across asset and edit-copy graphs

ParameterTypeRequiredDescription
old_namestringYesCurrent parameter name
new_namestringYesNew parameter name
directionstringNooutput | input
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa rename_niagara_script_parameter --system-path /Game/VFX/NS_Fire --module-name MyDI --old-name NewOutput --new-name FinalNoise --direction output
add_niagara_graph_node

Create a new node inside a Niagara graph

Provide node_type OR class_path. node_type options: Op (requires op_name), FunctionCall (requires function_script), DataInterfaceFunction (requires di_class + function_name), ParameterMapGet, ParameterMapSet, Reroute, Input (requires input_name + input_type). class_path spawns ANY UNiagaraNode subclass (full path, NiagaraNodeXxx, or Xxx), discover via list_niagara_node_types / search_niagara_nodes. Discover op_name via get_niagara_schema_actions and DI function_name via list_niagara_data_interface_functions, never guess.

ParameterTypeRequiredDescription
node_typestringNoOp | FunctionCall | DataInterfaceFunction | ParameterMapGet | ParameterMapSet | Reroute | Input (or use class_path)
class_pathstringNoAny UNiagaraNode subclass (full path, NiagaraNodeXxx, or Xxx), alternative to node_type
pos_xintNoGraph X position
pos_yintNoGraph Y position
op_namestringNo(Op) e.g. Numeric::Mul, Numeric::Add, Numeric::Length
function_scriptstringNo(FunctionCall) UNiagaraScript asset path
input_namestringNo(Input) variable name
input_typestringNo(Input) Niagara type
di_classstringNo(DataInterfaceFunction) DI class name
function_namestringNo(DataInterfaceFunction) DI member function name
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
example
cfa add_niagara_graph_node --system-path /Game/VFX/NS_Fire --module-name MyDI --node-type Op --op-name "Numeric::Mul" --pos-x 100 --pos-y 100
cfa add_niagara_graph_node --script-path /Game/VFX/DI/DI_Foo.DI_Foo --class-path NiagaraNodeStaticSwitch
delete_niagara_graph_node

Delete a node from a Niagara graph

Provide node_index (ordinal) OR node_id (FGuid from get_niagara_graph_nodes).

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path
module_namestringNoScratch pad module name
script_pathstringNoStandalone script asset path
node_indexintNoOrdinal index
node_idstringNoFGuid string
example
cfa delete_niagara_graph_node --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 4
build_niagara_graph

Build a whole Niagara graph at once, many nodes + connections in one call

Bulk graph builder (parity with build_material_graph). Spawns every node in 'nodes' (array index = node id) then wires every edge in 'connections'. The schema validates connections and auto-inserts conversion nodes (e.g. float->Vector) like the editor. Targets a standalone script (script_path) OR scratch module (system_path + module_name); reflects live in an open editor. Per-item failures are reported in errors[]; returns node index->guid map. Each node: {node_type|class_path, op_name|function_script|di_class+function_name|input_name+input_type, pos_x, pos_y}. Rich node types for building a whole module/dynamic input in ONE call: node_type=CustomHlsl takes hlsl_code + inputs:[{name,type}] + outputs:[{name,type}] (code + typed pins built together); ParameterMapGet takes get_pins:[{name,type}] (typed output params like Particles.Age, Module.Foo); ParameterMapSet takes set_pins:[{name,type}] (typed input params like Particles.Position). Connections use from_node/to_node (array index of a node built this call) OR from_node_class/to_node_class to reference a pre-existing node by class (e.g. "Input"/"Output" kept by clear_existing), so MapGet->CustomHlsl->MapSet + the Input/Output wiring all build in one call. Any ParameterMapGet/Set whose map Source pin you leave unconnected is auto-wired to the module's Input map (like the editor), a disconnected Source builds a module that fails to compile and can crash the Niagara translator, so this is done for you. Discover node specs with get_niagara_schema_actions.

ParameterTypeRequiredDescription
script_pathstringNoStandalone UNiagaraScript asset path (or system_path + module_name)
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
nodesjsonYesJSON array of node specs (index = id)
connectionsjsonNoJSON array of {from_node,from_pin,to_node,to_pin}
clear_existingboolNoRemove existing nodes (keeps Input/Output) before building
finalizeboolNoFor a standalone script, Compile+Apply after building so it is immediately usable (inputs resolve, dynamic-input children materialize, dependents pick it up). Set false to batch several builds before one manual compile. Scratch modules compile with their system regardless
example
cfa build_niagara_graph --system-path /Game/VFX/NS_Fire --module-name MyMod_0 --clear-existing --nodes '[{"node_type":"ParameterMapGet","get_pins":[{"name":"Particles.Age","type":"float"}]},{"node_type":"CustomHlsl","hlsl_code":"OutV=Age*2;","inputs":[{"name":"Age","type":"float"}],"outputs":[{"name":"OutV","type":"float"}]},{"node_type":"ParameterMapSet","set_pins":[{"name":"Particles.Lifetime","type":"float"}]}]' --connections '[{"from_node_class":"Input","from_pin":"Input","to_node":0,"to_pin":"Source"},{"from_node":0,"from_pin":"Particles.Age","to_node":1,"to_pin":"Age"},{"from_node":1,"from_pin":"OutV","to_node":2,"to_pin":"Particles.Lifetime"},{"from_node":2,"from_pin":"Dest","to_node_class":"Output","to_pin":"OutputMap"}]'
add_niagara_custom_hlsl_input

Add an input pin to a Custom HLSL node

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
pin_namestringYesNew input pin name
pin_typestringYesNiagara type (float, Vector, int32, etc.)
example
cfa add_niagara_custom_hlsl_input --system-path /Game/VFX/NS_Fire --module-name MyDI --pin-name Value --pin-type float
add_niagara_custom_hlsl_output

Add an output pin to a Custom HLSL node

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
pin_namestringYesNew output pin name
pin_typestringYesNiagara type
example
cfa add_niagara_custom_hlsl_output --system-path /Game/VFX/NS_Fire --module-name MyDI --pin-name Result --pin-type float
rename_niagara_custom_hlsl_pin

Rename a Custom HLSL pin (also rewrites {PinName} references in the HLSL body)

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
old_namestringYesCurrent pin name
new_namestringYesNew pin name
example
cfa rename_niagara_custom_hlsl_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --old-name Value --new-name Scalar
remove_niagara_custom_hlsl_pin

Remove a pin from a Custom HLSL node

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
pin_namestringYesPin to remove
example
cfa remove_niagara_custom_hlsl_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --pin-name Value
add_niagara_map_get_pin

Add a typed output pin to the first ParameterMapGet node in a scratch pad graph

Mirrors clicking + on a Map Get node in the editor. The pin name becomes the parameter handle (e.g. Module.MyParam, Engine.DeltaTime, User.MyParam).

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
parameter_namestringYesVariable name including namespace
parameter_typestringNoNiagara type
example
cfa add_niagara_map_get_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --parameter-name Module.Position --parameter-type Vector
add_niagara_map_set_pin

Add a typed input pin to the first ParameterMapSet node in a scratch pad graph

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
parameter_namestringYesVariable name including namespace
parameter_typestringNoNiagara type
example
cfa add_niagara_map_set_pin --system-path /Game/VFX/NS_Fire --module-name MyModule --parameter-name Particles.Velocity --parameter-type Vector
add_niagara_node_pin

Add a pin to any UNiagaraNodeWithDynamicPins-derived node

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
pin_namestringYesNew pin name
pin_typestringYesNiagara type
directionstringNoinput | output
node_indexintNoTarget node index
node_classstringNoTarget node class
node_idstringNoTarget node GUID
example
cfa add_niagara_node_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 3 --pin-name Extra --pin-type float --direction output
rename_niagara_node_pin

Rename a pin on a dynamic-pin node

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
old_namestringYesCurrent pin name
new_namestringYesNew pin name
node_indexintNoTarget node index
node_classstringNoTarget node class
node_idstringNoTarget node GUID
example
cfa rename_niagara_node_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 3 --old-name Foo --new-name Bar
remove_niagara_node_pin

Remove a dynamic pin from any node in a scratch pad graph

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
pin_namestringYesPin name to remove
node_indexintNoTarget node index
node_classstringNoTarget node class
node_idstringNoTarget node GUID
example
cfa remove_niagara_node_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 2 --pin-name Module.Default
connect_niagara_pins

Wire one node's output pin to another node's input pin inside a scratch pad graph

Validated via UEdGraphSchema_Niagara::TryCreateConnection. Identify each side via (class|index|id) + pin name.

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
from_pinstringYesSource pin name
to_pinstringYesDestination pin name
from_node_indexintNoSource node index
from_node_classstringNoSource node class
from_node_idstringNoSource node GUID
to_node_indexintNoDestination node index
to_node_classstringNoDestination node class
to_node_idstringNoDestination node GUID
example
cfa connect_niagara_pins --system-path /Game/VFX/NS_Fire --module-name MyDI --from-node-index 2 --from-pin Module.Position --to-node-index 3 --to-pin Array\ interface
disconnect_niagara_pins

Break a pin connection in a scratch pad graph

ParameterTypeRequiredDescription
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
script_pathstringNoStandalone UNiagaraScript asset path (instead of system_path + module_name)
pin_namestringYesPin to break
node_indexintNoTarget node index
node_classstringNoTarget node class
node_idstringNoTarget node GUID
example
cfa disconnect_niagara_pins --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 3 --pin-name "Array interface"
list_niagara_node_types

Enumerate Niagara node classes available for spawning

ParameterTypeRequiredDescription
filterstringNoCase-insensitive substring on class name
example
cfa list_niagara_node_types --filter Parameter
get_niagara_node_type_info

Get pin schema for a node class or script asset

ParameterTypeRequiredDescription
class_namestringNoUClass name (short or full)
script_pathstringNoUNiagaraScript asset path
example
cfa get_niagara_node_type_info --class-name NiagaraNodeParameterMapGet
search_niagara_functions

Find Niagara script assets by usage + name filter

ParameterTypeRequiredDescription
filterstringNoName/path substring
usagestringNomodule | dynamic_input | function
include_engineboolNoInclude /Niagara/* engine scripts
max_resultsintNoMax returned
example
cfa search_niagara_functions --filter Length --usage function
get_niagara_schema_actions

Search the full Niagara node palette (the right-click menu) by keyword + category

Wraps UEdGraphSchema_Niagara::GetGraphActions, the exact data the editor's right-click menu uses (ops, function/module/dynamic-input scripts, make/break, convert, DI nodes). Runs against a standalone script (script_path) OR an in-system scratch module (system_path + module_name). Each entry has display_name, category, tooltip, keywords, the spawn descriptor (op_name / function_script / node_type / input_name+type) and full input/output pin schema with Niagara types, feed straight into add_niagara_graph_node.

ParameterTypeRequiredDescription
script_pathstringNoStandalone UNiagaraScript asset path (or use system_path + module_name)
system_pathstringNoNiagara System asset path (scratch pad target)
module_namestringNoScratch pad module name (with system_path)
filterstringNoCase-insensitive keyword over display_name/category/keywords/tooltip
categorystringNoCase-insensitive category filter (e.g. Math, Vector, Color)
max_resultsintNoMax returned entries
example
cfa get_niagara_schema_actions --script-path /Game/VFX/DI/DI_Foo.DI_Foo --filter align --max-results 5
cfa get_niagara_schema_actions --system-path /Game/VFX/NS_Fire --module-name MyDI --category Math --filter multiply
describe_niagara_type

Generic type query, handles registered Niagara types AND raw UEnums/UScriptStructs

First tries FNiagaraTypeRegistry; falls back to UEnum/UScriptStruct reflection for script-property enums like ENiagaraScriptLibraryVisibility or any custom project enum.

ParameterTypeRequiredDescription
typestringYesType name (pin-registered or UEnum/UScriptStruct)
example
cfa describe_niagara_type --type Vector
cfa describe_niagara_type --type ENiagaraScriptLibraryVisibility
get_niagara_data_interface_schema

Walk a UNiagaraDataInterface class default object and return its editable property schema

ParameterTypeRequiredDescription
di_classstringYesDI class short or full name
example
cfa get_niagara_data_interface_schema --di-class NiagaraDataInterfaceArrayPosition
list_niagara_available_parameters

List available Niagara parameters (Engine.*, Particles.*, Emitter.*, User.*)

ParameterTypeRequiredDescription
filterstringNoCase-insensitive substring on parameter name
namespacestringNoall | engine | particles | emitter | user | system
max_resultsintNoMax returned
system_pathstringNoOptional, include system's user parameters
module_namestringNoOptional, scope to a scratch pad module's namespace
example
cfa list_niagara_available_parameters --namespace engine --filter Time
get_niagara_module_input_binding

Resolve the actual binding of each module input, Default / Local / Linked / Dynamic / Data

Answers 'what is Spawn Count actually driven by?'. Recursively walks dynamic-input children up to max_depth so a single call returns the full binding tree with nested parameter links and literal values.

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
emitter_namestringYesEmitter name
module_namestringYesModule display name
script_usagestringYesemitter_spawn|emitter_update|particle_spawn|particle_update|system_spawn|system_update
input_filterstringNoCase-insensitive substring on input name
max_depthintNoRecursive descent cap for dynamic-input children
example
cfa get_niagara_module_input_binding --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnPerFrame --script-usage emitter_update
clear_niagara_module_input

Reset a module input to its default (including nested paths like 'Spawn Count.Position Array')

Finds the override pin, breaks its connections, removes orphan nodes exclusively feeding it, then removes the override pin. Mirrors 'Reset to Default' in the stack UI. Supports nested path syntax to reach inputs inside dynamic inputs.

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
emitter_namestringYesEmitter name
module_namestringYesModule display name
script_usagestringYesStack the module is in
input_namestringYesInput name (supports 'Parent.Child' nesting)
example
cfa clear_niagara_module_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnPerFrame --script-usage emitter_update --input-name "Spawn Count.Position Array"
list_niagara_input_source_menu

Reproduce the stack-UI source dropdown for a specific input

Returns the exact options the editor offers: dynamic_inputs (engine UNiagaraScript assets + scratch-pad DIs with source='scratch_pad' tag) + link_parameters grouped by namespace. Authoritative, the AI should call this before set_niagara_dynamic_input / link_niagara_parameter to never guess.

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
emitter_namestringYesEmitter name
module_namestringYesModule display name
script_usagestringYesStack the module is in
input_namestringYesTarget input name
name_filterstringNoOptional substring to narrow dynamic inputs / parameters
example
cfa list_niagara_input_source_menu --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnPerFrame --script-usage emitter_update --input-name "Spawn Count" --name-filter Length
find_niagara_scratch_pad_usage

Find where a scratch pad script is referenced across all emitter/system graphs

Scans every emitter × {spawn, update, particle_spawn, particle_update} + system_spawn + system_update graphs for UNiagaraNodeFunctionCall nodes whose FunctionScript matches. Returns usage sites as {emitter, script_usage, function_name, node_id, is_dynamic_input}.

ParameterTypeRequiredDescription
system_pathstringYesNiagara System asset path
module_namestringYesScratch pad module name to hunt for
example
cfa find_niagara_scratch_pad_usage --system-path /Game/VFX/NS_Fire --module-name GetDataInterfaceLength
resolve_niagara_built_in_dynamic_input

Discover built-in dynamic-input script paths via AssetRegistry (replaces hardcoded guesses)

Replaces guessed paths like /Niagara/Modules/DynamicInputs/UniformRangedFloat (which vary across UE versions) with a live AssetRegistry scan. Returns UNiagaraScript assets with Usage=DynamicInput matching the filter.

ParameterTypeRequiredDescription
name_filterstringNoCase-insensitive substring
exact_namestringNoReturn only the asset whose AssetName equals this
max_resultsintNoMax returned
example
cfa resolve_niagara_built_in_dynamic_input --name-filter Random --max-results 10
list_niagara_data_interface_functions

Enumerate member functions on a Niagara data interface class

Returns the functions the editor's right-click 'Functions' submenu shows on a DI pin, built-in DI members like Array.Length, Array.Get, Array.Add. These aren't UNiagaraScript assets so search_niagara_functions won't find them. Pass the result as function_name to add_niagara_graph_node(node_type='DataInterfaceFunction').

ParameterTypeRequiredDescription
di_classstringYesShort ('NiagaraDataInterfaceArrayPosition') or full path
filterstringNoCase-insensitive substring on function name
include_pinsboolNoInclude input/output pin schema
example
cfa list_niagara_data_interface_functions --di-class NiagaraDataInterfaceArrayPosition --filter Length