Skip to main content
Glama

diff_object

Compare a live Unreal Engine object against a stored snapshot to list changed, added, and removed properties, with optional rolling updates.

Instructions

Re-walk an object and report what changed since the snapshot stored under label. Read-only.

ref defaults to the reference the snapshot was taken with; pass one to compare a different object against the stored walk.

Returns {label, path, changed, added, removed, same}, where same is the number of top-level properties with no changed, added or removed rows, and each changed row is {path, before, after} with a dotted path into the property ("Mesh.RelativeLocation.X", "Inventory[3].Count"). Object-valued properties compare by their path, not their address, so an unchanged object diffs empty. If the reference now resolves to a different object the old path comes back as stored_path and the diff still runs.

Each of the three lists holds at most 500 rows; truncated counts the rows dropped per list when exceeded.

update=True replaces the snapshot with this walk after diffing, for a rolling diff. An unknown label raises and names the ones that exist.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
refNo
labelYes
updateNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.2.0

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses read-only behavior, the exact return shape, truncation limits, the meaning of `stored_path` when the reference resolves to a different object, and the error behavior for unknown labels.

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

Conciseness5/5

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

The description is dense but every sentence adds essential information: purpose, parameter behavior, return format, edge cases, truncation, and error handling. It is front-loaded with the core purpose, then proceeds logically into details without filler.

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?

There is no output schema and no annotations, so the description is the only source of runtime semantics. It fully covers invocation, return values, limits, mutation behavior, and failure modes. An agent has enough information to call diff_object correctly and interpret results.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain every parameter, and it does. It explains `label` as the snapshot identifier, `ref` as overriding the snapshot's reference, and `update` as replacing the snapshot after diffing. This goes well beyond the bare schema.

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?

The description states a specific verb and resource: 'Re-walk an object and report what changed since the snapshot stored under label.' This clearly differentiates diff_object from siblings like snapshot_object or inspect_object by focusing on comparison against a stored snapshot. It also explicitly marks itself read-only.

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?

It gives clear context for when to use the tool: when you need to compare an object's current walk against a snapshot, optionally with a rolling diff via update=True. It does not explicitly name sibling alternatives or state when not to use it, but the described use case is sufficiently specific.

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