Skip to main content
Glama

pack_level_actors

DestructiveIdempotent

Bakes a saved .umap into a reusable APackedLevelActor Blueprint, merging static-mesh actors into ISM components so the level streams as one actor.

Instructions

Bakes a saved map (.umap) into a reusable APackedLevelActor Blueprint headless: the source level's static-mesh actors are merged into ISM components on the generated Blueprint so it streams as one cheap actor. Uses FPackedLevelActorBuilder::CreateDefaultBuilder + CreateOrUpdateBlueprint with bCheckoutAndSave=false on purpose — that builder save path is silently cancelled under -unattended (FileHelpers PR_Cancelled) and would falsely report success; instead the Blueprint package is persisted explicitly via UEditorLoadingAndSavingUtils::SavePackages and its REAL result is returned as saved. The build runs in the builder's own FPreviewScene (no editor-world swap, no PIE, no render). Requires the editor (GEditor). Idempotent: an existing Blueprint at blueprint_path is updated in place (the engine early-outs via PackedHash when the source is unchanged), never duplicated.

Returns: { blueprint_path: string, source_world_asset: string, blueprint_created: bool, packed: bool, packed_hash: number, saved: bool, note: string }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
saveNoOptional, default true. Persist the Blueprint package to disk and report the real save result in `saved`.
forceNoOptional. This command is REFUSED while a Play-in-Editor session is running: it either compiles a Blueprint (the reinstancer can retain a world, and CheckForWorldGCLeaks is Fatal -- it KILLS the editor) or writes to disk (Editor.AllowSavingAssetsDuringPIE=0 makes the engine refuse the write, so it would report success without writing a byte). Stop PIE and retry instead; force=true runs it anyway, at your own risk.
blueprint_nameNoAlias of `blueprint_path` (same value, same meaning). Accepted because sibling tools spell this parameter differently; prefer `blueprint_path`.
blueprint_pathNoDestination package path for the APackedLevelActor Blueprint (e.g. "/Game/Maps/BPP_Foo").
world_asset_pathYesPackage/object path of the saved source map to pack (e.g. "/Game/Maps/Foo"). Must exist on disk.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the deliberate bypass of the builder save path under -unattended, the explicit SavePackages persistence and the meaning of the returned `saved` flag, the FPreviewScene execution model, the GEditor requirement, and the PIE refusal/corruption risk. This is exactly the behavioral context annotations alone cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then layers constraints and return shape. It is long and leans on internal engine symbols (FPackedLevelActorBuilder, PR_Cancelled, UEditorLoadingAndSavingUtils), but each detail justifies a non-obvious behavior an agent would otherwise get wrong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description enumerates the return keys and their meaning, states idempotency, the editor requirement, and the PIE hazard. An agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself is highly detailed (force covers the PIE refusal, blueprint_name the alias rationale). The description only lightly touches parameter meaning, tying `save` to the returned `saved` value and reaffirming in-place update for blueprint_path. Baseline 3 is appropriate since the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Bakes a saved map (.umap) into a reusable APackedLevelActor Blueprint headless') and explains the concrete effect: static-mesh actors merged into ISM components so the level streams as one cheap actor. No sibling tool does anything comparable, and an agent can distinguish it immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: headless, requires the editor (GEditor), no PIE/editor-world swap, and idempotent update-in-place rather than duplication. It does not name alternative tools to use instead (e.g. a non-headless packer), so it stops short of explicit alternatives/exclusions, but the conditions for safe use are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools