pinwright-ue

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Unreal Editor MCP server for AI coding agents

README.md

PinWright, an MCP server inside the Unreal Editor for AI coding agents. Things you can ask your agent to do: build the settings menu from this mockup; make a forest level with a river and a cabin; why did the HUD go blank in the last playtest

Describe what you want in plain language and your AI coding assistant does it in the Unreal Editor: builds Blueprints, edits the ones you already have, lays out UMG screens, creates assets, generates levels, runs tests. PinWright is an editor plugin that runs a local MCP server and connects the assistant you already use (Claude Code, Codex, Cursor, Gemini CLI, VS Code Copilot, or any other MCP client) to the editor itself. If you use one of these, you have everything you need: PinWright needs no subscription, API key or credits of its own and works through the AI plan you already pay for.

Install

Open your AI coding assistant (Claude Code, Codex CLI, Cursor in agent mode, Gemini CLI, Cline) in your Unreal project's folder and give it this prompt. Give it the same prompt again later to update. To install by hand, see Install it yourself.

Install PinWright into this Unreal project and connect yourself to it by following https://github.com/PinWright/pinwright-ue/blob/master/AGENT_INSTALL.md

How it compares

PinWright fully supports more features than any other Unreal MCP tool. Each product was graded on 341 features from its own source code (full matrix with evidence; graded 2026-09-28, PinWright re-checked 2026-10-03):

Yes Partial No
PinWright 224 87 30
ue-mcp 177 115 49
Monolith 110 151 79
ChiR24 Unreal_mcp 100 132 109
Epic UE 5.8 MCP 73 124 142
VibeUE 59 188 94

What you can ask for

Talk to your agent about the game, and it works in the editor you have open:

  • "Build the settings menu from this mockup." It authors the widget tree, styles and bindings in UMG, and you see the result in the designer.
  • "Make a forest level with a river and a cabin." Landscape, foliage, sky and props, placed by measurement rather than guessed coordinates. The video below is one such level.
  • "Create a jump pad Blueprint that launches the character upward on overlap." Gameplay logic from a sentence, compiled and ready to place.
  • "Find every Blueprint that still reads the old Health variable and fix them." It dumps the project to text, greps it, edits the graphs and compiles them.
  • "The door in the lobby does not open when the player walks up to it. Find out why and fix it." The agent starts Play-In-Editor, sends input to reproduce the bug, reads live game state and logs, fixes the Blueprint or C++, rebuilds, and plays again to confirm the fix.
  • "Why did the HUD go blank in the last playtest?" It queries the recorded Play-In-Editor session (gameplay data needs instrumentation in your project).
  • "Model a spur gear and a chess rook for the workshop scene." Both become Static Mesh assets from short text recipes; the same recipes ship as examples.
  • "Set up sunset lighting: directional light, sky atmosphere, height fog, warm color grading." Placed and tuned in the open level.

Example: a level from one prompt

Landscape, foliage, sky and placed props, generated by an agent through PinWright's level-generation namespaces from a single prompt. The video is the unedited result.

Video: an AI agent with PinWright built this Unreal Engine level from one prompt

What it is

An editor-only Unreal Engine plugin that speaks MCP (Model Context Protocol) on a loopback port. The assistant reads your project first, makes the change, compiles, and shows you the result. It also keeps everything it could already do on its own, including writing your C++ and rebuilding it through Unreal Build Tool; PinWright adds the editor side on top. We use it daily on a commercial UE5 title. It is strongest at inspecting and dumping a project, authoring Blueprints and UMG widgets, creating data assets, and recording Play-In-Editor sessions. It also generates meshes, skeletons and animation from text recipes, builds levels (terrain, foliage, sky, precise placement), and authors materials and Niagara systems. 1,309 operations across 68 namespaces, developed against 5,839 automated tests.

Quick start

Install it yourself

  1. Get the plugin. Download the prebuilt zip for your engine version from Releases (Windows), install from Fab through the Epic Launcher, or clone this repository and build it (Windows and Linux). All three are the same code under MIT:

    git clone https://github.com/PinWright/pinwright-ue.git <Project>/Plugins/PinWright
    

    If you cloned it elsewhere, move the PinWright folder into your project's Plugins directory or the engine's.

  2. Build and open. Regenerate project files if your project is a C++ source checkout, build the editor target if Unreal asks for a rebuild, then open the editor and confirm the plugin under Editor Preferences -> Plugins -> PinWright.

  3. Click Install for your agent. The PinWright Setup screen opens on startup (Tools -> PinWright Setup reopens it). One click writes that agent's project-local MCP config with the endpoint and token already filled in, so there is no file to edit and no port to look up.

    The PinWright Setup tab in the Unreal Editor: server listening on a loopback endpoint, Install buttons for Claude Code, Codex CLI, Cursor, Gemini CLI and VS Code Copilot, and a copyable agent setup prompt

  4. Ask for something small. For example: "Dump /Game/UI to text, then tell me which widget bindings point at variables that no longer exist."

Features

Area What it does Maturity
Project inspection and dumps Inspect assets, query dependencies, import, rename and organize; dump any asset or folder to readable text for review and accurate agent context Core
Graph text IRs Round-trip for Blueprint (BPIR), material (MGIR), animation Blueprint (AGIR), Control Rig (CRIR); decompile-to-text for behavior tree, sound cue, MetaSound, Niagara, PCG Core
Blueprints and data assets Create and edit classes, variables, functions, events and graphs; compile and decompile; author Data Tables and other data assets Core
Widgets (UMG) Author the widget tree, styles, bindings and animations; export and import as XML Core
Actors, levels and system operations Spawn actors, edit transforms, manage levels, inspect world state, read logs, run editor commands and build or test helpers Core
Playtesting and bug fixing Start Play-In-Editor, send input, read live game state and logs; an agent can reproduce a bug, fix it, rebuild, and play again to verify the fix Core
Session recorder Record a Play-In-Editor session and query it to debug what happened (needs small documented C++ hooks in your game for gameplay values) Core
Model generation .pwmodel text recipes of geometry operations compile into Static Mesh assets, with materials, collision and UVs; live modeling helpers on placed meshes (geometry, model) Core
Skeleton and animation generation .pwskel defines skeletons, skin weights, sockets and physics assets; .pwanim compiles animation clips; helpers for montages, blend spaces, IK and retargeting (skeleton, animation, anim) Core
Level generation Landscape terrain (grid spawn, sculpting, noise seeding), foliage, sky, fog and time of day, plus spatial reasoning: raycasts, surface placement and annotated captures so the agent places things by measurement (landscape, environment, foliage, spatial) Core
Materials and Niagara Material graph authoring through MGIR; Niagara system and emitter editing Core
All 67 public namespaces (1308 operations)

Every operation is documented in the in-editor wiki; the agent reads call("<namespace>") for any of these.

Not listed: internal plumbing namespaces, not intended for direct use - pipeline (1 operation).

Project & assets

asset: Operate on /Game/... content packages - discover, load, dump, import, rename/move, delete, and read dependencies (40 operations, Core)
Operation What it does
asset.bulk_delete Delete many assets in a single call.
asset.bulk_rename Apply prefix/suffix/search-replace transformations to many asset names in one call.
asset.create_folder Create a folder in the content browser
asset.delete Delete one or more assets or whole content folders.
asset.dependencies Get assets that reference this asset (inbound referencers).
asset.dump Dump an asset's full inspectable state to disk as separate text files.
asset.dump_folder Start an async dump of every asset under a content folder.
asset.duplicate Duplicate an asset or folder
asset.exists PIE-safe existence probe via the asset registry, loaded objects, and mounted package files.
asset.find_by_tag Search the asset registry for assets whose UMetaData contains a given tag, optionally filtered by tag value.
asset.find_objects_by_tag Find actors and components in the world by tag
asset.fixup_redirectors Walk redirectors left behind by asset.rename / asset.move.
asset.generate_lods Auto-generate UE's standard LOD chain for one or more StaticMesh assets using the default reduction settings.
asset.generate_thumbnail Render an asset's thumbnail offscreen and optionally write it to disk.
asset.get Read summary metadata (name, class, package, asset registry tags) for one asset by path.
asset.get_asset_graph Get asset dependency graph via BFS traversal
asset.get_dependencies Return assets that the given asset directly hard-references (Hard package dependencies).
asset.get_dependencies_classified Get classified asset dependencies with mode and role filtering
asset.get_material_stats Get a material's compiled shader statistics.
asset.get_metadata Read all UMetaData key/value entries plus class-derived tags for one asset.
asset.import Import a file from the local filesystem into the content browser using the matching UFactory.
asset.is_dirty Read whether ONE loaded package currently needs saving.
asset.list Browse a FOLDER: assets plus subfolders under one package path, with filtering and pagination.
asset.list_material_instances List material instances that use a given parent material
asset.map_references Return soft-UWorld UPROPERTY references for a single loaded asset, matching map_references.json from asset.dump.
asset.mark_dirty Mark ONE loaded package dirty without writing anything to disk.
asset.move Move an asset to a different folder and leave a redirector at the old path.
asset.nanite_rebuild_mesh Toggle Nanite and/or rebuild its data for a StaticMesh.
asset.references Get both directions for one asset.
asset.reload Force-evict a loaded asset package and re-read it from disk within the current editor session.
asset.rename Rename an asset and create a redirector at the old path so existing references keep resolving.
asset.reset_instance_parameters Reset all parameter overrides on a material instance
asset.save Persist ONE loaded asset to disk.
asset.search FIND AN ASSET BY NAME - the answer to "which asset is called something like X?".
asset.search_assets List assets by CLASS and/or package path - the no-name-in-hand path ("every SoundWave", "everything under /Game/Maps").
asset.set_metadata Write key/value metadata onto an asset's UMetaData store.
asset.set_tags Write boolean metadata tags on an asset (each tag is stored as key=true in UMetaData).
asset.source_control_checkout Check out assets from source control
asset.source_control_submit Submit assets to source control
asset.validate Validate if an asset exists and can be loaded
blueprint: Author Blueprint classes (88 operations, Core)
Operation What it does
blueprint.add_construction_script Ensure a construction script graph exists on a blueprint
blueprint.add_dispatcher Add an Event Dispatcher member variable and delegate signature graph to a Blueprint.
blueprint.add_enum_entries Append enumerators to an existing user-defined enum.
blueprint.add_event Add an event entry node to a Blueprint's EventGraph.
blueprint.add_function Create a new UFunction graph on a Blueprint with caller-specified input/output pins.
blueprint.add_interface Make a Blueprint implement a Blueprint Interface.
blueprint.add_macro Create a new Blueprint macro graph with caller-specified tunnel input/output pins.
blueprint.add_struct_field Add a field to a user-defined Blueprint struct.
blueprint.add_variable Add a member variable to a Blueprint class.
blueprint.build_api_index Scan all UClasses via reflection and write a Blueprint-callable API index to Saved/AI/ApiIndex.json
blueprint.compile Run UE's Blueprint compiler on the named asset and return any compile errors/warnings.
blueprint.compile_batch Compile many Blueprints in ONE call (an explicit list or a content folder) and report one row per Blueprint.
blueprint.compile_bpir Compile BPIR (Blueprint IR) code into Blueprint graph nodes
blueprint.create Create a new UBlueprint asset deriving from a parent UClass.
blueprint.create_bpir_expression Create a BPIR expression node in a blueprint graph
blueprint.create_enum Create a UUserDefinedEnum asset usable in Blueprint variables and pin defaults.
blueprint.create_struct Create a UUserDefinedStruct asset usable in Blueprint variables and as a TMap value type.
blueprint.decompile Decompile Blueprint graphs into BPIR (Blueprint IR) text
blueprint.decompile_function Decompile a specific Blueprint function to BPIR text
blueprint.decompile_macro Decompile a specific Blueprint macro to BPIR text
blueprint.delete_unused_variables Find and optionally delete unused member variables in a Blueprint
blueprint.ensure_exists Idempotent BP existence guard: probes the asset and creates it (via blueprint.create) when missing.
blueprint.exists Check whether a blueprint asset exists
blueprint.get Return summary metadata for a Blueprint.
blueprint.get_node_connections Get pin connections for a node (upstream and downstream)
blueprint.graph.break_pin_links Break all links on a pin
blueprint.graph.connect_pins Wire an output pin to an input pin between two existing graph nodes.
blueprint.graph.connect_pins_batch Wire many output->input pin pairs in one Blueprint graph in one call and one undo transaction.
blueprint.graph.create_node Spawn a single graph node in an existing UEdGraph and return its node id.
blueprint.graph.create_reroute_node Create a reroute (knot) node
blueprint.graph.delete_node Delete a node from a blueprint graph
blueprint.graph.delete_orphaned_nodes Delete orphaned nodes (unconnected, side-effect-free) from a blueprint graph.
blueprint.graph.find_node_types Search the Blueprint action database for spawnable node types.
blueprint.graph.find_nodes Search for nodes matching a query string
blueprint.graph.find_orphaned_nodes Find blueprint graph nodes unreachable from any entry point (read-only)
blueprint.graph.get_execution_flow Walk execution pin connections from a starting node (BFS)
blueprint.graph.get_graph_connections Get all connections in a blueprint graph
blueprint.graph.get_graph_details Get details about a specific graph including its nodes
blueprint.graph.get_node_details Get detailed information about a specific node
blueprint.graph.get_node_details_batch Get details for multiple nodes in one call
blueprint.graph.get_node_type_pins Return the expected pin list for a node type id from blueprint.graph.find_node_types (spawn-and-scan)
blueprint.graph.get_nodes Get all nodes in a blueprint graph
blueprint.graph.get_pin_details Get details about a node's pins
blueprint.graph.get_pin_details_batch Get pin details for multiple nodes in one call
blueprint.graph.list_graphs Enumerate every UEdGraph in a Blueprint.
blueprint.graph.list_node_types List all available K2Node types for node creation
blueprint.graph.reconstruct_node Reconstruct one K2 node in memory after a shape-changing reflected property write, refresh the graph.
blueprint.graph.replace_node Substitute one node for another in place, transferring matched pin connections and defaults.
blueprint.graph.set_node_property Set one supported presentation property on a Blueprint graph node.
blueprint.graph.set_pin_default_value Set the default value on a node's input pin
blueprint.graph.set_pin_default_values Batch set default values on multiple node pins
blueprint.insert_bpir_at_node Insert BPIR code after a selected node in the graph
blueprint.insert_bpir_before_node Insert BPIR code before a selected node in the graph
blueprint.inspect Blueprint summary: metadata, variables, functions, events, components, graphs, references, and warnings.
blueprint.list Enumerate blueprint assets with filters and paging.
blueprint.list_struct_fields List fields in a user-defined Blueprint struct
blueprint.modify_scs Batch modify Blueprint Simple Construction Script (SCS) components
blueprint.preview_construction Run an Actor Blueprint's construction scripts (SCS + UserConstructionScript) on a throwaway transient.
blueprint.probe_handle Lightweight check for blueprint existence without loading
blueprint.record_dispatcher Record a Blueprint Event Dispatcher (or any dynamic multicast delegate) firing on a live object.
blueprint.references Find asset/class references used by blueprint graph nodes and pins
blueprint.remove_event Remove an event from a Blueprint
blueprint.remove_function Remove a function or macro graph from a Blueprint
blueprint.remove_interface Remove a Blueprint Interface implementation from a Blueprint.
blueprint.remove_struct_field Remove a field from a user-defined Blueprint struct
blueprint.remove_variable Remove a variable from a blueprint
blueprint.rename_variable Rename a variable in a blueprint
blueprint.reparent Change the parent UClass of a Blueprint.
blueprint.scs.add_component Add a component template to a Blueprint's class-level SCS tree (every spawned instance will get this component).
blueprint.scs.duplicate_component Duplicate a Blueprint SCS component template, optionally copying children, properties, attachment.
blueprint.scs.get Read the Simple Construction Script (SCS) component tree of a Blueprint class.
blueprint.scs.remove_component Remove a component from a Blueprint's SCS
blueprint.scs.reparent_component Reparent a component in a Blueprint's SCS hierarchy
blueprint.scs.set_property Set a UPROPERTY on an SCS component template (class-level default), so every newly spawned instance picks it up.
blueprint.scs.set_spline_points Author the point data of a USplineComponent that lives in a Blueprint's SCS (class template).
blueprint.scs.set_transform Set transform of a component in a Blueprint's SCS
blueprint.search Search all indexed Blueprint assets using UE's Find-in-Blueprints system
blueprint.search_api Keyword search over the API index built by blueprint.build_api_index
blueprint.set_default Mutate the Blueprint's class default object (CDO) so every newly spawned instance starts with this value.
blueprint.set_enum_entries Replace user-defined Blueprint enum entries with new names.
blueprint.set_function_settings Set Blueprint function settings (access, pure/const/exec, call-in-editor, category)
blueprint.set_metadata Set metadata on a blueprint asset
blueprint.set_struct_field_default Set the default value for an existing user-defined struct field.
blueprint.set_struct_field_metadata Set or clear a metadata key on an existing user-defined struct field.
blueprint.set_variable_metadata Apply metadata to a Blueprint variable
blueprint.set_variable_settings Set Blueprint variable settings (visibility, editable/read-only, expose-on-spawn, replication, and category)
blueprint.undo_last_bpir Undo the last BPIR compilation by deleting created nodes
blueprint.update_bpir_expression Update the BPIR text of an existing expression node
data_table: Author and inspect UDataTable rows (6 operations, Core)
Operation What it does
data_table.add_row Add a new row to a DataTable.
data_table.create Create a new UDataTable asset bound to a row struct, so the row-CRUD verbs have a table to author.
data_table.list_rows Return the DataTable's rowStruct, rowCount, and rows map (same shape as data_table.json asset dumps).
data_table.remove_row Remove a row from a DataTable.
data_table.set_row Overwrite an existing row's values from JSON.
data_table.set_row_struct Rebind a DataTable to a different row struct.
chooser: Author UChooserTable assets (6 operations, Core)
Operation What it does
chooser.add_column Append a first-slice chooser column.
chooser.add_row Append a chooser row and initialize column cell storage.
chooser.compile Compile a chooser table and return diagnostics.
chooser.create Create a UChooserTable asset.
chooser.set_cell Set a chooser cell value using the stored column kind.
chooser.set_result Set a chooser row result.
input: Authors Enhanced Input assets (5 operations, Core)
Operation What it does
input.add_mapping Bind a hardware key to an Input Action inside an Input Mapping Context.
input.create_input_action Create a new Enhanced Input UInputAction asset at the given folder.
input.create_input_mapping_context Create a new Enhanced Input UInputMappingContext (IMC) asset.
input.get_input_info Inspect an Input Action or Input Mapping Context asset.
input.remove_mapping Unbind every key currently mapped to an Input Action inside an Input Mapping Context.
texture: Inspect, transform, and configure texture assets, plus create render targets, procedural patterns (27 operations, Core)
Operation What it does
texture.adjust_curves Adjust color curves
texture.adjust_levels Adjust levels
texture.blur Blur texture
texture.channel_extract Extract channel
texture.channel_pack Pack channels
texture.combine_textures Full-frame blend of two same-size textures (no placement; overlay alpha ignored)
texture.configure_virtual_texture Configure VT settings
texture.create_from_pixels Create a texture from caller-supplied pixel data (base64 RGBA8 or Gray8 bytes, row-major from the top-left).
texture.create_gradient_texture Create a procedural gradient texture
texture.create_noise_texture Create a procedural FBM noise texture (Perlin value noise or Worley/Voronoi cellular)
texture.create_normal_from_height Generate a normal map from height
texture.create_pattern_texture Create a procedural pattern texture
texture.create_render_target Create render target
texture.create_text_texture Create a texture with text rasterised from a real font.
texture.desaturate Desaturate texture
texture.describe Describe any UTexture subclass using the texture dump JSON shape
texture.get_pixel_stats Read live source-mip pixel content (per-channel mean/min/max, grayscale flag, content hash) so.
texture.get_texture_info Get texture info
texture.invert Invert texture
texture.resize_texture Resize texture
texture.set_compression_settings Set texture compression settings
texture.set_lod_bias Set texture LOD bias
texture.set_streaming_priority Set streaming priority
texture.set_texture_filter Set filter
texture.set_texture_group Set texture group
texture.set_texture_wrap Set wrap mode
texture.sharpen Sharpen texture
geometry: Create and modify procedural or existing mesh geometry with editor modeling helpers, including UVs, collision (93 operations, Core)
Operation What it does
geometry.append_buffers Bulk-append vertices + indexed triangles (with optional per-vertex normals/UVs/colors) to a DynamicMeshActor.
geometry.append_triangle Add a triangle to a dynamic mesh by specifying three vertex positions
geometry.append_vertex Add a single vertex to a dynamic mesh
geometry.array_linear Merge offset copies of a dynamic mesh into its own geometry (does not spawn new actors)
geometry.array_radial Merge rotated copies of a dynamic mesh into its own geometry around a center (does not spawn new actors)
geometry.audit_skeletal_animation_floating Evaluate a skeletal mesh in the actual frames of an animation sequence and report the component islands.
geometry.audit_static_meshes Sweep a folder (or a named set) of SAVED StaticMesh assets in ONE call and report the ones that are.
geometry.auto_uv Alias of geometry.unwrap_uv (same XAtlas auto-unwrap); accepts uvChannel, defaults to channel 0
geometry.bake_ambient_occlusion Ray-cast a dynamic mesh against itself and write the resulting ambient-occlusion term into chosen.
geometry.bend Apply bend deformer to a dynamic mesh
geometry.bevel Apply bevel to safe polygroup edges of a dynamic mesh.
geometry.bind_skin_weights Bind a DynamicMeshActor's mesh to a skeleton, writing BASE skin weights for every vertex in one call.
geometry.boolean_intersection Perform boolean intersection of two dynamic mesh actors
geometry.boolean_subtract Perform boolean subtraction of two dynamic mesh actors
geometry.boolean_trim Trim a mesh using another mesh as a cutting tool.
geometry.boolean_union Perform boolean union of two dynamic mesh actors
geometry.bridge Bridge between boundary loops of a dynamic mesh with a single triangle strip
geometry.check_health Report geometry defects of a dynamic mesh (read-only).
geometry.convert_to_skeletal_mesh Bake a DynamicMeshActor into a SkeletalMesh asset and force it to disk.
geometry.convert_to_static_mesh Bake a dynamic mesh into a StaticMesh asset.
geometry.create_arch Create an arch (partial torus) dynamic mesh actor
geometry.create_box Create a box/cube dynamic mesh actor.
geometry.create_capsule Create a capsule dynamic mesh actor
geometry.create_cone Create a cone dynamic mesh actor
geometry.create_cylinder Create a cylinder dynamic mesh actor
geometry.create_disc Create a disc dynamic mesh actor
geometry.create_from_skeletal_mesh Load an existing SkeletalMesh asset into an editable DynamicMeshActor.
geometry.create_from_static_mesh Load an existing StaticMesh asset (or the mesh of a placed actor) into an editable DynamicMeshActor.
geometry.create_pipe Create a hollow pipe dynamic mesh actor
geometry.create_plane Create a plane/rectangle dynamic mesh actor
geometry.create_procedural_mesh Create an empty DynamicMeshActor for procedural mesh building
geometry.create_ramp Create a ramp (wedge) dynamic mesh actor
geometry.create_ring Create a ring (disc with hole) dynamic mesh actor
geometry.create_sphere Create a box-topology sphere dynamic mesh actor: a rounded cube, with no poles and no seam.
geometry.create_spiral_stairs Create a curved/spiral staircase dynamic mesh actor
geometry.create_stairs Create a linear staircase dynamic mesh actor
geometry.create_torus Create a torus dynamic mesh actor
geometry.cylindrify Project vertices of a dynamic mesh toward a cylinder
geometry.delete_triangle Remove a triangle from a dynamic mesh
geometry.delete_triangles_by_bone_influence Delete a skinned dynamic mesh's triangles by skin weight.
geometry.delete_vertex Remove a vertex from a dynamic mesh (also removes connected triangles)
geometry.difference Perform boolean subtraction (alias for boolean_subtract)
geometry.duplicate_along_spline Duplicate an actor along a spline path
geometry.edge_split Split edges of a dynamic mesh by inserting midpoint vertices
geometry.export_obj Export a DynamicMeshActor's mesh as Wavefront OBJ text (v/vt/vn/f).
geometry.export_stl Export a DynamicMeshActor's mesh as STL (ASCII by default, or binary).
geometry.extrude Extrude faces of a dynamic mesh
geometry.extrude_along_spline Extrude a profile along a spline path
geometry.fill_holes Fill all holes in a dynamic mesh
geometry.flip_normals Flip all normals on a dynamic mesh
geometry.generate_collision Generate collision shapes for a dynamic mesh
geometry.generate_complex_collision Generate complex collision using convex decomposition
geometry.get_mesh_info Get information about a dynamic mesh.
geometry.get_vertex_position Get the position of a vertex in a dynamic mesh
geometry.import_obj Import Wavefront OBJ (from text or filePath) into a NEW DynamicMeshActor.
geometry.import_stl Import STL (ASCII from text or filePath; binary from filePath only) into a NEW DynamicMeshActor.
geometry.inset Inset faces of a dynamic mesh (shrink inward)
geometry.loft Loft a surface between cross-section profiles
geometry.measure Measure a dynamic mesh (read-only).
geometry.merge_vertices Merge nearby vertices on a dynamic mesh
geometry.mirror Mirror a dynamic mesh across a specified axis.
geometry.noise_deform Apply Perlin noise deformation to a dynamic mesh
geometry.offset_faces Offset faces of a dynamic mesh along normals
geometry.outset Outset faces of a dynamic mesh (expand outward)
geometry.pack_uv_islands Repack the existing UV islands of a dynamic mesh into the unit square, leaving the seams where they are
geometry.poke Poke faces of a dynamic mesh (offset + subdivide)
geometry.project_uv Apply UV projection (box, planar, or cylindrical) to a dynamic mesh
geometry.recalculate_normals Recalculate normals on a dynamic mesh
geometry.recompute_tangents Recompute tangents on a dynamic mesh.
geometry.relax Apply relax (Laplacian smoothing) to a dynamic mesh
geometry.remesh_uniform Apply uniform remeshing to a dynamic mesh
geometry.remove_degenerates Repair degenerate triangles on a dynamic mesh in place, keeping a closed mesh closed.
geometry.revolve Create a dynamic mesh actor by revolving an open profile path around the local Z axis.
geometry.self_union Apply self-union to resolve self-intersections in a mesh
geometry.set_lod_settings Configure LOD reduction settings for a specific LOD level
geometry.set_uvs Set UV coordinates on a dynamic mesh vertex
geometry.set_vertex_color Set vertex colors on a dynamic mesh
geometry.set_vertex_position Set the position of a vertex in a dynamic mesh
geometry.shell Apply shell/solidify to a dynamic mesh (creates inner wall)
geometry.simplify_collision Simplify mesh and regenerate collision with fewer hulls
geometry.simplify_mesh Simplify a dynamic mesh to a target percentage of triangles
geometry.smooth Apply iterative smoothing to a dynamic mesh
geometry.spherify Project vertices of a dynamic mesh toward a sphere
geometry.split_normals Split normals on a dynamic mesh based on angle threshold
geometry.stretch Stretch a dynamic mesh along an axis
geometry.subdivide Subdivide a dynamic mesh (PN tessellation)
geometry.sweep Sweep a cross-section profile along a path or spline
geometry.taper Apply taper/flare deformer to a dynamic mesh
geometry.transform_uvs Transform UV coordinates (translate, scale, rotate)
geometry.translate_mesh Translate (move) an entire dynamic mesh
geometry.twist Apply twist deformer to a dynamic mesh
geometry.unwrap_uv Auto-generate UV unwrapping for a dynamic mesh using XAtlas (geometry.auto_uv is an alias of this verb)
geometry.weld_vertices Weld edges with matching vertices on a dynamic mesh
model: Compile a .pwmodel text recipe of geometry operations into exactly one Static Mesh asset (3 operations, Core)
Operation What it does
model.compile Compile a .pwmodel source file into exactly one UStaticMesh or USkeletalMesh asset.
model.describe_ops Index the .pwmodel vocabulary, or return complete metadata for one op or parameter set.
model.validate Parse and compile a .pwmodel document without writing an asset.

Inspect, debug & data

property: Reflection-based UPROPERTY accessors (set, reset, get, list) on any UObject (4 operations, Core)
Operation What it does
property.get Read a UPROPERTY value from a UObject by name and return it as JSON.
property.list List properties on a UObject with current/default/override state
property.reset Reset a UPROPERTY to its class default and clear explicit override metadata.
property.set Set a UPROPERTY value on a UObject by name using property reflection.
container: Per-element CRUD on TArray, TMap, and TSet UPROPERTYs of any UObject (16 operations, Core)
Operation What it does
container.array.append Append an element to an array property
container.array.clear Clear all elements from an array property
container.array.get Get an element from an array by index
container.array.insert Insert an element into an array at an index
container.array.remove Remove an element from an array by index
container.array.set Set an element in an array by index
container.map.clear Clear all entries from a map property
container.map.get Get a value from a map property by key
container.map.get_keys Get all keys from a map property
container.map.has_key Check if a map property contains a key
container.map.remove Remove a key from a map property
container.map.set Set a value in a map property
container.set.add Add an element to a set property
container.set.clear Clear all elements from a set property
container.set.contains Check if a set property contains an element
container.set.remove Remove an element from a set property
object: Generic UObject UFunction-invocation escape hatch (1 operation, Core)
Operation What it does
object.call_function Invoke a UFUNCTION on any UObject (actor, component, asset, subsystem) by full path.
static_mesh: Dump-parity live read plus targeted editing for UStaticMesh assets (4 operations, Core)
Operation What it does
static_mesh.bake_transform Bake a rotation/translation/uniform-scale transform into a StaticMesh asset in place.
static_mesh.describe Return read-only StaticMesh metadata using the same JSON shape as static_mesh.json asset dumps.
static_mesh.set_collision_complexity Set a StaticMesh asset's collision trace mode, recook its physics data, refresh loaded components, and optionally save.
static_mesh.set_material Assign a material asset to a StaticMesh material slot by index and save the asset to disk.
recorder: Query the editor-side debug journal recorder (8 operations, Core)
Operation What it does
recorder.describe_session MANDATORY FIRST CALL for any recorder query.
recorder.find_events Find recorded events matching a filter - the 'locate the bad moment' tool.
recorder.get_series Get the change-point series of one tag of one object over a time window, reduced to a bounded set of points.
recorder.get_state Get the as-of value of one recorded object's tags at a specific timestamp.
recorder.list_segments Pair the session's boundary events into named, typed segment windows.
recorder.list_sessions List discoverable journal-recorder sessions under Saved/PinWright/Recordings, newest first.
recorder.query Run a small Python snippet over a recorded journal session.
recorder.summarize_change The workhorse delta summary.
insights: Drive Unreal Insights capture from the editor (6 operations, Core)
Operation What it does
insights.export_trace Extract an Unreal Insights .utrace into CSV data products.
insights.get_trace_path Read-only probe that returns the current Unreal Insights trace destination and connection state without.
insights.set_channels Mutate the active Unreal Insights channel set mid-trace by forwarding to the 'Trace.Enable' / 'Trace.Disable'.
insights.snapshot Flush the in-memory trace ring buffer to a .utrace file via FTraceAuxiliary::WriteSnapshot without stopping.
insights.start_session Start an Unreal Insights file trace (FTraceAuxiliary::Start, auto-named .utrace in the profiling directory).
insights.stop_session Stop the active Unreal Insights trace via FTraceAuxiliary::Stop.
performance: Scalability, CVar, and performance-capture helpers for the active editor or PIE session (19 operations, Core)
Operation What it does
performance.apply_baseline_settings Set a curated bundle of r.* render CVars (VSync, HDR, motion blur, DoF, bloom, shadow, anisotropy) tuned.
performance.configure_lod Configure LOD bias and forced LOD level
performance.configure_nanite Enable or disable Nanite rendering
performance.configure_occlusion_culling Configure occlusion culling settings
performance.configure_texture_streaming Configure texture streaming settings.
performance.enable_gpu_timing Enable or disable GPU timing stats
performance.generate_memory_report Run UE's 'memreport' console command and write the breakdown (or 'memreport -full' for the detailed variant).
performance.merge_actors Combine 2+ static-mesh actors into a single merged StaticMeshActor (UE's mesh-merge utilities).
performance.optimize_draw_calls Configure draw call optimization CVars
performance.optimize_shaders Recompile shaders by mode
performance.run_benchmark Measure editor frame time over a window.
performance.set_frame_rate_limit Set maximum FPS limit
performance.set_resolution_scale Set screen percentage / resolution scale
performance.set_scalability Set the engine scalability quality level.
performance.set_vsync Enable or disable VSync
performance.show_fps Toggle the on-screen FPS overlay (issues 'stat fps').
performance.show_stats Toggle an on-screen stat category overlay by issuing 'stat <category>'.
performance.start_profiling Begin a stat-file capture by issuing 'stat startfile'.
performance.stop_profiling Finalize the stat-file capture started by performance.start_profiling (issues 'stat stopfile') and return.

Editor & system

editor: Drive the editor application itself (45 operations, Core)
Operation What it does
editor.close_asset Close every editor window currently displaying the named asset.
editor.console_command Execute a console command in the editor world or, via the optional 'world' selector.
editor.create_bookmark Save the current viewport camera transform into one of the 10 indexed level bookmarks (Ctrl+0..9 in the editor).
editor.create_utility_widget Create a new UEditorUtilityWidgetBlueprint asset (a Blutility widget).
editor.delete_selected_graph_nodes Delete the currently selected nodes in the active Blueprint graph editor and mark the Blueprint dirty.
editor.dismiss_notifications Close every open editor notification toast.
editor.eject Eject the player controller from its possessed pawn during PIE so the camera flies free.
editor.focus_actor Frame the named actor in the active viewport (equivalent to selecting it and pressing F).
editor.frame_graph Frame/zoom the on-screen node graph inside a target editor window.
editor.get_content_browser_path Return the folder path currently focused in the Content Browser (e.g. /Game/Foo).
editor.get_content_browser_selection Return the assets currently selected in the active Content Browser as a list of {name, path, class} entries.
editor.get_selected_graph_nodes Return information about every node currently selected in the most recently activated Blueprint graph editor.
editor.jump_to_bookmark Move the viewport camera to a previously stored bookmark slot (0..9).
editor.launch_standalone Launch one or more separate -game processes against the current project.
editor.list_dirty_packages Read-only diagnostic: list every dirty (unsaved) content and world package currently in memory (count + package names).
editor.open_asset Open the named asset in its default editor (Blueprint editor, material editor, etc.).
editor.open_level Load and open a level (.umap) in the editor as the active world.
editor.pause Pause the active Play-In-Editor session.
editor.pie_status Read-only probe enumerating every live PIE world context.
editor.play Start a Play-In-Editor (PIE) session for the current level and answer only after the PIE world exists.
editor.possess Possess the named actor with the player controller during PIE.
editor.quit Gracefully request the editor to exit.
editor.redo Redo the most recently undone editor transaction(s) (Ctrl+Y equivalent).
editor.resize_window Resize a top-level editor window's CLIENT area (chrome excluded).
editor.resume Resume a paused Play-In-Editor session.
editor.run_utility_blueprint Execute UEditorUtilitySubsystem::TryRun on a UEditorUtilityBlueprint or UEditorUtilityWidgetBlueprint.
editor.save_all Save every dirty world and content package.
editor.screenshot Capture a PNG screenshot into Saved/Screenshots/.
editor.screenshot_window Capture a full top-level editor window (including its chrome) to a PNG under Saved/Screenshots/EditorWindow.
editor.set_camera Teleport the active level-editor viewport camera to a world-space location and orientation.
editor.set_game_view Toggle 'Game View' in the active viewport.
editor.set_preferences Set multiple console variables in one call by passing a {cvarName: value} map.
editor.set_view_mode Switch the level viewport's rendering view mode.
editor.set_viewport_realtime Enable or disable continuous (realtime) rendering of the active level-editor viewport.
editor.set_window_state Set a top-level editor window's maximize/minimize/restore state.
editor.simulate_input Inject a synthetic keyboard or mouse event.
editor.spawn_utility_widget_tab Spawn and register a dockable tab for a UEditorUtilityWidgetBlueprint, returning the tab id for later closure.
editor.standalone_status Observe a -game process spawned by editor.launch_standalone in this editor session.
editor.start_recording Begin a network demo recording in the active PIE game world.
editor.status Read-only probe for PIE / editor state.
editor.step_frame Advance the paused PIE session by exactly one frame of deltaSeconds and freeze again, world and UI together.
editor.stop Stop an active or pending Play-In-Editor session and answer only after Unreal reports that no PIE session.
editor.stop_recording Stop the active network demo recording via the 'DemoStop' console command.
editor.undo Undo the most recent editor transaction(s) (Ctrl+Z equivalent).
editor.undo_history Read-only: the editor transaction buffer.
system: Process- and engine-level controls (27 operations, Core)
Operation What it does
system.console.search Substring-search the live IConsoleManager registry for variables/commands matching query.
system.console_command Run a console command at the process / GEngine scope.
system.identity Identity of the editor PROCESS answering this call.
system.inspect.find_by_class Find every actor in the resolved world (PIE-first in 'auto') whose class name (or path) matches the query.
system.inspect.find_by_tag Find every actor in the resolved world (PIE-first in 'auto') that has the given Tags entry.
system.inspect.find_objects_by_class Enumerate live UObject INSTANCES of a class across the whole object graph.
system.inspect.get_game_instance Return the live UGameInstance for the selected world (see world) as { objectPath, className }.
system.inspect.get_game_mode Return the live authoritative AGameModeBase for the selected world (see world) as { objectPath, className }.
system.inspect.get_game_state Return the live AGameStateBase for the selected world (see world) as { objectPath, className }.
system.inspect.get_local_players Return the live ULocalPlayers for the selected world (see world) as an array.
system.inspect.get_player_controllers Return the live APlayerControllers for the selected world (see world) as an array.
system.inspect.get_player_states Return the live APlayerStates for the selected world (see world) as an array of { objectPath, className, playerIndex }.
system.inspect.get_selected_actors Return the actors currently selected in the level editor as {name, path, class} entries.
system.inspect.get_viewport_info Return the active viewport's pixel width/height plus the level-editor camera transform.
system.inspect.inspect_class Resolve a UClass by short name, U/A-prefixed name, /Script/ path.
system.inspect.inspect_object Inspect a UObject (typically an actor) by path or display name and report its properties, transform.
system.inspect.list_actor_classes Enumerate the distinct actor classes present in the resolved world (PIE-first in 'auto') as {class, count}.
system.inspect.list_actor_tags Enumerate the distinct AActor::Tags in use across the resolved world (PIE-first in 'auto') as {tag, count}.
system.inspect.list_objects Enumerate AActors in the resolved world (PIE-first in 'auto') as {name, label, path, class} entries.
system.inspect.list_subsystems Enumerate live UEngine/UEditor/UGameInstance/UWorld/ULocalPlayer subsystem instances.
system.inspect.search_classes Ranked keyword search over the native UClass catalog with parent / module / flag filters.
system.job_cancel Stop a running long-running job.
system.job_list List active and recently-completed long-running jobs
system.job_status Return the status of a previously started long-running job
system.live_coding_compile Trigger the editor's own in-process Live Coding compile (Ctrl+Alt+F11 equivalent), wait for it.
system.live_coding_status Report in-process Live Coding availability.
system.run_tests Run UE automation tests and report pass/fail counts.
python: Run code (or a .py file path) inside UE's built-in Python interpreter for editor APIs exposed (2 operations, Core)
Operation What it does
python.callbacks List or clear the Slate tick / Python shutdown callbacks Python scripts registered.
python.execute Execute Python code or a .py file via UE's built-in Python interpreter
source_control: Query and mutate the editor's source-control provider state (6 operations, Core)
Operation What it does
source_control.connect Switch to / bring up a source-control provider so the namespace becomes usable
source_control.get_provider Return the active source-control provider's name and connectivity flags
source_control.log Return revision history for a single asset
source_control.mark_for_add Mark a batch of asset paths for add
source_control.revert Discard local changes for a batch of asset paths, and resynchronize the loaded packages with the reverted bytes.
source_control.status Refresh and return source-control state for a batch of asset paths
localization: Run the Unreal Localization Dashboard's GatherText commandlet from a tracked PinWright job (2 operations, Core)
Operation What it does
localization.compile Run the named project's Unreal localization Compile config as a tracked commandlet job.
localization.gather Run the named project's Unreal localization Gather config as a tracked commandlet job.
misc: Catch-all for cross-cutting editor primitives that don't justify their own namespace (5 operations, Core)
Operation What it does
misc.create_camera Spawn an ACameraActor (or, with cine=true / cameraClass="cine", an ACineCameraActor) in the active level.
misc.create_post_process_volume Spawn an APostProcessVolume actor in the active level.
misc.set_camera_fov Set the FieldOfView property on an existing camera actor (degrees).
misc.set_game_speed Set the global TimeDilation on the active world (1.0 = real-time, 0.5 = half-speed slow-mo, 2.0 = double-speed).
misc.set_replication Set bReplicates and bReplicateMovement on the actor CDO of an Actor Blueprint asset.

UI & widgets

widget: Asset-side UMG authoring: create Widget Blueprints, edit their tree and properties, bind events, and drive animations (32 operations, Core)
Operation What it does
widget.add Add any widget type to a widget blueprint by class name
widget.add_animation_keyframe Add a finite float key to a validated reflected float-property track without partial error-path mutation
widget.add_animation_track Add a reflected float-property track for a widget after validating and staging the complete edit
widget.bind Bind a widget property or bindable event to a handler function on the widget blueprint.
widget.bind_event Verify/refresh an existing widget event binding.
widget.create_widget_animation Create a new widget animation in a UMG widget blueprint
widget.create_widget_blueprint Author a new UWidgetBlueprint asset (UMG widget).
widget.delete_animation Delete a widget animation from a blueprint
widget.describe Describe a widget blueprint: tree with overridden properties, slot info, and bindings per widget
widget.duplicate Duplicate a widget-tree child, optionally copying its subtree, authored properties, slot data, and placement.
widget.export_animations_json Export persisted UWidgetAnimation MovieScene tracks as JSON.
widget.export_xml Export a widget blueprint tree as XML/HTML-like markup with all overridden properties
widget.get_animation_info Get information about widget animations
widget.get_animation_section_ranges Read the [start, end) range of each section in a widget animation.
widget.get_class_properties Return all editable properties for one or more UMG widget classes, with struct field recursion
widget.get_designer_visibility Get the editor-only Widget Blueprint hierarchy eye visibility for a widget-tree child.
widget.import_animations_json Import persisted UWidgetAnimation JSON into a widget blueprint.
widget.import_xml Import XML markup to build or replace a widget tree
widget.remove_animation_binding Remove a specific widget binding from an animation
widget.remove_widget Delete a child widget from a UWidgetBlueprint's widget tree by name.
widget.rename_widget Rename a child widget within a UWidgetBlueprint's widget tree.
widget.reparent_widget Move a child widget to a different parent panel within the same UWidgetBlueprint.
widget.replace_class Replace a widget's class while preserving its children and (for non-root) its parent slot.
widget.screenshot_designer Capture the Widget Blueprint Designer preview or containing editor window as a PNG under.
widget.set Set properties and slot properties on a widget by name
widget.set_animation_loop Returns NOT_SUPPORTED.
widget.set_animation_playback_range Set the playback range (duration) of a widget animation
widget.set_animation_section_range Set the start and/or end of every matched section in a widget animation.
widget.set_animation_speed Returns NOT_SUPPORTED.
widget.set_designer_visibility Set the editor-only Widget Blueprint hierarchy eye visibility for a widget-tree child without changing.
widget.set_image_brush Set an FSlateBrush UPROPERTY (default 'Brush') on a widget instance from a texture/material/atlas resource.
widget.wrap Wrap an existing non-root widget with a new panel widget.
ui: Runtime UMG operations on live widget instances (10 operations, Core)
Operation What it does
ui.activatable_pop Pop the active (or named) activatable widget off a stack.
ui.activatable_push Instantiate an activatable widget and push it onto a UCommonActivatableWidgetContainerBase.
ui.create_hud Construct a UMG widget instance from a UWidgetBlueprint and add it to the player viewport at runtime.
ui.get_active_widget Return the currently-active (top) activatable widget on a stack.
ui.list_stack_widgets List all activatable widgets currently on a stack, top -> bottom.
ui.remove_widget_from_viewport Remove a UMG widget instance from the player viewport, undoing a prior ui.create_hud.
ui.screenshot Capture a screenshot of the active viewport.
ui.set_widget_image Set the Brush texture on a runtime UImage widget by name.
ui.set_widget_text Set the Text property on a runtime UTextBlock widget by name (live in the viewport).
ui.set_widget_visibility Set the ESlateVisibility on a runtime widget by name.
drive: The agent-facing surface for observing, acting on, and verifying live running UI (13 operations, Core)
Operation What it does
drive.click Click a live UI element by handle (re-resolves the target, then settles before responding).
drive.drag Drag from one live UI element to a second element or absolute point, then settle.
drive.events_since Read the journal delta (events + changed variables) since a cursor; empty delta when no PIE/session is active.
drive.expect Evaluate a condition against a live surface immediately (synchronous, no settle/wait).
drive.hover Hover a live UI element by handle (mouse-move to its center, then settle).
drive.input_state Read the live mouse-capture and focus state.
drive.key Inject a key event to the focused widget; with a handle, clicks it to focus first.
drive.list_windows List open top-level editor windows (title, type, geometry, index, maximized state) so an agent can target editor chrome.
drive.observe Observe a live UI surface: its elements plus an optional Set-of-Mark screenshot and journal delta.
drive.os_gesture Real-pointer (os_input) click or drag at a PIE game-viewport pixel or world actor, with button.
drive.scroll Scroll over a live UI element by handle (mouse-wheel at its center, then settle).
drive.type Type text into a live UI element by handle (clicks to focus, then types, then settles).
drive.wait_for Wait for a condition to hold on a live surface, polling each frame until met or timed out.

Audio

audio: Runtime audio playback and mix control for a live editor or PIE world (99 operations, Core)
Operation What it does
audio.analysis.analyze Measure one sound.
audio.analysis.audit_folder Sweep a content folder of USoundWaves in ONE call and flag technical defects.
audio.analysis.compare Measure what a candidate render differs from a reference recording BY, and in which direction.
audio.analysis.decompose Take a sound apart into the three layers the synthesizer can put back together.
audio.analysis.to_recipe Analysis by resynthesis.
audio.authoring.add_cue_node Add a node to a SoundCue graph
audio.authoring.add_metasound_input Add a graph input to a MetaSound
audio.authoring.add_metasound_interface Attach a named interface to a MetaSound graph (add/remove required I/O vertices)
audio.authoring.add_metasound_node Add a node to a MetaSound graph
audio.authoring.add_metasound_output Add a graph output to a MetaSound
audio.authoring.add_metasound_variable Add a typed graph variable to a MetaSound
audio.authoring.add_mix_modifier Add a sound class modifier to a SoundMix
audio.authoring.add_source_effect Add a source effect to an effect chain
audio.authoring.compile_metasound Force a MetaSound to rebuild its referenced asset classes and run validation
audio.authoring.configure_distance_attenuation Configure distance attenuation settings
audio.authoring.configure_mix_eq Configure EQ settings on a SoundMix
audio.authoring.configure_occlusion Configure occlusion settings
audio.authoring.configure_reverb_send Configure reverb send settings
audio.authoring.configure_spatialization Configure spatialization settings
audio.authoring.connect_cue_nodes Connect two nodes in a SoundCue graph.
audio.authoring.connect_metasound_nodes Connect two MetaSound nodes via an edge
audio.authoring.create_attenuation_settings Create a new SoundAttenuation asset
audio.authoring.create_dialogue_voice Create a new DialogueVoice asset
audio.authoring.create_dialogue_wave Create a new DialogueWave asset
audio.authoring.create_metasound Create an empty UMetaSoundSource asset (procedural audio graph).
audio.authoring.create_metasound_patch Create an empty UMetaSoundPatch asset (a reusable MetaSound sub-graph).
audio.authoring.create_metasound_preset Create a MetaSound preset asset that references an existing MetaSoundSource or MetaSoundPatch and overrides.
audio.authoring.create_reverb_effect Create a new ReverbEffect asset
audio.authoring.create_sound_class Create a USoundClass asset (groups sounds for shared volume/pitch/EQ control).
audio.authoring.create_sound_concurrency Create a USoundConcurrency asset (a shared voice-limit group).
audio.authoring.create_sound_cue Create a new USoundCue asset.
audio.authoring.create_sound_mix Create a USoundMix asset (a stackable mixdown profile applying volume/pitch adjusters per SoundClass).
audio.authoring.create_sound_submix Create a USoundSubmix asset (a bus in the submix routing graph).
audio.authoring.create_sound_wave_from_pcm Create a USoundWave asset from raw interleaved float PCM sent inline as JSON.
audio.authoring.create_source_effect_chain Create a source effect preset chain
audio.authoring.create_source_effect_preset Create a USoundEffectSourcePreset asset (e.g. Filter/EQ/BitCrusher) so add_source_effect has a preset to reference.
audio.authoring.decompile_metasound Decompile a MetaSound asset to MSIR text.
audio.authoring.decompile_sound_cue Decompile a SoundCue graph into SCIR text.
audio.authoring.describe_attenuation Describe a SoundAttenuation asset as structured JSON.
audio.authoring.describe_dialogue_voice Describe a DialogueVoice asset as structured JSON.
audio.authoring.describe_dialogue_wave Describe a DialogueWave asset as structured JSON.
audio.authoring.describe_metasound Describe a MetaSound Source or Patch graph as structured JSON
audio.authoring.describe_sound_class Describe a SoundClass as structured JSON.
audio.authoring.describe_sound_cue Describe a SoundCue graph and cue-level settings (concurrency/attenuation/soundClass/volume/pitch) as structured JSON
audio.authoring.describe_sound_mix Describe a SoundMix as structured JSON.
audio.authoring.describe_sound_wave Describe a SoundWave as structured JSON.
audio.authoring.disconnect_metasound_nodes Disconnect an edge between two MetaSound nodes by source-output / target-input names.
audio.authoring.get_audio_info Get information about an audio asset
audio.authoring.list_metasound_interfaces List all registered MetaSound interfaces with their input/output vertex shapes
audio.authoring.remove_metasound_input Remove a graph input from a MetaSound by name
audio.authoring.remove_metasound_interface Detach a named interface from a MetaSound graph
audio.authoring.remove_metasound_node Remove a node from a MetaSound graph by GUID.
audio.authoring.remove_metasound_output Remove a graph output from a MetaSound by name
audio.authoring.remove_metasound_variable Remove a graph variable from a MetaSound
audio.authoring.rename_metasound_input Rename a MetaSound graph input, preserving its type, default, and connections
audio.authoring.rename_metasound_output Rename a MetaSound graph output, preserving its type and connections
audio.authoring.search_metasound_nodes Search the MetaSound Frontend class registry.
audio.authoring.set_class_parent Set the parent SoundClass
audio.authoring.set_class_properties Set properties on a SoundClass
audio.authoring.set_cue_attenuation Set attenuation settings on a SoundCue
audio.authoring.set_cue_concurrency Set concurrency settings on a SoundCue
audio.authoring.set_cue_root Make an existing cue node the graph's root (USoundCue::FirstNode) - the node the audio device starts playback from.
audio.authoring.set_dialogue_context Add or replace a dialogue context mapping
audio.authoring.set_metasound_default Set the default value of a MetaSound graph input.
audio.authoring.set_metasound_node_input_default Set the literal on a node's input pin inside a MetaSound graph (not a graph input).
audio.authoring.set_metasound_variable_default Set the default value of a MetaSound graph variable.
audio.authoring.set_sound_wave_gain Rescale an existing USoundWave's PCM in place to a peak (dBFS) or integrated-loudness (LUFS) target.
audio.authoring.set_sound_wave_properties Set per-wave properties on a USoundWave (bLooping, volume, pitch, soundGroup, compressionQuality, bMature, bSingleLine).
audio.authoring.set_submix_parent Set the parent SoundSubmix for a USoundSubmix asset (mirrors set_class_parent)
audio.authoring.validate_metasound Run builder-level validation on a MetaSound and return diagnostics
audio.clear_sound_mix_class_override Clear a SoundMix class override
audio.create_ambient_sound Spawn an AAmbientSound actor (looping/persistent audio source) at a world position with the given Sound asset.
audio.create_audio_component Create a UAudioComponent in the world (attached to an actor or freestanding at a location) bound to a USoundBase.
audio.fade_sound_in Fade in a sound on an actor's audio component
audio.fade_sound_out Linearly ramp the volume of an actor's first AudioComponent down to a target level over fadeTime seconds.
audio.list_active_sounds Read-only snapshot of every sound the audio device(s) are playing right now.
audio.music.build_interactive Build one interactive MetaSound Source that plays the given stem assets as loopable, crossfadeable layers.
audio.music.describe_schema Machine-readable grammar of the audio.music score.
audio.music.export_stems Write each stem candidate into the project as its own USoundWave asset, named from its track name.
audio.music.render_stems Render a music score to one seamless PCM stem per track.
audio.play_sound_2d Non-spatialized one-shot playback of a USoundBase routed to the master submix (UI/HUD audio shape).
audio.play_sound_at_location Spatialized one-shot playback of a USoundBase (cue/wave) at a world position.
audio.play_sound_attached Play a sound from an AudioComponent that follows a target actor (optionally a socket).
audio.pop_sound_mix Pop a SoundMix modifier from the audio stack
audio.prime_sound Prime a sound asset for immediate playback
audio.push_sound_mix Activate a USoundMix on the global mix stack so its class adjusters take effect (volume/pitch tweaks per SoundClass).
audio.set_base_sound_mix Set the base SoundMix for the world
audio.set_sound_mix_class_override Set a SoundMix class override for volume/pitch
audio.spawn_sound_at_location Spawn a sound component at a world location
audio.synth.audition Play a sound out loud through the editor's preview audio device (no PIE session or editor world needed), or stop it.
audio.synth.describe_schema Machine-readable grammar of the audio.synth recipe.
audio.synth.discard Discard one or more synth candidates by id, or every candidate with all=true.
audio.synth.export Write a candidate's audio into the project as a USoundWave asset.
audio.synth.generate Render a synth recipe into a session candidate and report what the render measured.
audio.synth.get_recipe Return a resident candidate's CANONICAL recipe.
audio.synth.list_candidates List the rendered synth candidates held in this session, newest first.
audio.synth.patch Apply an RFC-6902 JSON Patch to a candidate's canonical recipe, re-parse it and render the result as a NEW candidate.
audio.synth.render_metasound Render an existing MetaSound Source asset offline to PCM and measure it.
audio.synth.variations Render N seeded perturbations of a candidate's recipe and return their ids beside a compact metric table.

Scene, level & world

actor: Operate on placed actors in the active editor world: spawn, transform, query, tag, snapshot, attach and edit components (41 operations, Core)
Operation What it does
actor.add_component Add an instance-level component to a placed actor (level instance, not the BP class).
actor.add_instances Append instances to an ISM/HISM component on a placed actor, in one batch, and report the indices they landed at.
actor.add_tag Add an FName tag to the actor's Tags array (idempotent - adding an existing tag is a no-op and reports wasPresent=true).
actor.apply_force Apply an instantaneous physics force (in unreal units, world space) to the actor's first primitive component.
actor.attach Attach one actor to another using KeepWorldTransform.
actor.create_snapshot Save the actor's current FTransform (location, rotation, scale) to a named in-memory snapshot keyed.
actor.delete Destroy one or more actors in the current level via UEditorActorSubsystem.
actor.delete_by_tag Bulk-destroy every actor in the current level whose Tags array contains the given FName.
actor.describe Read a compact JSON description of one live placed actor, including identity, transform.
actor.detach Detach an actor from its current parent using KeepWorldTransform.
actor.duplicate Duplicate a placed actor in the same world via UEditorActorSubsystem::DuplicateActor and translate the copy.
actor.duplicate_component Duplicate an instance-level component on a placed actor, optionally copying properties, attachment, transform.
actor.export Serialize an actor and its components to UE's T3D (text) format and return the text in the response.
actor.find_by_class Iterate the resolved world (PIE-first in 'auto') for actors of the given UClass (and subclasses).
actor.find_by_name Search the current level for actors whose label, name, or path contains a case-insensitive substring.
actor.find_by_tag List actors in the resolved world (PIE-first in 'auto') that match the given Tag.
actor.get Read summary metadata for one placed actor: name, label, path, class, tags, location, and scale.
actor.get_bounding_box Compute the actor's world-space axis-aligned bounding box including all primitive components (visible and hidden).
actor.get_component_property Read a single UPROPERTY value from a named component of a placed actor and return it as JSON.
actor.get_components List every component on an actor instance (or, if a Blueprint asset path is passed, the BP's CDO components).
actor.get_instances Read the per-instance transforms of an ISM/HISM component on a placed actor.
actor.get_transform Read the actor's current world transform.
actor.list Enumerate actors in the resolved world (PIE-first in 'auto') as label/name/path/class.
actor.nudge Move and/or rotate an actor by a RELATIVE delta (not an absolute transform).
actor.remove_component Destroy an instance-level component on a placed actor by name (case-insensitive match).
actor.remove_instances Remove instances from an ISM/HISM component on a placed actor.
actor.remove_tag Remove an FName tag from the actor's Tags array.
actor.restore_snapshot Restore an actor to the FTransform previously captured by actor.create_snapshot for that actor + snapshot name.
actor.select Select actors in the level editor by name.
actor.set_blueprint_variables Set one or more Blueprint UPROPERTY values on a placed actor instance (level instance, not the BP class default).
actor.set_collision Toggle collision on the actor's root primitive component between QueryAndPhysics (enabled) and NoCollision (disabled).
actor.set_component_properties Set one or more UPROPERTY values on a named component of a placed actor.
actor.set_folder Assign one or more actors to a World Outliner folder path via SetFolderPath.
actor.set_instance_transforms Write per-instance transforms on an ISM/HISM component, in one batch, and report what each instance WAS.
actor.set_label Rename a placed actor's DISPLAY LABEL - the name the World Outliner shows - via SetActorLabel.
actor.set_transform Set an actor's world transform (location, rotation, scale), optionally aiming it with lookAt.
actor.set_visibility Toggle whether an actor is hidden in the level.
actor.spawn Spawn an actor in the editor world.
actor.spawn_batch Spawn or duplicate many actors in one call, one per entry in transforms[].
actor.spawn_from_blueprint Spawn an instance of a Blueprint class into the editor world by asset path.
actor.spawn_shape Spawn a /Engine/BasicShapes primitive (cube, sphere, cylinder, cone, plane) as a StaticMeshActor in one call.
level: Day-to-day "open and edit a map" surface for ULevel / UWorld assets (38 operations, Core)
Operation What it does
level.add_sublevel Attach a level package to the active world as a streaming sublevel using.
level.audit Sweep every actor in the level ONCE and report the ones that are demonstrably wrong.
level.build_all Run the editor's full Build All sequence: geometry, navigation, lighting, and reflection captures.
level.build_lighting Build static lighting / lightmaps for the active level at the requested quality.
level.build_navigation Build the navigation mesh (recast) for the active world.
level.create Create a new empty (non-World-Partition) level asset.
level.delete Delete a level package from the content browser.
level.describe_offline List a map's actors by reading its .umap file from disk.
level.duplicate Duplicate an existing level package to a new location without modifying the source.
level.export Export a level to a text-format .t3d file on disk.
level.get_actors List every actor that belongs to the named level (not the entire world).
level.get_bounds Return the world-space axis-aligned bounding box that encloses every actor in the level (origin + extent).
level.get_info Return descriptive metadata about a level.
level.get_lighting_scenarios List every streaming sublevel in the active world that is flagged as a lighting scenario.
level.list List the persistent level + every streaming sublevel in the active editor world.
level.load Load a level package and make it the active editor world.
level.remove_from_world Detach a streaming sublevel from the active world.
level.rename Rename / move a level package, fixing up redirectors so existing references continue to resolve.
level.save Save the active editor world's persistent level package.
level.save_as Save the active editor world's persistent level under a new package path (Save As).
level.set_locked Lock or unlock a level for editing.
level.set_visibility Toggle the visibility flag on a streaming sublevel without unloading it.
level.stream Toggle a streaming sublevel's loaded and visible state independently.
level.structure.add_level_blueprint_node Add an UNBOUND stub node of the requested class to the level Blueprint's event graph.
level.structure.assign_actor_to_data_layer Add the named actor to a World Partition data layer so it inherits that layer's visibility and streaming policy.
level.structure.configure_grid_size Set the cell size and loading range of a World Partition grid.
level.structure.configure_hlod_layer Create or update a Hierarchical LOD layer.
level.structure.configure_level_streaming Update streaming-method, initial visibility, and load-on-startup flags on an existing streaming level.
level.structure.connect_level_blueprint_nodes Wire two nodes in the level Blueprint's event graph by name (and optionally pin name).
level.structure.create_data_layer Create a UDataLayerInstance asset and register it with the active World Partition.
level.structure.create_level Create a new level package, optionally as a World-Partition map.
level.structure.create_level_instance Spawn an ALevelInstance actor that embeds a level asset by reference at the given transform.
level.structure.create_minimap_volume Spawn a World Partition minimap volume defining the area captured into the WP minimap texture.
level.structure.create_packed_level_actor Spawn a Packed Level Actor.
level.structure.enable_world_partition Report the active level's World-Partition state.
level.structure.get_level_structure_info Return a structural overview of the active world.
level.structure.open_level_blueprint Open the level Blueprint editor for the active level.
level.structure.set_streaming_distance Configure level-streaming-volume distances and usage mode for the named streaming level.
world_partition: Operate on World Partition editor systems for partitioned maps (4 operations, Core)
Operation What it does
world_partition.cleanup_invalid_datalayers Remove data layer instances with missing assets
world_partition.create_datalayer Create a new data layer
world_partition.load_cells Load world partition cells in a region
world_partition.set_datalayer Assign an actor to a data layer
volume: Place, inspect, resize, configure, and remove level volume actors, including blocking, trigger, post process (26 operations, Core)
Operation What it does
volume.add_blocking_volume Add a blocking volume at an existing actor's location
volume.add_cull_distance_volume Add a cull distance volume at an existing actor's location
volume.add_kill_z_volume Add a kill-Z volume at an existing actor's location
volume.add_physics_volume Add a physics volume at an existing actor's location
volume.add_post_process_volume Add a post-process volume at an existing actor's location
volume.add_trigger_volume Add a trigger volume at an existing actor's location
volume.create_audio_volume Create an audio volume
volume.create_blocking_volume Create a blocking volume
volume.create_camera_blocking_volume Create a camera blocking volume
volume.create_cull_distance_volume Create a cull distance volume
volume.create_kill_z_volume Create a kill-Z volume
volume.create_lightmass_importance_volume Create a lightmass importance volume
volume.create_nav_mesh_bounds_volume Create a nav mesh bounds volume
volume.create_nav_modifier_volume Create a nav modifier volume
volume.create_pain_causing_volume Create a pain-causing volume
volume.create_physics_volume Create a physics volume
volume.create_post_process_volume Create a post-process volume
volume.create_precomputed_visibility_volume Create a precomputed visibility volume
volume.create_reverb_volume Create a reverb volume (AudioVolume with reverb settings)
volume.create_trigger_capsule Create a trigger capsule in the editor world
volume.create_trigger_sphere Create a trigger sphere in the editor world
volume.create_trigger_volume Create a trigger volume in the editor world
volume.get_volumes_info Get information about all volumes in the level
volume.set_volume_bounds Set volume bounds using WORLD min/max corners.
volume.set_volume_extent Set the extent of an existing volume.
volume.set_volume_properties Set properties on an existing volume
spline: Create and edit spline actors, spline components, spline points, spline mesh components (14 operations, Core)
Operation What it does
spline.add_spline_point Add a point to a spline component on an actor
spline.configure_spline_mesh_axis Set the forward axis on a SplineMeshComponent
spline.create_spline_actor Spawn a new actor with a spline component in the world
spline.create_spline_mesh_actor Spawn a new actor with a SplineMeshComponent
spline.get_splines_info Get information about spline components on actors in the world
spline.remove_spline_point Remove a point from a spline component
spline.scatter_meshes_along_spline Scatter static meshes along a spline.
spline.set_spline_mesh_asset Set the static mesh on a SplineMeshComponent
spline.set_spline_mesh_material Set a material on a SplineMeshComponent
spline.set_spline_point_position Set the position of a spline point
spline.set_spline_point_rotation Set the rotation for a spline point
spline.set_spline_point_scale Set the scale for a spline point.
spline.set_spline_point_tangents Set the tangent vectors for a spline point
spline.set_spline_type Set the spline point type for one or all points
foliage: Edit foliage assets and placed foliage instances in the current level, including foliage type setup (6 operations, Core)
Operation What it does
foliage.add_instances Add foliage instances with full transform support.
foliage.add_type Create a new foliage type asset from a static mesh.
foliage.create_procedural Create a procedural foliage volume with spawner
foliage.get_instances Get foliage instances, optionally filtered by type.
foliage.paint Paint foliage instances at the supplied locations.
foliage.remove Remove foliage instances by type or all
landscape: Create and edit ALandscape actors (9 operations, Core)
Operation What it does
landscape.audit_shape Measure whether a landscape's height-change boundaries CURVE or follow the heightfield's own cell lattice.
landscape.create Spawn a new ALandscape actor in the active world with the given component grid and starter material.
landscape.create_grass_type Create a ULandscapeGrassType asset configured to scatter the given static mesh as grass.
landscape.create_procedural_terrain Paint a weight-blended layer on a landscape across an optional region - a misnomer-named alias for layer paint.
landscape.edit Bulk-modify a landscape's heightmap by writing raw uint16 height samples (operation='set') or by applying.
landscape.flush_grass Invalidate and rebuild the grass instances every landscape in the editor world built from one.
landscape.get_heights Read back a landscape's heightmap over a region.
landscape.sculpt Sweep a sculpt brush (Raise / Lower / Flatten / Smooth) along a world-space path.
landscape.set_material Replace the LandscapeMaterial on a landscape actor with the named material asset and rebuild.
water: Spawn and configure UE Water plugin actors (6 operations, Core)
Operation What it does
water.set_river_depth_at_spline_point Set a river's depth at one spline point (pointIndex) or at every point (allPoints).
water.set_river_width_at_spline_point Set a river's width at one spline point (pointIndex) or at every point (allPoints).
water.set_water_body_material Set materials on an AWaterBody's UWaterBodyComponent.
water.set_water_body_underwater_post_process Wire up the underwater post-process material and settings on the body's UWaterBodyComponent.
water.spawn_water_body Spawn a water body actor (river/lake/ocean/custom).
water.spawn_water_zone Spawn an AWaterZone actor.
environment: Coordinate environment building and live level-world ambience, terrain, sky, fog, and time-of-day state (10 operations, Core)
Operation What it does
environment.build Build environment actions (legacy dispatcher)
environment.build.create_procedural_terrain Create a procedural terrain mesh actor
environment.build.create_sky_sphere Create a sky sphere actor in the level
environment.build.set_time_of_day Set time of day via sky sphere
environment.control.set_skylight_intensity Set skylight intensity
environment.control.set_sun_intensity Set directional light (sun) intensity
environment.control.set_time_of_day Set time of day via directional light rotation
environment.spawn_reflection_capture Spawn a Sphere or Box reflection capture actor and apply properties to its UReflectionCaptureComponent
environment.spawn_sky_atmosphere Spawn an ASkyAtmosphere actor and apply properties to its USkyAtmosphereComponent
environment.spawn_volumetric_cloud Spawn an AVolumetricCloud actor and apply properties to its UVolumetricCloudComponent
navigation: Configure editor navigation data, nav agent settings, NavAreas, NavModifier components (12 operations, Core)
Operation What it does
navigation.configure_nav_area_cost Configure nav area cost settings
navigation.configure_nav_link Configure an existing NavLinkProxy
navigation.configure_nav_mesh_settings Configure RecastNavMesh settings
navigation.configure_smart_link_behavior Configure smart link behavior settings
navigation.create_nav_link_proxy Spawn a NavLinkProxy actor
navigation.create_nav_modifier_component Add a NavModifierComponent to a blueprint
navigation.create_smart_link Spawn a smart NavLinkProxy with custom link component
navigation.get_navigation_info Get navigation system info and status
navigation.rebuild_navigation Trigger full navigation rebuild
navigation.set_nav_agent_properties Set nav agent properties (radius, height, slope, step height)
navigation.set_nav_area_class Set the nav area class on a NavModifierComponent
navigation.set_nav_link_type Set NavLink type to simple or smart
spatial: Deterministic spatial reasoning over the editor world (12 operations, Core)
Operation What it does
spatial.find_clear_placement SEARCH for somewhere a footprint fits, instead of verifying a spot already chosen.
spatial.ground_actors Seat a BATCH of actors on the ground and report, per actor, whether it actually happened.
spatial.ground_instances Seat individual ISM/HISM INSTANCES on the ground and report, per instance, whether it actually happened.
spatial.measure_distance Measure the distance between two actors by deterministic box math (no screenshots).
spatial.measure_overlap Non-mutating AABB overlap test between two actors.
spatial.place_on_surface Rest an EXISTING actor ON a surface.
spatial.place_relative Place actor B relative to an anchor actor A by world-AABB arithmetic (no raycast).
spatial.raycast Cast a world-space line trace and report the hit.
spatial.raycast_screen Map a pixel from a prior capture back to a world-space ray and its first blocking hit.
spatial.scatter_layout GENERATE a set of transforms from a rule.
spatial.verify_grounding Measure ground-contact quality for a BATCH of actors.
spatial.verify_placement Verify an actor's placement with deterministic box math instead of eyeballing a screenshot.

Rendering & look

material: Material asset authoring, material instance parameter editing, and material graph import/export (77 operations, Core)
Operation What it does
material.audit Validate the expression GRAPH of one or more UMaterials in one read-only call.
material.authoring.add_append Add an AppendVector node to a material
material.authoring.add_collection_parameter_node Drop a CollectionParameter node into a material's graph, bound atomically to (collection, parameterName, parameterId).
material.authoring.add_collection_scalar_parameter Append a scalar parameter to an existing UMaterialParameterCollection.
material.authoring.add_collection_vector_parameter Append a vector (FLinearColor) parameter to an existing UMaterialParameterCollection.
material.authoring.add_component_mask Add a ComponentMask node to a material
material.authoring.add_cross_product Add a CrossProduct node to a material
material.authoring.add_custom_expression Add a UMaterialExpressionCustom node containing inline HLSL code.
material.authoring.add_desaturation Add a Desaturation node to a material
material.authoring.add_dot_product Add a DotProduct node to a material
material.authoring.add_fresnel Add a Fresnel node to a material
material.authoring.add_function_input Add an input to a material function.
material.authoring.add_function_output Add an output to a material function
material.authoring.add_if Add an If conditional node to a material
material.authoring.add_landscape_layer Create a shared ULandscapeLayerInfoObject asset for one target layer.
material.authoring.add_math_node Add a math operation node (Add, Subtract, Multiply, Divide, Lerp, Clamp, Power, Frac, OneMinus, Append).
material.authoring.add_noise Add a Noise node to a material
material.authoring.add_panner Add a Panner node to a material
material.authoring.add_pixel_depth Add a PixelDepth node to a material
material.authoring.add_reflection_vector Add a ReflectionVectorWS node to a material
material.authoring.add_rotator Add a Rotator node to a material (UE 5.1+)
material.authoring.add_scalar_parameter Add a scalar parameter expression to a material
material.authoring.add_static_switch_parameter Add a static switch parameter to a material
material.authoring.add_switch Add an If comparator node (alias of add_if; not a bool true/false switch)
material.authoring.add_texture_coordinate Add a texture coordinate node to a material
material.authoring.add_texture_sample Add a texture sample or texture sample parameter to a material
material.authoring.add_vector_parameter Add a vector parameter expression to a material
material.authoring.add_vertex_normal Add a VertexNormalWS node to a material
material.authoring.add_voronoi Add a Voronoi noise node to a material (Noise with VoronoiALU function)
material.authoring.add_world_position Add a WorldPosition node to a material
material.authoring.auto_layout Re-flow expression positions on a UMaterial or UMaterialFunction with the layered graph layout.
material.authoring.clear_parameter_override Clear a single parameter override on a UMaterialInstanceConstant, returning it to the parent value.
material.authoring.compile_material Force a material to recompile its shaders synchronously.
material.authoring.configure_layer_blend Declare a landscape material's paintable TARGET LAYERS by writing them into a LandscapeLayerBlend node.
material.authoring.connect_nodes Connect a source expression output to a target expression input or main material node.
material.authoring.create_decal_material Create a UMaterial pre-configured for deferred decal use (DeferredDecal domain, Translucent blend).
material.authoring.create_landscape_material Create a UMaterial pre-configured for landscape use (Surface domain, Opaque blend).
material.authoring.create_material Create a new material asset with optional domain, blend mode, and shading model.
material.authoring.create_material_function Create a UMaterialFunction asset - a reusable subgraph that can be called from many materials.
material.authoring.create_material_instance Create a UMaterialInstanceConstant asset that inherits from a parent UMaterial.
material.authoring.create_material_layer Create a UMaterialFunctionMaterialLayer asset.
material.authoring.create_material_layer_blend Create a UMaterialFunctionMaterialLayerBlend asset - combines two adjacent material layers into one.
material.authoring.create_parameter_collection Create a UMaterialParameterCollection asset.
material.authoring.create_post_process_material Create a UMaterial pre-configured for post-process effects (PostProcess domain, Opaque blend).
material.authoring.get_material_info Get information about a material.
material.authoring.get_material_instance_info Read parent + per-type overrides + inherited (parent default) values + the parent's parameter metadata.
material.authoring.get_material_node_details Get details about a specific material expression node
material.authoring.get_parameter_collection_info Return both parameter arrays of an MPC as JSON.
material.authoring.remove_collection_parameter Drop a parameter from an MPC's scalar or vector array.
material.authoring.set_blend_mode Set the blend mode on a material (Opaque, Masked, Translucent, etc.).
material.authoring.set_collection_parameter_default Overwrite an existing MPC parameter's default value.
material.authoring.set_light_function_atlas_compatible Set UMaterial::bForceCompatibleWithLightFunctionAtlas ("Compatible With Light Function Atlas") and report.
material.authoring.set_material_domain Set the material domain (Surface, DeferredDecal, LightFunction, Volume, PostProcess, UI).
material.authoring.set_material_instance_base_property_overrides Override base material properties (blend mode, shading model, two-sided, opacity mask clip value, ...).
material.authoring.set_material_instance_parameters Batch-apply scalar/vector/texture/staticSwitch overrides on a UMaterialInstanceConstant.
material.authoring.set_material_instance_parent Reassign the parent material of a UMaterialInstanceConstant.
material.authoring.set_material_layer_stack Populate a UMaterialExpressionMaterialAttributeLayers node's Layers/Blends arrays from asset paths.
material.authoring.set_scalar_parameter_value Override a named scalar parameter on a UMaterialInstanceConstant.
material.authoring.set_shading_model Set the shading model on a material (Unlit, DefaultLit, Subsurface, ClearCoat, Hair, etc.).
material.authoring.set_static_switch_parameter_value Override a static switch parameter on a UMaterialInstanceConstant.
material.authoring.set_texture_parameter_value Override a named texture parameter on a UMaterialInstanceConstant by pointing it at a UTexture asset path.
material.authoring.set_texture_sample_texture Assign or change the texture on an existing TextureSample / TextureSampleParameter2D node.
material.authoring.set_two_sided Toggle the bTwoSided flag on a UMaterial so it renders both faces (foliage / cloth / decals).
material.authoring.set_vector_parameter_value Override a named FLinearColor / vector parameter on a UMaterialInstanceConstant.
material.authoring.use_material_function Insert a material function call node into a material's graph, exposing the function's inputs/outputs as wireable pins.
material.compile_mgir Compile MGIR text into material graph assets, applying any property Name.
material.decompile_mgir Decompile a material or material function asset into MGIR text.
material.graph.add_expression Add a material expression node identified by class name to a UMaterial or UMaterialFunction graph.
material.graph.add_node Add a UMaterialExpression node of the requested type to a UMaterial or UMaterialFunction graph at the given (x, y).
material.graph.add_texture_sample Add a UMaterialExpressionTextureSample referencing the given UTexture asset.
material.graph.break_connections Disconnect every wire on a material expression node, or just the named pin.
material.graph.connect_nodes Wire one expression's output to another's named input pin, in a UMaterial or UMaterialFunction graph.
material.graph.create_nodes Add many material expression nodes in a single call by passing an array.
material.graph.get_node_details Return detailed info (class, position, pin connectivity, parameter name) for one node.
material.graph.list_expression_types List all UMaterialExpression subclasses with class name, category, pin layout.
material.graph.remove_node Delete a material expression from a UMaterial or UMaterialFunction graph by GUID, name, or path.
material.graph.search_expression_types Keyword-ranked search across UMaterialExpression subclasses.
niagara: Niagara VFX asset inspection and authoring (59 operations, Core)
Operation What it does
niagara.add_data_interface Add a data interface entry to a Niagara parameter store.
niagara.add_emitter Add one existing UNiagaraEmitter asset to a UNiagaraSystem as an inherited child of that asset.
niagara.add_event_handler Add a particle event handler to a Niagara emitter.
niagara.add_module Add one Niagara stack module to a graph.
niagara.add_parameter Add one Niagara parameter-store value.
niagara.add_renderer Add one Niagara renderer to an emitter.
niagara.add_simulation_stage Add a simulation stage to a Niagara emitter.
niagara.apply_issue_fix Apply one engine stack-issue fix (issueId/fixId from niagara.list_stack_issues).
niagara.audit_level Sweep every LIVE Niagara system in the level ONCE and report the ones that are fatal on their next tick.
niagara.bind_curve_asset Bind a UCurveFloat / UCurveLinearColor asset to a Niagara curve data interface.
niagara.clear_module_overrides Remove all override-pin inputs and reset all non-default static-switch caller pins for a given stack module.
niagara.compile Compile a Niagara system or emitter asset.
niagara.compile_status Return a compact, non-blocking compile state for a Niagara system or emitter asset.
niagara.connect_pin Connect one Niagara graph pin pair.
niagara.create_emitter Create an empty UNiagaraEmitter asset.
niagara.create_module_script Create a standalone Niagara module script whose body is one CustomHlsl node.
niagara.create_ribbon Spawn a ribbon/beam ANiagaraActor configured with the engine's stock ribbon emitter for quick lasers / trails.
niagara.create_system Create an empty UNiagaraSystem asset.
niagara.decompile_model Decompile a Niagara system or emitter asset into the compact semantic Niagara model JSON.
niagara.decompile_nir Decompile a Niagara System / Emitter / Module Script to NIR text (v1a: System+Emitter shell).
niagara.disconnect_pin Disconnect one Niagara graph pin pair.
niagara.get_compiled_script Read what the last compile produced for each script of a Niagara system, emitter or standalone script asset.
niagara.get_curve_keys Read the keys of an inline Niagara curve data interface, addressed by parameter store or by stack module input.
niagara.graph.connect_pins Wire two pins on Niagara script-graph nodes (UNiagaraNode).
niagara.graph.create_node Create a new node in a Niagara script graph.
niagara.graph.get Read Niagara graph metadata, nodes, pins, links, and function-call script references for a system, emitter.
niagara.graph.list_node_types Enumerate UNiagaraNode subclasses and their payload kinds.
niagara.graph.remove_node Delete a node from a Niagara script graph by id, breaking any incident connections.
niagara.graph.search_ops Search the Niagara op registry by name/category/keywords.
niagara.inspect Inspect a Niagara system, emitter, or script asset using the same structured aspects emitted by asset.dump.
niagara.list_orphan_data_interfaces List the resolved data interfaces a Niagara system's compiled scripts no longer reference.
niagara.list_stack_issues List the Niagara editor stack's own issues for a system (what the stack panel flags), each with an issueId.
niagara.modify_parameter Set a user-exposed parameter on a spawned ANiagaraActor's component (runtime override).
niagara.move_module Move one Niagara stack module.
niagara.move_renderer Move one Niagara renderer from index to toIndex.
niagara.refresh_emitter Merge changes made to a parent emitter asset into the UNiagaraSystem handles that inherit from it.
niagara.remove_data_interface Remove a Niagara data interface entry by parameter name.
niagara.remove_emitter Remove an emitter handle from a UNiagaraSystem by Guid or name.
niagara.remove_event_handler Remove a Niagara emitter event handler by id or index.
niagara.remove_module Remove one Niagara stack module.
niagara.remove_orphan_data_interfaces Remove the resolved data interfaces a Niagara system's compiled scripts no longer reference.
niagara.remove_parameter Remove one Niagara parameter-store value.
niagara.remove_renderer Remove one Niagara renderer by index.
niagara.remove_simulation_stage Remove a Niagara simulation stage by id or index.
niagara.rename_parameter Rename a Niagara user parameter through exported UE APIs.
niagara.reset_module_input Reset one Niagara module input override back to its default.
niagara.search_modules Search Niagara module scripts by usage, stage, and keywords.
niagara.set_curve_keys Replace the keys on an inline Niagara curve data interface.
niagara.set_module_input Set one Niagara module input value.
niagara.set_module_script Swap the script asset behind an existing Niagara stack module entry.
niagara.set_parameter Set one Niagara parameter-store value.
niagara.set_pin_default Set one Niagara graph pin default value.
niagara.set_property Set one reflected property on a resolved Niagara target.
niagara.set_scalability_property Set a scalability override field on the system or a per-quality emitter override.
niagara.set_stack_enabled Enable or disable one Niagara stack module entry.
niagara.set_static_switch Set the resolved value of a static switch input on a stack module.
niagara.simulate Run a Niagara system in a private preview world for a bounded number of fixed steps and report each emitter's.
niagara.spawn_actor Spawn an ANiagaraActor in the active world that plays the given UNiagaraSystem.
niagara.validate Validate a Niagara system, emitter, or script asset and return structured issues.
lighting: Configure level lighting systems and light actors, including spawned lights, skylight setup, exposure (13 operations, Core)
Operation What it does
lighting.build_lighting Build/bake lighting for the current level
lighting.configure_shadows Set r.Shadow.Virtual.Enable.
lighting.create_lighting_enabled_level Create a new level with basic directional and sky lighting
lighting.create_lightmass_volume Create a Lightmass Importance Volume with real box brush geometry.
lighting.ensure_single_sky_light Ensure only one sky light exists, removing duplicates
lighting.list_light_types List all available light types
lighting.set_ambient_occlusion Configure ambient occlusion settings via a PostProcessVolume.
lighting.set_exposure Configure auto-exposure settings via a PostProcessVolume
lighting.setup_global_illumination Configure global illumination method
lighting.setup_light_shafts Set bEnableLightShaftBloom and/or bEnableLightShaftOcclusion on a directional light.
lighting.setup_volumetric_fog Enable volumetric fog on the level's ExponentialHeightFog, spawning one if the level has none.
lighting.spawn_light Spawn a light actor (point, directional, spot, rect, sky, or custom).
lighting.spawn_sky_light Spawn a sky light actor.
post_process: Typed setters for the most-used FPostProcessSettings knobs on an unbound APostProcessVolume (6 operations, Core)
Operation What it does
post_process.set_anti_aliasing Configure anti-aliasing via CVars (no per-volume override exists in FPostProcessSettings).
post_process.set_bloom Set bloom settings on the unbound PostProcessVolume.
post_process.set_color_grading Set white balance and global color-grading values on the unbound PostProcessVolume.
post_process.set_lumen_gi Toggle Lumen Global Illumination + tune the per-volume Lumen GI knobs.
post_process.set_lumen_reflections Toggle Lumen reflections + tune per-volume Lumen reflection knobs.
post_process.set_motion_blur Configure motion blur on the unbound PostProcessVolume.
rendering: Typed read/write surface for URendererSettings (4 operations, Core)
Operation What it does
rendering.get_project_settings Read URendererSettings UPROPERTYs (DefaultEngine.ini → [/Script/Engine.RendererSettings])
rendering.set_dynamic_gi_method Set GI method on URendererSettings (with optional persistence + live CVar mirror)
rendering.set_lumen_method Set the highest-traffic Lumen fields with persistence (UPROPERTY-backed)
rendering.set_project_settings Write URendererSettings UPROPERTYs and (optionally) persist to DefaultEngine.ini
render: Rendering and viewport capture helpers for editor-visible assets and levels (12 operations, Core)
Operation What it does
render.attach_render_target_to_volume Attach a render target to a post process volume via material
render.capture_actor_preview Capture ONE actor, framed to its own component bounds, as an exact-size PNG without placing anything in the level.
render.capture_animation_preview Capture a skinned mesh IN ISOLATION at one or more instants of an animation.
render.capture_annotated Capture a viewport.
render.capture_asset_preview Open an asset editor preview viewport and capture it as an exact-size PNG without spawning the asset into the level.
render.capture_mesh Capture a Static Mesh or Skeletal Mesh into a private transient preview scene as an exact-size PNG.
render.capture_open_level Capture the active opened Level Editor viewport from a caller-specified camera as an exact-size PNG.
render.capture_ortho_tiles Render the open level orthographically over a world extent.
render.create_render_target Create a render target asset
render.detect_z_fighting Detect z-fighting in the current level from one camera and return an affected-pixel count.
render.lumen_update_scene Trigger a Lumen scene recapture
render.nanite_rebuild_mesh Enable Nanite and rebuild a static mesh
image: Working from a reference image (3 operations, Core)
Operation What it does
image.annotate Draw a world-aligned grid, crosshairs, boxes and labels onto an image or one of its tiles.
image.compare Write a side-by-side and a per-channel difference composite for two images, with measured difference statistics.
image.tile Cut an image file into a georeferenced N x M tile grid.
camera: Give an agent multi-angle "eyes" on the scene by posing the live Level Editor viewport and reading back a PNG (3 operations, Core)
Operation What it does
camera.animation_shots Capture a frame burst of a placed, animated skeletal mesh.
camera.frame_actor Frame one subject from a given azimuth/elevation and capture a PNG, fitting its bounds to the FOV.
camera.orbit_shots Capture a set of shots around a placed actor, a world point.
effect: Runtime/editor preview helpers for transient visual effects in the active world (10 operations, Core)
Operation What it does
effect.activate_niagara Activate a Niagara system on an actor.
effect.advance_simulation Advance Niagara simulation by bounded steps and report the actual simulated duration
effect.cleanup Remove actors whose label starts with a filter string
effect.clear_debug_shapes Clear all persistent debug shapes
effect.deactivate_niagara Deactivate a Niagara system on an actor.
effect.draw_debug_shape Draw a debug shape in the editor viewport
effect.list_debug_shapes List available debug shape types
effect.set_niagara_parameter Set a parameter on a Niagara component
effect.spawn_niagara Spawn and activate a compiled Niagara system, then report the measured component state
effect.step_and_capture Reset and activate a placed Niagara system, settle viewport exposure, freeze editor-world time.
mrq: Drive Movie Render Queue (8 operations, Core)
Operation What it does
mrq.clear_queue Remove every job from the editor-global MoviePipeline queue.
mrq.create_job Queue a MoviePipeline render job (sequence + level + optional preset).
mrq.create_preset Create and save a new UMoviePipelinePrimaryConfig preset asset holding exactly the settings named.
mrq.list_jobs Enumerate the editor-global MoviePipeline queue, including each job's identity.
mrq.list_presets Enumerate UMoviePipelinePrimaryConfig preset assets in the project for client discovery.
mrq.remove_job Remove one job from the editor-global MoviePipeline queue by its current positional index.
mrq.run_jobs Execute the current MoviePipeline queue using the requested executor (default: UMoviePipelinePIEExecutor).
mrq.set_preset_settings Change values on an existing UMoviePipelinePrimaryConfig preset asset and save it.

Animation & rigging

animation: Skeletal animation convenience helpers for Animation Blueprints, AnimSequences, AnimMontages, Blend Spaces (80 operations, Core)
Operation What it does
animation.add_notify Add a single AnimNotify event to an AnimSequence at a given time.
animation.authoring.add_aim_offset_sample Add an animation sample to an aim offset
animation.authoring.add_blend_node Add a blend node to an animation blueprint
animation.authoring.add_blend_sample Add an animation sample to a blend space
animation.authoring.add_bone_track Add a bone track to an animation sequence
animation.authoring.add_cached_pose Add a save cached pose node to an animation blueprint
animation.authoring.add_composite_segment Append an animation segment to a UAnimComposite track and update the composite length.
animation.authoring.add_graph_node Generic typed creator for any UAnimGraphNode_* class on an AnimBlueprint graph.
animation.authoring.add_ik_chain Add a retarget chain to an IK Rig (UIKRigDefinition).
animation.authoring.add_layered_blend_per_bone Add a layered blend per bone node to an animation blueprint
animation.authoring.add_modify_bone Add a UAnimGraphNode_ModifyBone skeletal-control node with typed transform spaces and modification modes
animation.authoring.add_montage_notify Add a notify to a montage
animation.authoring.add_montage_section Add a section to an animation montage
animation.authoring.add_montage_slot Add an animation to a montage slot
animation.authoring.add_notify Add an anim notify to an animation asset
animation.authoring.add_notify_state Add an anim notify state to an animation asset
animation.authoring.add_slot_node Add a slot node to an animation blueprint
animation.authoring.add_state Add a state to a state machine in an animation blueprint
animation.authoring.add_state_alias Add a UAnimStateAliasNode to a state machine (imperative peer to AGIR state_alias)
animation.authoring.add_state_machine Add a state machine to an animation blueprint
animation.authoring.add_sync_marker Add a sync marker to an animation sequence
animation.authoring.add_transition Add a transition between two states in a state machine
animation.authoring.add_two_bone_ik Add a UAnimGraphNode_TwoBoneIK skeletal-control node with typed bone targets.
animation.authoring.bind_player_asset Bind a UAnimationAsset (Sequence/BlendSpace/PoseAsset/AimOffset) to an asset-player AnimGraph node.
animation.authoring.create_aim_offset Create an aim offset blend space
animation.authoring.create_anim_blueprint Create a UAnimBlueprint asset bound to a Skeleton (authoring path with explicit parentClass override).
animation.authoring.create_animation_sequence Create an empty UAnimSequence asset bound to a Skeleton with caller-specified length and frame rate.
animation.authoring.create_blend_space_1d Create a 1D blend space asset
animation.authoring.create_blend_space_2d Create a 2D blend space asset
animation.authoring.create_composite Create an empty UAnimComposite asset bound to a Skeleton.
animation.authoring.create_control_rig Create a UControlRigBlueprint asset (procedural rig graph).
animation.authoring.create_ik_retargeter Create an IK Retargeter asset
animation.authoring.create_ik_rig Create a UIKRigDefinition asset (modern IK + retargeting source).
animation.authoring.create_montage Create a new UAnimMontage asset bound to a Skeleton with one slot and an empty 'Default' section.
animation.authoring.create_pose_library Create a pose library (pose asset)
animation.authoring.get_animation_info Get detailed information about an animation asset
animation.authoring.get_curve_keys Read every key (time, frame, value, interpolation, tangents) of Float curves on an AnimSequence.
animation.authoring.link_sections Link two montage sections (set next section)
animation.authoring.list_curves List Float and Transform curves on an animation sequence
animation.authoring.list_notifies List anim notifies on an animation sequence or montage
animation.authoring.list_sync_markers List sync markers on an animation sequence
animation.authoring.remove_curve Remove whole Float or Transform curves from an AnimSequence as one undoable edit.
animation.authoring.remove_curve_key Remove keys, selected by frame or time, from one Float curve of an AnimSequence as one undoable edit.
animation.authoring.remove_sync_marker Remove every occurrence of a named sync marker from an animation sequence
animation.authoring.rename_curve Rename a Float or Transform curve on an AnimSequence, keeping its keys.
animation.authoring.set_additive_settings Configure additive animation settings on a sequence
animation.authoring.set_anim_graph_node_value Set a property value on an AnimGraph node by name
animation.authoring.set_anim_graph_pin_exposed Toggle 'Expose as Pin' on an AnimGraph node's optional property (ShowPinForProperties entry).
animation.authoring.set_anim_graph_pins_exposed Batch variant of set_anim_graph_pin_exposed - applies one Modify+Save after iterating the pins[] array.
animation.authoring.set_blend_in Set blend-in settings for a montage
animation.authoring.set_blend_out Set blend-out settings for a montage
animation.authoring.set_bone_track_keys Write dense local-space position, quaternion rotation, and scale keys to one AnimSequence bone track.
animation.authoring.set_curve_key Set a curve key value at a specific frame
animation.authoring.set_curve_keys Write many keys to one Float curve of an AnimSequence as one undoable edit.
animation.authoring.set_interpolation_settings Configure interpolation settings on a blend space
animation.authoring.set_layered_blend_layers Rewrite the LayerSetup / BlendMode / blend-mask asset on an existing UAnimGraphNode_LayeredBoneBlend
animation.authoring.set_notify_state_property Set a reflected property value on an anim notify-state instance
animation.authoring.set_retarget_chain_mapping Map a source retarget chain to a target chain in an IK Retargeter (UIKRetargeterController::SetSourceChain).
animation.authoring.set_root_motion_settings Configure root motion settings on an animation sequence
animation.authoring.set_section_timing Update section timing in a montage
animation.authoring.set_sequence_length Resize an existing AnimSequence by setting frame count and frame rate.
animation.authoring.set_state_machine_entry Rewires a state machine's entry node to the named state
animation.authoring.set_sync_group Set the sync group and role on an asset-player AnimGraph node via FAnimNode_AssetPlayerBase
animation.authoring.set_sync_markers Replace all sync markers on an animation sequence atomically
animation.authoring.set_transition_rules Update transition rules between states in a state machine
animation.authoring.set_transition_settings Update advanced transition properties (logic type, blend mode, blend curve, disabled)
animation.check_morph_curves Audit whether animation curves will actually drive a skeletal mesh's morph targets.
animation.cleanup Bulk-delete animation assets by path.
animation.create_animation_asset Generic creator that produces an empty AnimSequence or AnimMontage bound to a Skeleton.
animation.create_animation_bp Create an Animation Blueprint asset bound to a Skeleton (or to the skeleton extracted from a SkeletalMesh).
animation.create_blend_space Create a Blend Space asset (1D or 2D) bound to a target Skeleton.
animation.create_state_machine Add a state machine sub-graph (with states and transitions) to an existing Animation Blueprint's AnimGraph.
animation.describe_sequence Return read-only AnimSequence metadata using the same JSON shape as anim_sequence.json asset dumps.
animation.get_live_pose Read the CURRENT evaluated pose of a placed skeletal mesh component (PIE or editor world).
animation.list_graph_nodes Enumerate every UAnimGraphNode_* class registered in the editor.
animation.measure_motion Numeric pass/fail gate over an AnimSequence's authored motion.
animation.play_montage Trigger AnimMontage playback on a placed actor's first SkeletalMeshComponent through its AnimInstance.
animation.retarget_animations Retarget AnimSequences from sourceMesh to targetMesh through an IK Retargeter.
animation.search_graph_nodes Rank UAnimGraphNode_* classes by keyword match across className / category / description.
animation.setup_retargeting Duplicate AnimSequence assets and assign the target Skeleton pointer to each copy.
anim: The anim namespace contains two unrelated text families (5 operations, Core)
Operation What it does
anim.compile Compile a .pwanim source file into exactly one UAnimSequence.
anim.compile_agir Compile AGIR text into a target UAnimBlueprint.
anim.decompile_agir Decompile a UAnimBlueprint asset into AGIR text.
anim.describe_ops Emit the .pwanim key vocabulary and the timebase, bone-header and sync-marker parameter sets.
anim.validate Parse and compile a .pwanim document without writing an asset.
controlrig: Text-IR compile and decompile for UControlRigBlueprint RigVM graphs (2 operations, Core)
Operation What it does
controlrig.compile_crir Compile CRIR text into a target UControlRigBlueprint.
controlrig.decompile_crir Decompile a UControlRigBlueprint asset into CRIR text.
skeleton: Author USkeleton, SkeletalMesh, PhysicsAsset, sockets, virtual bones, morph targets, cloth, skin weights (46 operations, Core)
Operation What it does
skeleton.add_bone Append a new bone to a USkeleton's reference skeleton, optionally as a child of an existing bone.
skeleton.add_physics_body Create a new physics body on a UPhysicsAsset for the given bone.
skeleton.add_physics_constraint Create a joint constraint between two existing physics bodies in a UPhysicsAsset, identified by bone name pair.
skeleton.assign_cloth_asset_to_mesh Attach an existing UClothingAsset (named by clothAssetName) to a specific section of a SkeletalMesh.
skeleton.audit_skin_weights Numeric pass/fail gate over a SkeletalMesh's BASE skinning.
skeleton.auto_skin_weights NOT SUPPORTED through this RPC.
skeleton.bind_cloth_to_skeletal_mesh Bind an ALREADY-EXISTING UClothingAsset.
skeleton.compile Compile a .pwskel source file into exactly one USkeleton asset.
skeleton.configure_constraint_limits Set angular swing/twist and linear translation limits on an existing physics constraint between two bones.
skeleton.configure_physics_body Update settings on an existing physics body in a UPhysicsAsset.
skeleton.configure_socket Update an existing USkeletalMeshSocket's parent bone, relative transform, or scale.
skeleton.copy_weights Transfer skin weights from a source SkeletalMesh to a target SkeletalMesh by closest vertex.
skeleton.create_cloth_from_section Author a NEW UClothingAsset from a SkeletalMesh section (editor 'Create Clothing Data from Section').
skeleton.create_morph_target Create a UMorphTarget on a SkeletalMesh (the asset that holds per-vertex deltas for blendshapes / facial expressions).
skeleton.create_physics_asset Create a new UPhysicsAsset (collision capsules + joint constraints) for a SkeletalMesh OR a bare authored.
skeleton.create_skeleton Create a USkeleton asset.
skeleton.create_socket Add a USkeletalMeshSocket at a relative offset from a bone, as an attachment anchor for weapons, props or particles.
skeleton.create_virtual_bone Create a virtual bone.
skeleton.delete_morph_target Delete a UMorphTarget from a SkeletalMesh by name.
skeleton.delete_socket Remove a USkeletalMeshSocket by name.
skeleton.delete_virtual_bone Remove a virtual bone from a USkeleton by name.
skeleton.describe_mesh Return read-only SkeletalMesh metadata using the same JSON shape as skeletal_mesh.json asset dumps.
skeleton.describe_ops Emit the .pwskel vocabulary from the same parser table that validates bone declarations.
skeleton.describe_skin_weights Read-only readback of BOTH halves of a SkeletalMesh's skinning.
skeleton.edit_mesh_bones Edit the bones of a SkeletalMesh itself.
skeleton.get_bone_transform Read the reference (bind) pose transform of a single bone by name.
skeleton.get_info Read summary metadata about a USkeleton: bone count, socket count, virtual bone count, plus the asset path.
skeleton.get_physics_asset_info Read summary metadata about a UPhysicsAsset.
skeleton.list_bones Enumerate bones in a USkeleton's reference skeleton, returning name, index, parent index/name.
skeleton.list_morph_targets Enumerate every UMorphTarget on a SkeletalMesh by name, with each morph target's vertex-delta count.
skeleton.list_physics_bodies Enumerate physics bodies in a UPhysicsAsset, returning per-body bone name.
skeleton.list_sockets Enumerate every USkeletalMeshSocket visible on a Skeleton.
skeleton.list_virtual_bones Enumerate every virtual bone defined on a USkeleton.
skeleton.normalize_weights Renormalize each vertex's influences so they sum to 1.0 and write the result into a NAMED ALTERNATE.
skeleton.prune_weights Drop bone influences below a weight threshold, renormalize the survivors.
skeleton.remove_bone Delete a bone from a USkeleton's reference skeleton.
skeleton.remove_physics_body Delete a physics body from a UPhysicsAsset by bone name.
skeleton.rename_bone Rename a bone on a USkeleton.
skeleton.set_bone_parent Reparent a bone to a different parent within the skeleton hierarchy.
skeleton.set_bone_transform Overwrite the reference (bind) pose transform of a bone in a USkeleton.
skeleton.set_morph_target_deltas Write per-vertex position (and optional normal) deltas into an existing UMorphTarget.
skeleton.set_morph_target_value Drive a morph target weight (0..1) on a USkeletalMeshComponent of a level actor.
skeleton.set_physics_asset Assign a UPhysicsAsset to a SkeletalMesh's PhysicsAsset slot.
skeleton.set_preview_mesh Set the USkeletalMesh a USkeleton opens with in its preview viewport.
skeleton.set_vertex_weights Overwrite the influences of named vertices in a NAMED ALTERNATE skin-weight profile (default CustomWeights).
skeleton.validate Parse a .pwskel document without creating or writing a USkeleton asset.
pose_search: Author UPoseSearchSchema and UPoseSearchDatabase assets used by Motion Matching AnimGraph nodes (3 operations, Core)
Operation What it does
pose_search.add_database_animation Append a UAnimSequence entry to an existing UPoseSearchDatabase.
pose_search.create_database Create a UPoseSearchDatabase asset, bind a schema, and optionally add sequence entries.
pose_search.create_schema Create a UPoseSearchSchema asset, bind its skeleton, and append feature channels of any kind.
physics: Configure physics assets and ragdoll behavior (6 operations, Core)
Operation What it does
physics.activate_ragdoll Activate or deactivate ragdoll physics on a named actor
physics.get_project_settings Read UPhysicsSettings config UPROPERTYs (DefaultEngine.ini -> [/Script/Engine.PhysicsSettings]).
physics.set_project_settings Write UPhysicsSettings config UPROPERTYs (with PostEditChange) and optionally persist to DefaultEngine.ini.
physics.set_surface_types Register EPhysicalSurface names (UPhysicsSettings::PhysicalSurfaces).
physics.setup_physics_simulation Create a physics asset for a skeletal mesh and optionally assign it
physics.setup_ragdoll Enable ragdoll physics on a named actor's skeletal mesh
sequencer: Author and play back ULevelSequence assets (56 operations, Core)
Operation What it does
sequence.add_keyframe Add a keyframe to a track in a level sequence
sequencer.add_actor Add a single actor - or one named component of it - to a level sequence as a possessable binding.
sequencer.add_actors Add multiple actors - or the same named component of each of them - to a level sequence as possessable bindings.
sequencer.add_animation_track Add a UMovieSceneSkeletalAnimationTrack to a level sequence binding so the bound skeletal mesh actor plays.
sequencer.add_audio_track Add a UMovieSceneAudioTrack to a level sequence.
sequencer.add_camera Spawn a camera and bind it to a level sequence
sequencer.add_camera_rig_crane Bind an ACameraRig_Crane to a level sequence.
sequencer.add_camera_rig_rail Bind an ACameraRig_Rail to a level sequence.
sequencer.add_camera_track Add a UMovieSceneCameraCutTrack to a level sequence so it switches between cameras during playback.
sequencer.add_controlrig_track Add a Control Rig track to a skeletal-mesh binding (FK fallback when no rigClass given).
sequencer.add_keyframe Insert a keyframe on an existing float track in a ULevelSequence at the given seconds-based time.
sequencer.add_keyframes Write many transform keys onto ONE binding in one all-or-nothing, single-undo step.
sequencer.add_level_visibility_track Add a UMovieSceneLevelVisibilityTrack section to a level sequence.
sequencer.add_section Add a section to a track in a level sequence
sequencer.add_spawnable_from_class Add a spawnable object to a level sequence from a class name
sequencer.add_sub_sequence Add a sub-sequence section to a parent level sequence's sub-track
sequencer.add_track Add a track to a binding in a level sequence.
sequencer.add_transform_track Add a UMovieScene3DTransformTrack to a level sequence binding so the bound actor's location/rotation/scale.
sequencer.bake_control_space Bake one Control Rig control into a target parent space over a display-frame range while preserving evaluated.
sequencer.bake_to_controlrig Bake a skeletal binding's evaluated animation into an editable Control Rig track.
sequencer.create Create a new level sequence asset.
sequencer.export_anim_sequence Bake a skeletal binding's evaluated performance out to an AnimSequence asset.
sequencer.export_fbx Export a Level Sequence's bound-object animation (transform + animated property tracks) to an external .fbx.
sequencer.get_binding_transform Evaluate a binding's transform track at a display-rate frame and return the composited location/rotation/scale.
sequencer.get_bindings List every object binding in a level sequence, with its place in the binding hierarchy.
sequencer.get_camera_cut_track Get the camera-cut track in a level sequence
sequencer.get_control_value Read a Control Rig control's keyed channel value(s) at a display-rate frame.
sequencer.get_control_values Read many Control Rig controls at many display frames.
sequencer.get_properties Get playback range and frame rate of a level sequence
sequencer.import_fbx Import animation from an external .fbx file onto a Level Sequence's object bindings.
sequencer.key_controls Key Control Rig controls at a frame.
sequencer.list_controls List the Control Rig controls (name, type) on a binding's Control Rig track.
sequencer.list_sections List all sections in a level sequence
sequencer.list_track_types List all available sequencer track types
sequencer.list_tracks List all tracks in a level sequence
sequencer.manage_track Add or remove a float-property track on an existing sequencer binding.
sequencer.measure_motion Measure the MOTION of one binding's 3D transform track.
sequencer.pause Pause the currently playing level sequence
sequencer.pin_controls Pin Control Rig controls (a planted foot, a hand on a rail) at a world transform over a display-frame range.
sequencer.play Open and play a level sequence in the editor
sequencer.remove_actors Remove actor bindings from a level sequence
sequencer.remove_track Remove a track from a level sequence
sequencer.repoint_actor Replace the locator for one existing top-level possessable actor while preserving its binding GUID and authored data
sequencer.set_control_keys Key many Control Rig controls at many display frames in one undoable call, in local (channel values) or world space.
sequencer.set_display_rate Set the display rate (FPS) of a level sequence
sequencer.set_playback_speed Set playback speed on the currently open sequencer
sequencer.set_playhead Move the Sequencer playhead to an exact position so the editor evaluates that frame in place, without entering PIE.
sequencer.set_properties Set playback range, frame rate, and other properties on a level sequence
sequencer.set_sub_section_range Mutate the range (and optionally time-scale) of an existing sub-section by GUID
sequencer.set_tick_resolution Set the tick resolution of a level sequence
sequencer.set_track_locked Lock or unlock a track's sections in a level sequence
sequencer.set_track_muted Mute or unmute a track in a level sequence
sequencer.set_track_solo Solo a track (simulated by muting all others)
sequencer.set_view_range Set the view range of a level sequence in the editor
sequencer.set_work_range Set the work range of a level sequence
sequencer.stop Stop playback and reset to start

AI & gameplay

ai: Create and configure AI assets, controller Blueprints, and AI-related components (33 operations, Core)
Operation What it does
ai.add_blackboard_key Add a key to a Blackboard asset
ai.add_composite_node Add a composite node to a Behavior Tree
ai.add_decorator Add a decorator to a Behavior Tree
ai.add_eqs_context Deprecated alias for eqs.set_context_class
ai.add_eqs_generator Deprecated alias for eqs.add_generator
ai.add_eqs_test Deprecated alias for eqs.add_test
ai.add_mass_spawner Not implemented.
ai.add_service Add a service to a Behavior Tree
ai.add_smart_object_component Add a Smart Object component to a blueprint
ai.add_smart_object_slot Add a slot to a Smart Object Definition
ai.add_state_tree_state Add a state to a State Tree (UE 5.3+)
ai.add_state_tree_transition Add a transition between states in a State Tree (UE 5.3+)
ai.add_task_node Add a task node to a Behavior Tree
ai.assign_behavior_tree Assign a Behavior Tree to an AI Controller blueprint
ai.assign_blackboard Assign a Blackboard asset to an AI Controller blueprint
ai.configure_mass_entity Configure a Mass Entity Config asset
ai.configure_slot_behavior Configure behavior for a Smart Object slot
ai.configure_test_scoring Deprecated alias for eqs.set_test_scoring
ai.create_blackboard Create a Blackboard asset (alias for create_blackboard_asset)
ai.create_blackboard_asset Create a new Blackboard data asset
ai.create_eqs_query Deprecated alias for eqs.create
ai.create_mass_entity_config Create a new Mass Entity Config asset
ai.create_nav_modifier Create a navigation modifier component on a blueprint
ai.create_smart_object_definition Create a new Smart Object Definition asset
ai.create_state_tree Create a new State Tree asset (UE 5.3+)
ai.get_ai_info Get information about AI assets (controllers, behavior trees, blackboards, EQS)
ai.get_runtime_state Read the live state of a RUNNING AI during PIE.
ai.run_behavior_tree Assign a Behavior Tree to run on an AI Controller (alias for assign_behavior_tree)
ai.set_ai_movement Configure AI movement parameters on a blueprint's CharacterMovementComponent
ai.set_ai_perception Configure AI perception (sight, hearing, damage) on an AI Controller blueprint
ai.set_blackboard_value Set a default value on a Blackboard key (UE 5.5+ for value setting)
ai.set_key_instance_synced Set instance sync flag on a Blackboard key
ai.stop_behavior_tree Remove behavior tree assignment from an AI Controller
behavior_tree: Author and inspect Behavior Tree assets and their editor graph structure (13 operations, Core)
Operation What it does
behavior_tree.add_node Add a node to a Behavior Tree graph
behavior_tree.attach_decorator Attach a decorator subnode to a Behavior Tree task or composite graph node
behavior_tree.attach_service Attach a service subnode to a Behavior Tree task or composite graph node
behavior_tree.break_connections Break all connections on a Behavior Tree node
behavior_tree.connect_nodes Connect two nodes in a Behavior Tree graph
behavior_tree.create Create a new Behavior Tree asset.
behavior_tree.create_decorator_blueprint Create a UBTDecorator_BlueprintBase Blueprint asset.
behavior_tree.create_service_blueprint Create a UBTService_BlueprintBase Blueprint asset.
behavior_tree.create_task_blueprint Create a UBTTask_BlueprintBase Blueprint asset.
behavior_tree.decompile Decompile a Behavior Tree or Blackboard asset into BTIR text.
behavior_tree.remove_node Remove a node from a Behavior Tree graph
behavior_tree.set_child_order Set the execution order of a composite's children.
behavior_tree.set_node_properties Set properties on a Behavior Tree node
eqs: Author Environment Query System (UEnvQuery) assets (8 operations, Core)
Operation What it does
eqs.add_generator Add a persisted generator option to an EQS Query
eqs.add_test Add a persisted test under an EQS generator option
eqs.create Create a new EQS Query asset
eqs.remove_test Remove a test from an EQS generator option; later test indices shift down by one
eqs.set_context_class Assign a UEnvQueryContext subclass to a generator or test context property
eqs.set_test_filter Set EQS test filter fields
eqs.set_test_purpose Change an existing EQS test's purpose (filter, score, or filter_and_score)
eqs.set_test_scoring Set EQS test scoring fields; curve is rejected on UE 5.6
state_tree: Author UStateTree assets (5 operations, Core)
Operation What it does
state_tree.add_condition Add a native StateTree condition node to a state's enter conditions or to a transition.
state_tree.add_evaluator Add a native StateTree evaluator node by UScriptStruct name or path.
state_tree.add_task Add a native StateTree task node to a state by UScriptStruct name or path.
state_tree.bind_property Add an editor property binding between two StateTree node property paths.
state_tree.set_transition_trigger Set an existing StateTree transition trigger and optional OnEvent tag/payload.
gas: Create and wire Gameplay Ability System assets (27 operations, Core)
Operation What it does
gas.add_attribute Add a gameplay attribute to an AttributeSet blueprint
gas.add_effect_cue Add a gameplay cue to a GameplayEffect
gas.add_effect_execution_calculation Add an execution calculation to a GameplayEffect
gas.add_effect_modifier Add a modifier to a GameplayEffect
gas.add_tag_to_asset Add a gameplay tag to a GAS asset
gas.create_ability_set Create a data asset to hold granted abilities and effects
gas.create_attribute_set Create a new AttributeSet blueprint
gas.create_execution_calculation Create a GameplayEffectExecutionCalculation blueprint
gas.create_gameplay_ability Create a new GameplayAbility blueprint
gas.create_gameplay_cue_notify Create a gameplay cue notify blueprint (static or actor)
gas.create_gameplay_effect Create a new GameplayEffect blueprint
gas.get_gas_info Get GAS information about an asset
gas.set_ability_cooldown Set the cooldown gameplay effect for an ability
gas.set_ability_costs Set the cost gameplay effect for an ability
gas.set_ability_input Bind an input ID (and optional InputAction soft-ref) on a GameplayAbility blueprint CDO
gas.set_ability_tags Set gameplay tags on a GameplayAbility
gas.set_activation_policy Set the network execution policy for an ability
gas.set_attribute_base_value Set the base value of an attribute via reflection
gas.set_effect_duration Set the duration policy and magnitude for a GameplayEffect
gas.set_effect_period Configure periodic settings on a GameplayEffect (Period, ExecuteOnApplication, InhibitionPolicy)
gas.set_effect_stacking Configure stacking behavior for a GameplayEffect
gas.set_effect_tags Set granted tags on a GameplayEffect
gas.set_execution_capture Populate RelevantAttributesToCapture on a GameplayEffectExecutionCalculation blueprint CDO
gas.set_instancing_policy Set the instancing policy for an ability
gas.set_modifier_attribute Bind an existing GameplayEffect modifier to the attribute it modifies
gas.set_modifier_magnitude Set the magnitude of an existing modifier on a GameplayEffect
gas.set_modifier_magnitude_setbycaller Convert a modifier magnitude to SetByCaller (DataTag and/or DataName)
gameplay_tags: Authoring surface for the project's GameplayTagsManager registry and FGameplayTagQuery values on configured assets (6 operations, Core)
Operation What it does
gameplay_tags.add Add an explicit gameplay tag to an INI-backed tag source
gameplay_tags.add_source Add an INI gameplay tag source
gameplay_tags.build_query Build an FGameplayTagQuery from a recursive JSON expression tree and optionally write it into a target asset property
gameplay_tags.find_referencers List the saved packages that reference each gameplay tag (the check the engine runs before refusing a tag delete)
gameplay_tags.list List gameplay tags with source, comment, and explicitness metadata
gameplay_tags.remove Remove an explicit gameplay tag from an INI-backed tag source
character: Configure Character Blueprint components and movement behavior (13 operations, Core)
Operation What it does
character.add_custom_movement_mode Add a custom movement mode with state tracking variables
character.configure_camera_component Configure spring arm and camera on a character blueprint
character.configure_capsule_component Configure the capsule component on a character blueprint
character.configure_crouch Configure crouch parameters on a character blueprint
character.configure_footstep_fx Configure footstep visual/audio effect scaling
character.configure_jump Configure jump parameters on a character blueprint
character.configure_mesh_component Configure the skeletal mesh component on a character blueprint
character.configure_movement_speeds Configure various movement speeds on a character blueprint
character.configure_nav_movement Configure navigation movement properties
character.configure_rotation Configure rotation settings on a character blueprint
character.configure_sprint Configure sprint parameters with state variables
character.get_character_info Get information about a character blueprint
character.map_surface_to_sound Map a physical surface type to a footstep sound
game_framework: Configure Unreal gameplay framework classes and match rules (9 operations, Core)
Operation What it does
game_framework.configure_game_rules Configure game rules on a GameMode blueprint (max players, friendly fire, etc.)
game_framework.configure_player_start Configure player start points in the level
game_framework.configure_round_system Configure round-based gameplay on a GameMode blueprint
game_framework.configure_scoring_system Configure scoring system on a GameMode blueprint
game_framework.configure_spawn_system Configure spawn system on a GameMode blueprint
game_framework.configure_spectating Configure spectating on a GameMode blueprint
game_framework.configure_team_system Configure team system on a GameMode blueprint
game_framework.get_game_framework_info Get information about the current game framework setup
game_framework.set_respawn_rules Configure respawn rules on a GameMode blueprint
game_features (1 operation, Core)
Operation What it does
game_features.list List every registered Game Feature plugin with its URL and current lifecycle state.
interaction: Create and configure gameplay interaction surfaces on Blueprints and placed actors (9 operations, Core)
Operation What it does
interaction.add_destruction_component Add a destruction component with health variables to a Blueprint
interaction.add_interaction_events Add interaction event dispatchers to a Blueprint
interaction.configure_chest_properties Configure properties on a chest Blueprint
interaction.configure_door_properties Configure properties on a door Blueprint
interaction.configure_interaction_trace Configure interaction trace settings on a Blueprint
interaction.configure_interaction_widget Configure interaction widget on a Blueprint
interaction.configure_switch_properties Configure properties on a switch Blueprint
interaction.create_interaction_component Add an interaction sphere component to a Blueprint
interaction.get_interaction_info Get info about an interactable Blueprint or actor
session: Local-multiplayer PIE testing (4 operations, Core)
Operation What it does
session.add_local_player Add a local player to the active game instance
session.get_sessions_info Get current session and multiplayer status information
session.host_lan_server Host a LAN server on a specified map
session.remove_local_player Remove a local player from the active game instance
networking: Configure Blueprint replication, RPC functions, actor relevance, prediction (22 operations, Core)
Operation What it does
networking.add_network_prediction_data Add a replicated variable for network prediction data
networking.check_has_authority Check if an actor has authority
networking.check_is_locally_controlled Check if an actor/pawn is locally controlled
networking.configure_client_prediction Configure client-side prediction on a character blueprint
networking.configure_movement_prediction Configure movement prediction smoothing on a character blueprint
networking.configure_net_cull_distance Configure network cull distance on a blueprint
networking.configure_net_priority Configure network priority on a blueprint
networking.configure_net_update_frequency Configure network update frequency on a blueprint
networking.configure_replicated_movement Enable or disable movement replication on a blueprint
networking.configure_rpc_validation Clear an unsupported validation flag from a Blueprint RPC; enabling validation is refused
networking.configure_server_correction Configure server correction smoothing on a character blueprint
networking.create_rpc_function Create a new RPC function on a blueprint.
networking.get_networking_info Get networking information for a blueprint or actor
networking.set_always_relevant Set an actor blueprint as always relevant
networking.set_autonomous_proxy Configure autonomous proxy replication on replicated properties
networking.set_net_dormancy Set network dormancy mode on a blueprint
networking.set_only_relevant_to_owner Set an actor blueprint as only relevant to its owner
networking.set_owner Set or clear the owner of an actor in the world
networking.set_property_replicated Set a blueprint property as replicated or not
networking.set_replicated_using Set RepNotify function for a replicated property
networking.set_replication_condition Set the replication condition for a blueprint property
networking.set_rpc_reliability Set the reliability of an RPC function
vehicle: Author Chaos Vehicles assets (5 operations, Core)
Operation What it does
vehicle.create_wheel_asset Create a new UChaosVehicleWheel Blueprint asset.
vehicle.remove_wheel_setup Remove a FChaosWheelSetup entry by index from a UChaosWheeledVehicleMovementComponent.
vehicle.set_suspension Edit suspension fields on the wheel-asset CDO referenced by WheelSetups[idx].WheelClass.
vehicle.set_wheel_asset_property Write a single property on a wheel-asset CDO via reflection.
vehicle.set_wheel_setup Mutate or append a FChaosWheelSetup entry on a UChaosWheeledVehicleMovementComponent.
pcg: Author UPCGGraph assets and their node/edge structure (15 operations, Core)
Operation What it does
pcg.add_graph_parameter Add (upsert) a graph-level user parameter to a UPCGGraph with an optional initial value.
pcg.add_node Append a node to a UPCGGraph by settings-class path.
pcg.add_noise_filter Append a spatial or attribute noise node to a UPCGGraph.
pcg.add_slope_filter Append a normal-to-density (slope) filter node to a UPCGGraph with typed knobs.
pcg.add_subgraph Append a UPCGSubgraphSettings node referencing another UPCGGraph(Interface) asset.
pcg.connect_pins Wire a source output pin to a target input pin in a UPCGGraph.
pcg.create_graph Create a new UPCGGraph asset at the given content path.
pcg.decompile Decompile a UPCGGraph asset into PCGIR text.
pcg.generate Trigger PCG generation on a placed actor's UPCGComponent (adding one if absent, optionally assigning a graph).
pcg.inspect Read-side dump of a UPCGGraph: nodes (with class/position/pin labels) and edges.
pcg.list_graph_parameters List the graph-level user parameters of a UPCGGraph, each with name, type, and (for scalar types) current value.
pcg.remove_graph_parameter Remove a graph-level user parameter from a UPCGGraph by name.
pcg.remove_node Delete a node from a UPCGGraph (and its incident edges).
pcg.set_node_property Write one reflected property on a PCG node's UPCGSettings object.
pcg.set_self_pruning_settings Write typed knobs into a UPCGSelfPruningSettings node's nested Parameters struct.

Requirements

Unreal Engine 5.3-5.8 editor build with C++ plugin support, on Windows or Linux. Per-version notes and known engine-specific caveats are in docs/engine-version-support.md. The modules are editor-only and add nothing to your packaged game. PinWright enables the standard Epic engine plugins it integrates with (Niagara, ControlRig, GeometryScripting, PCG, Enhanced Input, GameplayAbilities and others; the full list is in PinWright.uplugin).

How it works

Your MCP client, such as Claude Code, Codex CLI, Cursor, Gemini CLI or VS Code Copilot, connects over one loopback MCP link with a bearer token to the Unreal Editor, where PinWright runs in process; the project comes back as text: BPIR, widget XML, MGIR and asset dumps

Your client posts an MCP request to the editor, PinWright runs it on the game thread, and the result comes back as text, or as a job ticket for long work. The plugin itself makes no network calls; what reaches a model provider is up to the assistant and model you choose, which can be local.

Under the hood, graphs are text. This is BPIR, the Blueprint IR, and the capture underneath is the graph blueprint.compile_bpir built from exactly these four lines. Decompiling returns the text, so you can compare two versions of a graph line by line.

entry custom_event AddPoints(int Points) {
    %new = call Add_IntInt(A: $Score, B: $Points)
    set Score = %new
    call_dispatcher OnScoreChanged(NewScore: %new)
}

Captured in the editor: the compiled event graph, with the AddPoints custom event wired through an Add node and Set Score into Call On Score Changed

Whole assets and whole folders convert the same way, which makes a project greppable:

call("asset.dump_folder", { folderPath: "/Game/UI", recursive: true })
-> Saved/PinWright/asset-dumps/Game/UI/WBP_HUD/
     meta.json  properties.json  tree.xml  bpir.txt

Why it is different

  • Graphs have a text form. The agent builds new Blueprints, materials, animation Blueprints and Control Rigs from text, changes existing ones through editor commands, and decompiles any of them to text to check the result. Behavior trees, sound cues, MetaSounds, Niagara and PCG decompile to text for reading.
  • Whole assets and folders dump to text. asset.dump and asset.dump_folder mirror packages into per-asset sidecars (meta.json, properties.json, bpir.txt, tree.xml, mgir.txt and more), so the agent knows your structure, classes and naming before it changes anything. That context is why new assets come out matching your project's conventions.
  • Play-In-Editor sessions are recorded and can be queried. The agent asks what happened in a session rather than reading a log tail. Capturing gameplay data needs instrumentation in the host project.
  • There is nothing to teach it. PinWright documents itself: the assistant discovers every operation and looks up its usage over the same MCP connection (call() lists the namespaces, call("<namespace.method>") returns that operation's page). You never paste documentation or install skill packs, and the reference always matches the version you run.
  • Meshes, skeletons and clips have a text form too. .pwmodel, .pwskel and .pwanim recipes compile into Static Meshes, skeletal rigs and animation clips, so generated content stays in source control as text the agent can edit again. Fourteen mesh recipes and a rigged arm ship under Examples/.
  • Local and authenticated by default: the listener binds to 127.0.0.1 and requires a bearer token.

Agent setup

The setup screen installs Claude Code, Codex CLI, Cursor, Gemini CLI and VS Code Copilot with one click. For any other client, copy the Agent setup prompt from that screen and paste it to your agent, or use the snippets below. The port is per-project by default (derived from the project path, in the range 19880-30119) and the token lives at Saved/PinWright/gateway-token; docs/wiki-src/mcp-transport.md has the transport defaults, port derivation and the stdio proxy's lifecycle tools.

Manual setup (fallback): per-agent config files

Manual equivalents of the one-click buttons. Substitute your project's resolved port for 19880; <project> is the UE project the plugin is installed into.

Claude Code, <project>/.mcp.json, or claude mcp add --transport http --scope project pinwright http://127.0.0.1:19880/mcp. Project-scoped servers get a one-time approval prompt.

{ "mcpServers": { "pinwright": { "type": "http", "url": "http://127.0.0.1:19880/mcp" } } }

Codex CLI, <project>/.codex/config.toml, loaded only after you trust the project (the first codex run in the folder prompts). codex mcp add pinwright --url http://127.0.0.1:19880/mcp registers it user-globally instead.

[mcp_servers.pinwright]
url = "http://127.0.0.1:19880/mcp"
startup_timeout_sec = 5.0
tool_timeout_sec = 300.0

Cursor, Settings -> Tools & MCP -> Add, or <project>/.cursor/mcp.json. No type key, Cursor auto-detects the transport; recent versions add project-file servers disabled, so enable it in Settings.

{ "mcpServers": { "pinwright": { "url": "http://127.0.0.1:19880/mcp" } } }

Gemini CLI, <project>/.gemini/settings.json. The key is httpUrl, not url, because url means SSE in Gemini. Project config loads only for trusted folders (gemini trust).

{ "mcpServers": { "pinwright": { "httpUrl": "http://127.0.0.1:19880/mcp" } } }

VS Code (GitHub Copilot), <project>/.vscode/mcp.json. The top-level key is servers, not mcpServers, and VS Code prompts once to trust and start the server. User-level alternative: code --add-mcp "{\"name\":\"pinwright\",\"type\":\"http\",\"url\":\"http://127.0.0.1:19880/mcp\"}".

{ "servers": { "pinwright": { "type": "http", "url": "http://127.0.0.1:19880/mcp" } } }

Windsurf, ~/.codeium/windsurf/mcp_config.json (user-level only), "mcpServers" entry { "serverUrl": "http://127.0.0.1:19880/mcp" }. Cline, cline_mcp_settings.json in VS Code globalStorage, entry { "type": "streamableHttp", "url": "http://127.0.0.1:19880/mcp" }.

Stdio-only clients bridge through the bundled proxy: run Plugins/PinWright/Content/Python/mcp_proxy.py with any Python 3, passing --token-file and --port-file pointing at the gateway-token / gateway-port files in Saved/PinWright (and optionally --uproject to select the project explicitly). It forwards stdio to the HTTP endpoint, sends the bearer token, follows the live port, and adds the local lifecycle tools, which is what the generated configs do.

Security

This is editor automation with asset-mutation privileges: a request can create, edit, save, delete and compile project assets. Treat it as a local developer tool.

  • The plugin runs inside your editor, makes no network calls of its own, and the listener binds to 127.0.0.1. Your assistant sends project content to whatever model it uses, as it already does with your code. Do not expose the port to a LAN, VPN, container bridge or the internet, and do not put a reverse proxy in front of it.
  • A bearer token is required by default: 64 hex characters, generated on editor start at Saved/PinWright/gateway-token. It stops browser drive-by requests and other OS users; it is not a defense against code already running as you.
  • Direct-HTTP agent configs embed the literal token, so keep them machine-local and never commit them; the stdio-proxy config carries only the token file path.
  • Use trusted clients only, keep the project in source control, and review generated changes before committing.

Threat model, rotation steps and vulnerability reporting: SECURITY.md.

Documentation

The agent's reference is built in: every editor launch generates the full method wiki into the project's Saved/PinWright/wiki/, one flat page per namespace and method, which is what call("<path>") serves. Relocate it with Wiki Output Directory under Project Settings -> Plugins -> PinWright (Project). Compilable IR samples ship in Examples/: .mgir materials such as Examples/mgir/M_PwReview_Neutral.mgir, plus .pwmodel, .pwskel and .pwanim sources. docs/index.md indexes the documentation, docs/wiki-src/README.md holds the hand-written wiki pages and their authoring rules, CONTRIBUTING.md covers build, test and documentation conventions, and CHANGELOG.md is the release history.

Support

Bug reports, critical gaps in existing features and feature requests all go through GitHub issues on PinWright/pinwright-ue. Use the bug report form for a defect or a critical gap in an existing feature, the compatibility report form when the plugin does not load or build at all on your engine, and a plain issue for a new feature idea.

License and attribution

MIT, see LICENSE. Contributions are accepted under MIT with no CLA. Third-party components and their required notices are listed in THIRD_PARTY_NOTICES.md; portions are derived from ChiR24/Unreal_mcp (MIT, (c) 2025 Unreal Engine MCP Server Contributors).

Yorumlar (0)

Sonuc bulunamadi