Depth expansion and agent experience — 2026-09-21
The current source contains 5,488 tool declarations. The compatibility table exposes
5,016 tools on UE 4.27 and 5,488 on UE 5.8. Smoke coverage grew from 2,800 to
5,016 covered declarations, leaving 480 SmokeSkip (down from 1,701).
Eight kits got a full depth pass (new thematic classes, more typed tools, more recipes), UE 5.8
counts:
ai (+ new statetree kit): 160 → 257 on ai, plus 52 on the new statetree kit (which
now owns State Tree authoring, previously an empty ai.st_* placeholder) — full Blackboard/
Behavior Tree round trips, perception configs, Smart Objects with slot claim/release in PIE.
sequencer: 50 → 256 (typed tracks/sections/keys per track class, bindings/possessables/
spawnables, camera cuts, folders, markers).
pcg: 152 → 234 (per-node-type settings, graph parameters and instances, attribute
selectors, data inspection, asynchronous generation).
landscape (+ new water kit): 82 → 148 on landscape, plus a new water kit with 22
tools (water bodies moved out of landscape into their own kit) — edit layers, splines,
grass, weightmap import/export, sculpt operations.
Agent experience: checkpoints with rollback (edit.checkpoint_rollback), atomic batches
(edit.call_many with full rollback on failure), _preview images on calls that build visual
content, and a library of 19 end-to-end workflows exposed as MCP prompts (see the Workflows
page).
Load safety: the plugin now works in projects without the engine's optional plugins — kits that
depend on them (Niagara, PCG, StateTree, Water, Control Rig, Chaos Vehicles...) delay-load and
only activate when the required plugin is enabled; checked by Tools/check_plugin_gating.py.
No silent-fallback rule: a field, parameter or type the running engine does not support returns
an error naming the minimum engine — nothing is silently skipped or guessed.
Fixes in this integration cycle:
landscape: landscape creation now works on 4.27, spline_apply edits the correct edit
layer, remove_edit_layer and replace_layer_info were fixed on 4.27, creation with scale is
supported from 5.2 on, and layer content is flushed after every edit.
metasound: fixed a name collision in build_transient, and adjusted the result returned by
add-input/add-output/add-variable.
niagara: fixed wait_compile detection on 5.5+, and reordered the scalability smoke.
paper: fixed the vector format returned by sprite_find_alpha_bounds, and eliminated a
crash in flipbook_duplicate_keyframe.
model: fixed a crash in compact_material_ids.
component: set_widget now applies bIsTwoSided correctly.
umg: the widget GUID map now stays in sync correctly on 5.6+.
vehicle: runtime tools now refuse to run without an active physics/mechanical simulation,
and the test vehicle now gets a torque curve.
camera: the smoke test now uses the class: selector.
anim: linked anim layers now resolve FunctionReference correctly on 5.1+, and every
fallback was removed in favor of exact graph/pin/state machine lookups with explicit errors.
sequencer: the camera-cut section is now created on the real camera cut track, and the byte
track smoke was fixed.
asset: delete, delete_many and delete_folder are now NonUndoable, and deleting and
recreating the same asset within one session now works (undo history cleared and World
Partition references cleared).
edit: atomic call_many and run_workflow now refuse NonUndoable tools up front, and
checkpoint_rollback reports complete: false after a NonUndoable call.
nav: build now releases the 5.8 post-load navigation build lock.
actor: rename/move_folder correctly return E_CONFLICT, and delete_folder deletes the
folder again.
foliage: added support for World Partition foliage actors from 5.0 on.
data: fixed acquire_registry_item to report SmokeSkip.
gameplay: get_game_mode/get_game_state now require PIE.
workflows: fixed the day_night, impact_effect, orbit_shot and terrain_with_foliage
workflows, and check_workflows now rejects NonUndoable main steps.
tooling: added smoke_per_kit.py and check_plugin_gating.py, and fixed plugin-gated kit
loading (the "module 'UeaKitAnim' could not be loaded" error in projects without the optional
engine plugins).
Build and self-test results: builds pass on UE 5.8 and 4.27. UE 5.8: 5,488 tools; full self-test 4,678 passed and 0 failed, PIE 301 passed and 0 failed, per-kit sweep of 55 kits with no crashes, 19/19 workflows, navigation integration passed. UE 4.27: 4,326 tools; full self-test 3,681 passed and 0 failed, PIE 253 passed and 0 failed, per-kit sweep of 50 kits with no crashes, 17 workflows passed (2 require UE 5). Projects without the optional plugins load with no module errors (5.8: 5,030 tools active; 4.27: 4,326).
Fixed during validation: safe Niagara creation/compilation, the Control Rig hierarchy controller, AI and Sequencer fixtures, UHT schemas and 4.27/5.x API branches.
1.3.0 — 2026-09-16 (component, material and mesh kits)
component (121 tools): SCS components (Blueprint template) and instance components on
level actors, per-class typed setters, transforms, physics/collision/rendering properties, copy
and sync between the two worlds, test rig.
material (252 tools, 236 on 4.27): materials, expression graph nodes, material functions,
material instances, material layers (5.x), 25 recipes that generate complete materials in a
single call.
mesh (155 tools, 123 on 4.27): static mesh import and build settings, LOD chain, collision,
sockets, UV channels, mesh merge, Nanite on 5.x.
Total: 1,654 tools on 4.27 up to 1,750 on 5.8 (table in Compatibility).
Fixes: material instance parameter setters no longer trust the engine's always-false return from
SetMaterialInstance*ParameterValue; material parameter cache refreshed after graph edits;
level.repair_build_data_ids and build-data GUID repair before lighting/reflection builds; 4.27
fixes for material feature-level/quality switch inputs.
1.2.0 — 2026-09-15 (World Building: level, actor and asset kits)
level (192 tools, 175 on 4.27): maps and sublevels, layers, world settings, environment
(sun, sky light, atmosphere, fog, clouds, reflection captures, presets), post-process (volumes and
every settings group), splines and spline meshes, gameplay volumes, lighting build and Lightmass,
navigation (build, agents, nav links, path queries), World Partition / data layers / level
instances (5.x).
actor (197 tools, 196 on 4.27): query, spawn from classes, Blueprints and assets,
transforms and alignment, properties and components on level actors, attachment, outliner folders,
groups, selection, mesh actors (static, skeletal, instanced), decals, text, cameras, bulk edits,
layout export/import, convert to Blueprint, mesh merging.
asset (215 tools): the 90 asset/import tools moved out of edit into their own kit and
gained 124 new ones: collections, deep asset-registry queries and dependency graphs, bulk
organisation and naming, packages and disk, per-file source control, data tables / curves /
string tables / data assets, advanced import (FBX, textures, audio, glTF, Interchange).
Total: 1,173 tools on 4.27 up to 1,221 on 5.8 (table in Compatibility).
Self-test: 967 tools carry smoke args; UE 5.8.2: 931 passed, 0 failed; PIE cycle clean. Bugs the
self-test caught and that were fixed in this release: brush volumes created without a UModel
(crash), fix_redirectors opening a modal window (editor hang), timeline tracks without display
order (4.27 crash), spawned actors without a root component, map duplication on 4.27.
Infra: Tools/build_plugin.ps1, Tools/smoke_cycle.sh and Tools/check_smoke.py; playbook and
per-kit specs under Docs/dev/.
Adaptive mode (default):tools/list starts with the core (67 tools); edit.recommend_kits,
edit.enable_kits, edit.disable_kits and edit.list_active_kits activate kits per session and
emit tools/list_changed. edit.search_tools, edit.get_tool_schema and tools/call see everything.
Per-tool metadata: risk 0–5 (MaxAutoRisk + "_confirm": true), required plugins, PIE/world
requirements, dryRun, engine range, published under annotations.uea.
Reply envelope:tool, engine, durationMs, transaction and changedAssets on every
reply; lowerCamelCase keys at any depth.
Self-test:edit.self_test + Tools/uea_smoke.py --full (553 tools carry smoke args;
UE 5.8.2: 513 passed, 0 failed, 40 skipped because they need PIE; UE 4.27.2: 496 passed, 0 failed).
PIE cycle (play.start → self-test → play.stop) runs on both engines without a crash.
Frame-waiting tools (play.start/stop, start_simulate, toggle_simulate, tap_key,
set_axis, mouse_delta, advance_frames, run_test(s), live_coding_compile) run off the game
thread and never tick the engine (nested ticks crashed the editor on 5.x).
Runtime fixes found by the self-test: kit discovery after every module has loaded, reading the
log while the editor holds it open, timelines created through the engine's own path, name kept by
bp.set_component_class, bp.add_spawn_node (pin creation order), nodes addressable by title as
well as by id.
Default port 9321 (http://127.0.0.1:9321/uea-mcp).