Skip to main content
Glama

list_orphaned_ofpa_actors

Read-onlyIdempotent

Find ExternalActors packages missing World Partition descriptors, leaving actors invisible to class or partition queries. Read-only scan of the specified level's map_path.

Instructions

Finds ExternalActors (OFPA) packages with no registered World Partition descriptor -- actors invisible to get_actors_by_class/list_world_partition_actors because their package fell out of sync with the level's registered actor set (e.g. after a bad delete+save). Three enumeration layers, most-to-least authoritative: (1) raw filesystem scan of the level's external-actors folder (catches AssetRegistry blind spots); (2) AssetRegistry GetAssetsByPath (bIncludeOnlyOnDiskAssets=true, zero-load class info via AssetClassPath); (3) IF map_path is the CURRENTLY OPEN editor world with an initialized World Partition, a live cross-check against the real descriptor set. When map_path is a DIFFERENT map (the recommended procedure: clean up orphans with the editor on another map), layer 3 is skipped and disk-and-registry-both-present candidates are reported as candidate_unconfirmed rather than a false-confident confirmed_orphan. Read-only: never loads a package, never opens/swaps to map_path.

Returns: { map_path, external_actors_path, disk_count, asset_registry_count, live_registered_count (nullable), live_cross_check_available, confirmed_orphan_count, candidate_unconfirmed_count, candidates: [{ path, generated_class_name, is_loaded, on_disk, in_asset_registry, classification }], note }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
map_pathYesLong package name of the level to inspect (e.g. /Game/MyGame/Maps/MainMap); does NOT need to be the open editor world (that only enables the stronger layer-3 cross-check).
filter_generated_classNoOptional substring (case-insensitive) matched against each candidate's generated_class_name (the AssetClassPath, resolved with zero loading); also tried as a UClass IsChildOf when the string resolves to a real class.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantial context beyond them: it never loads a package, never opens or swaps to map_path, describes the three enumeration layers most-to-least authoritative, and explains why candidates are reported as candidate_unconfirmed instead of a false-confident confirmed_orphan.

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?

Purpose is front-loaded in the first clause, followed by the layered mechanism and a structured Returns block. It is dense and long, and the read-only statement slightly overlaps the annotations, but nearly every sentence carries operational weight for a genuinely complex tool.

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?

For a high-complexity diagnostic tool with no output schema, the description supplies an explicit Returns field list (map_path, counts, live_cross_check_available, candidates with classification, note) and covers the edge cases around open-world vs other-map invocation, leaving nothing essential unstated.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description still adds meaning by tying map_path to the layer-3 cross-check outcome (current vs different map changes results) and by clarifying filter_generated_class matches against the zero-load AssetClassPath.

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 specific verb+resource: finds __ExternalActors__ (OFPA) packages with no registered World Partition descriptor. It explicitly distinguishes the target from siblings by noting the actors are invisible to get_actors_by_class/list_world_partition_actors, so an agent can tell it apart without opening other schemas.

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 operational context: the recommended procedure is to clean up orphans with the editor on another map, and it explains that layer 3 is only available when map_path is the currently open world. It implies when this tool applies (orphan cleanup) but never states an explicit use-this-not-that rule against a named alternative.

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