get_object_info
Inspect an unfamiliar Unreal object to discover its identity, class, reflected property names, typed values, and components before editing it with set_properties.
Instructions
Portrait of one object whose property names you do not know yet: its identity and class, class flags and interfaces, every reflected property as { name: typed_value }, and for an actor its components.
Use it first on anything unfamiliar, then write with set_properties using the names it lists. Once you know the names, get_properties reads only those and is far cheaper: an actor's portrait can run to hundreds of properties. get_class_properties describes a class with no instance, and get_actor_components lists the components alone.
object_path takes a path from find_assets_by_name, an object_path from get_graph_nodes or another reader, or an actor's component as "Actor.Component", the actor by its internal name. {"object_path": "/Game/Blueprints/BP_Door", "include_properties": false} answers only "what is this?", with identity and class. include_property_metadata=true adds each property's type, editability, replication and clamp range next to its value, which says whether set_properties can write it. world "server", "client" or "pie:N" portrays the live instance in Play-in-Editor, and the reply names the world that answered.
A reply over 40,000 characters (the console variable mcp.OversizeResponseChars), common for a Blueprint with include_property_metadata, is written to a file instead: the reply keeps its scalar fields and gives report_path, which get_mcp_audit_report reads. An object or a world it cannot find is an error naming what it searched.
Returns: { object_path: string, object_name: string, class_name: string, class_path: string, super_class: string, is_valid: bool, is_abstract, is_deprecated, is_placeable, is_native, config_name, implemented_interfaces: [{interface, implemented_by_k2}], class_group?, is_blueprintable?, is_blueprint_type?, display_name?, tooltip?, properties?: {prop_name: typed_value} | [<typed descriptor + value>], property_count?: int, components?: [{name, class}], world: string, world_name: string|null, world_package: string|null, world_type: string|null, net_mode: string|null, pie_instance: number } -- properties/property_count/components only with include_properties; properties is the array form with include_property_metadata; super_class is "None" for UObject.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| world | No | Optional world selector: absent/'editor' (default: the editor/asset instance) | 'pie' (ambiguous: PlayWorld, else the first PIE context) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'game' (alias of 'pie'). Anything other than absent/'editor' portrays the LIVE instance in that world; an UNRECOGNIZED value is an error naming the worlds that exist, never a silent fallback to another world. | |
| object_path | Yes | Path or name of the object to inspect. In the editor world: full object path, asset path, CDO/archetype, an asset's sub-object as the readers give its object_path -- a graph node from get_graph_nodes, a sound cue node, a Niagara renderer or simulation stage, a PCG node's settings_path, a behavior tree node, a camera rig node, a Mass trait, a physics body -- also written "/Game/Asset:SubObject", or a dotted "Actor[.Component[.Subobject]]" whose first segment is the actor's INTERNAL name. In a live world: a fully-qualified PIE path or the same dotted form (first segment matches internal name OR editor label). | |
| include_properties | No | Optional bool (default true). false skips the properties and the components list, leaving identity and class only. | |
| include_property_metadata | No | Optional bool (default false). true returns properties as an ARRAY of typed descriptors (see get_class_properties) each with its current `value`, instead of the { name: typed_value } map. |