Skip to main content
Glama

diff_object_snapshots

Read-onlyIdempotent

Compare two object snapshots to see which properties and components were added, removed, or changed, with before/after values side by side for verifying replication.

Instructions

Compare two snapshots taken by snapshot_object and report which properties were added, removed or CHANGED, at the object level and per component, with both values side by side. The second half of the before/after measurement: capture a baseline, run the action, capture again, and this tells you what actually moved -- instead of trusting the acting call's own success flag. Also the way to diff editor-vs-PIE and, in co-op, SERVER-vs-CLIENT state for the same actor, which is the only proof that a value really replicated. Sides can be given as stored handles, as inline snapshot objects (from snapshot_object(return_snapshot=true)), or as paths to persisted snapshot files; a_origin/b_origin report which route each side came from. compare_objects is the same idea for two LIVE objects at one instant.

Returns: { handle_a, handle_b, a_origin, b_origin, a_object_path, b_object_path, a_class, b_class, a_world, b_world, properties:{added,removed,changed}, components:{added,removed,changed:[{component, properties:{added,removed,changed}}]}, total_differences }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
path_aNoPath to a persisted baseline snapshot file (bare handles resolve under Saved/MCPAudits/snapshots/).
path_bNoPath to a persisted second snapshot file.
handle_aNoHandle of the first (baseline) snapshot (aliases: a, snapshot_a). Resolved from the in-memory store first, then from the persisted Saved/MCPAudits/snapshots/<handle>.json copy.
handle_bNoHandle of the second snapshot (aliases: b, snapshot_b). Same resolution.
snapshot_aNoThe baseline snapshot INLINE (a JSON object, e.g. what snapshot_object(return_snapshot=true) handed back). A STRING here is read as a handle.
snapshot_bNoThe second snapshot INLINE (a JSON object). A STRING here is read as a handle.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the three accepted input routes, that a_origin/b_origin report which route each side came from, and the presence of total_differences. It stops short of discussing errors or missing/mismatched handles, hence not a 5.

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 the core comparison behavior, then the usage rationale, then inputs and return shape. It is dense and mostly earns its length, though the prose embellishments ('the only proof that a value really replicated') are more rhetorical than informational.

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 the description accordingly inlines the full return structure including nested components.changed shape and total_differences. Combined with annotations covering safety and the schema covering every parameter, an agent has everything needed to call and interpret this tool.

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?

With 100% schema coverage the baseline is 3, but the description integrates the six parameters rather than repeating them: it explains that sides may be handles, inline snapshot objects, or file paths, and that a bare string is read as a handle. The schema already carries these per-field details, so the added value is moderate.

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: compare two snapshots and report properties added/removed/CHANGED at object and component level. It also explicitly distinguishes itself from the sibling compare_objects ('the same idea for two LIVE objects at one instant') and from snapshot_object, which it names as the producer of its inputs.

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 when-to-use guidance: the capture-baseline/run-action/capture-again workflow, plus two named scenarios (editor-vs-PIE, and co-op SERVER-vs-CLIENT replication proof). It also names the alternative (compare_objects) and the condition that selects it, leaving little to inference.

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