Level actors, selection, components, level management, volumes, lights, and splines. Actions: - get_outliner: List actors. Params: classFilter?, nameFilter?, world? (editor|pie|auto), limit? - place_actor: Spawn actor. Params: actorClass, label?, location?, rotation?, scale?, staticMesh?, materia...
Risk signalsAccepts file system path (directory) · High parameter count (98 properties) · Admin/system-level operation
Part of the Ue server.
Free to start. No card required.
AI agents may call level to permanently remove or destroy resources in Ue. Without a policy, an autonomous agent could delete critical data in a loop with no way to undo the damage. PolicyLayer blocks destructive tools by default and requires explicit human approval before enabling them.
Without a policy, an AI agent could call level in a loop, permanently destroying resources in Ue. There is no undo for destructive operations. PolicyLayer blocks this tool by default and only allows it when a human explicitly approves the action.
Destructive tools permanently remove data. Block by default. Only enable with explicit approval workflows.
{
"version": "1",
"default": "deny",
"hide": [
"level"
]
} See the full Ue policy for all 22 tools.
These attack patterns abuse exactly the kind of access level gives an agent. Each links to the full case and the policy that stops it:
Other destructive tools across the catalogue. The same approach applies to each: deny by default, or require human approval.
Level actors, selection, components, level management, volumes, lights, and splines. Actions: - get_outliner: List actors. Params: classFilter?, nameFilter?, world? (editor|pie|auto), limit? - place_actor: Spawn actor. Params: actorClass, label?, location?, rotation?, scale?, staticMesh?, material? - delete_actor: Remove actor. Params: actorLabel - get_actor_details: Inspect actor. Params: actorLabel OR actorPath, includeProperties?, propertyName?, world? (editor|pie) - move_actor: Transform actor. Params: actorLabel, location?, rotation?, scale? - select: Select actors. Params: actorLabels[] - get_selected: Get selection - add_component: Add component to actor. Params: actorLabel, componentClass, componentName? - remove_component: Remove instance component from a level actor by name. Idempotent: returns alreadyDeleted=true if no matching component exists. Params: actorLabel, componentName (#426) - set_component_property: Set component prop. Pass value=null to clear a TObjectPtr/SoftObject/WeakObject/UClass/Interface reference (#420). Params: actorLabel, componentName, propertyName, value - get_current: Get current level name and path - load: Load level. Params: levelPath - save: Save current level - list: List levels. Params: directory?, recursive? - create: Create new level. Params: levelPath?, templateLevel? - spawn_volume: Place volume. Params: volumeType, location?, extent?, label? - list_volumes: List volumes. Params: volumeType? - set_volume_properties: Edit volume. Params: actorLabel, properties - spawn_light: Place light. Params: lightType (point|spot|directional|rect|sky), location?, rotation?, intensity?, color? ({r,g,b} 0-255), mobility? (static|stationary|movable; default movable so the light renders without a build), label? (#331/#310) - set_light_properties: Edit light. Params: actorLabel, intensity?, color?, rotation? (DirectionalLight sun angle), mobility? (static|stationary|movable), recaptureSky?, temperature?, castShadows?, attenuationRadius? - set_fog_properties: Edit ExponentialHeightFog. Params: actorLabel?, fogDensity?, fogHeightFalloff?, startDistance?, fogInscatteringColor? - get_actors_by_class: List actors by class name. Params: className, world? (editor|pie) - count_actors_by_class: Histogram of actor classes in the level (sorted desc). Params: world? (editor|pie), topN? (#146) - get_runtime_virtual_texture_summary: List RuntimeVirtualTextureVolume actors + their bound VirtualTexture assets (#150) - set_water_body_property: Set a property on an actor's WaterBodyComponent (ShapeDilation, WaterLevel, etc.). Params: actorLabel, propertyName, value. Requires Water plugin. For spline edits use level(set_spline_points) (#151) - build_lighting: Build lights. Params: quality? - get_spline_info: Read spline. Params: actorLabel - set_spline_points: Set spline points. Params: actorLabel, points[], closedLoop? - set_actor_material: Set material on actor. Params: actorLabel, materialPath, slotIndex? - get_world_settings: Read world settings (GameMode, KillZ, gravity, etc.) - set_world_settings: Set world settings. Params: defaultGameMode?, killZ?, globalGravityZ?, enableWorldBoundsChecks? - get_actor_bounds: Get actor AABB. Params: actorLabel. Returns origin + extent (#188) - get_component_tree: Deep component-tree dump for an actor. Returns per-component: name, class, attachParent, attachSocket, mobility, visibility, relative+world transforms, tags. For PrimitiveComponents adds collisionProfile/collisionEnabled/bounds/castShadow. For StaticMeshComponent adds staticMesh + materials[]. For SkeletalMeshComponent adds skeletalMesh + skeleton + materials[]. Params: actorLabel | actorPath, world? (editor|pie), componentClass? (substring filter), includeProperties? (dump UPROPERTY name/type/value per component) (#240/#241/#302/#320/#370/#353) - get_relative_transform: Compute target's transform in reference's local space (location/rotation/scale). Common dungeon/calibration workflow. Params: target (actor label), reference (actor label), world? (#386/#387) - resolve_actor: Resolve internal/runtime actor name to editor label. Params: internalName (e.g. StaticMeshActor_141). Returns actorLabel, actorPath, className, location (#178) - set_actor_property: Set per-instance UPROPERTY on a level actor. Params: actorLabel ('WorldSettings' targets the world settings actor), propertyName (dotted paths like 'Foo.Bar' supported), value (string/number/bool/object/array; an actor label resolves to AActor* refs), force? (bypass EditDefaultsOnly), world? (editor|pie) (#202/#230) - delete_actors: Bulk-delete actors. Params: at least one of labelPrefix, className, tag; dryRun? to preview. Returns matched/deleted/labels (#220) - add_actor_tag: Append a tag to an actor's Tags array. Params: actorLabel, tag (#219) - remove_actor_tag: Remove a tag from an actor's Tags array. Params: actorLabel, tag (#219) - set_actor_tags: Replace an actor's Tags array. Params: actorLabel, tags[] (#219) - list_actor_tags: List an actor's Tags. Params: actorLabel (#219) - attach_actor: Attach actor as child. Params: childLabel, parentLabel, attachRule? (KeepWorld|KeepRelative|SnapToTarget; default KeepWorld), socketName? (#205) - detach_actor: Detach actor from parent. Params: childLabel (#205) - set_actor_mobility: Set actor root component Mobility. Params: actorLabel, mobility (static|stationary|movable) (#205) - get_current_edit_level: Read the active edit-target sub-level (#204) - set_current_edit_level: Set the active edit-target sub-level so subsequent spawns land in it. Params: levelName (e.g. SubLevel_A) (#204) - list_streaming_sublevels: List streaming sub-levels with transform + initially-loaded/visible flags (#206) - add_streaming_sublevel: Add a streaming sub-level. Params: levelPath, streamingClass? (LevelStreamingDynamic|LevelStreamingAlwaysLoaded), location?, initiallyLoaded?, initiallyVisible? (#206) - remove_streaming_sublevel: Remove a streaming sub-level. Params: levelName | levelPath (#206) - set_streaming_sublevel_properties: Update sub-level transform/visibility flags. Params: levelName | levelPath, location?, initiallyLoaded?, initiallyVisible?, editorVisible? (#206) - spawn_grid: Batch-spawn StaticMeshActors on a grid. Params: staticMesh, min, max (Vec3 bounds), countX?, countY?, countZ?, jitter?, labelPrefix? (#203) - batch_translate: Translate a set of actors by an offset. Params: offset (Vec3), actorLabels[] OR tag (#203) - place_actors_batch: Bulk-spawn StaticMeshActors with per-instance mesh + transform. Params: actors[]: [{staticMesh, location?, rotation?, scale?, label?}]. Mesh loads cached per path. Returns spawned/failedMesh/failedSpawn counts + labels (#264) - line_trace: Line trace in the editor world. Returns hit + actorLabel/actorClass/componentName/componentClass/location/impactPoint/normal/distance/faceIndex/boneName/physicalMaterial. Params: start (Vec3), end? (Vec3) OR direction? (Vec3) + distance? (default 200000), ignoreActors? (array of labels) (#420) - snap_actor_to_floor: Snap an actor's bounds-bottom to the first downward line-trace hit. Equivalent of the End-key shortcut, works on arbitrary geometry (not just Landscape). Params: actorLabel, floorOffset? (added to impact Z, default 0), maxDistance? (default 100000) (#419). It is categorised as a Destructive tool in the Ue MCP Server, which means it can permanently delete or destroy data. Block by default and require explicit approval.
Register the Ue MCP server in PolicyLayer and add a rule for level: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Ue. Nothing to install.
level is a Destructive tool with critical risk. Critical-risk tools should be blocked by default and only enabled with explicit human approval.
Yes. Add a rate_limit block to the level rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for level. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
level is provided by the Ue MCP server (ue-mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
Deterministic rules across all 22 Ue tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.
Free to start. No card required.
4,600+ MCP servers and 31,000+ tools scanned and risk-classified.