Skip to main content
Glama

snapshot_object

Destructive

Capture an object's properties and components into a named in-memory snapshot for later before/after, editor/PIE, or server/client diffs; optionally persist it to disk to survive editor restarts.

Instructions

Capture the properties and components of one object into a named in-memory snapshot (read-only) for a later diff_object_snapshots: before vs after an action, editor vs PIE, or "server" vs "client" via world. persist=true also writes Saved/MCPAudits/snapshots/.json to survive a restart. compare_objects diffs two live objects instead.

Returns: { handle, object_path, resolved_path, class, world (the coarse "pie"/"editor" family label the snapshot itself carries), world_selector (what was asked for), property_count, component_count, component_template_count, persisted, snapshot_path?, persist_error?, snapshot?, world_name, world_package, world_type, net_mode, pie_instance }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
worldNoOptional world selector: absent/'editor' (default) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'pie'/'game'/'runtime' (ambiguous: PlayWorld, else the first PIE/Game context) to resolve a live runtime instance.
handleNoOptional handle to store under (overwrites); auto-generated when omitted (alias: snapshot_id).
persistNoAlso write the snapshot to Saved/MCPAudits/snapshots/<handle>.json so it SURVIVES an editor restart. The in-memory store is a process-lifetime map: without this, a baseline captured before a mandatory restart is gone exactly when you need to compare against it. Default false.
object_pathYesObject path or dotted "Actor[.Component[.Subobject]]" (name or editor label for the first segment).
snapshot_idNoAlias of handle: the name to store the snapshot under, used only when handle is absent or empty; an existing snapshot with that name is overwritten
return_snapshotNoReturn the full snapshot inline in the response (so the caller can hold it and pass it back as diff_object_snapshots' snapshot_a/snapshot_b). Default false.
include_component_templatesNoFor a Blueprint / BPGC / Blueprint CDO target, also capture the SCS + ICH component TEMPLATES (a Blueprint CDO owns ONLY its native components, so without this a CDO snapshot cannot verify a single SCS/ICH override). Default true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.2.0
    • addedInput schema / properties / snapshot_id / description
      Added value: +"Alias of handle: the name to store the snapshot under, used only when handle is absent or empty; an existing snapshot with that name is overwritten"
  2. First observedv1.1.0

TDQS

A4.3/5.0
Behavior4/5

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

With annotations present, the description still adds substantial non-obvious behavior: the store is a process-lifetime map, persist=true writes Saved/MCPAudits/snapshots/<handle>.json and survives an editor restart, an existing handle is overwritten, and return_snapshot lets the caller hold the data for a later diff. The one soft spot is the "(read-only)" label, which could be misread as a tool-level safety claim even though the annotations mark the tool destructive and the text itself discloses file writes and overwrites.

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-loaded with purpose and usage in the first clause, followed by the persist caveat and the sibling exclusion. The dense "Returns:" enumeration is long but earns its place because no output schema exists; otherwise the wording is tight and waste-free.

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

Completeness4/5

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

Covers what is captured, the two storage modes, the alternative tool, and enumerates the return fields in lieu of an output schema, which is appropriate for a 7-parameter, world-aware tool. Only ambiguity is whether the "(read-only)" qualifier versus the destructive annotation could steer an agent wrong.

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% (7 params), so the schema already documents world selectors, persist, handle/snapshot_id aliasing, return_snapshot, and include_component_templates with the same rationale. The description largely restates that material, so baseline 3 is appropriate; its added value (the workflow link between return_snapshot and diff_object_snapshots' snapshot_a/snapshot_b) belongs more to usage than to parameter semantics.

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 and resource ("Capture the properties and components of one object into a named in-memory snapshot") plus the downstream purpose (a later diff_object_snapshots). It explicitly differentiates from the closest sibling with "compare_objects diffs two live objects instead." An agent can tell this apart from compare_objects/diff_object_snapshots without opening a schema.

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

Usage Guidelines5/5

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

Gives concrete usage scenarios ("before vs after an action, editor vs PIE, or 'server' vs 'client' via world") and names the alternative route (compare_objects for two live objects). The when-to-use and when-to-use-something-else conditions are both present and explicit.

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