Skip to main content
Glama

diff_data_tables

Read-onlyIdempotent

Compare two DataTables row by row and cell by cell without altering them; return added, removed, changed rows and cell-level differences from asset paths or JSON dumps.

Instructions

Diff two DataTables row by row and cell by cell without modifying either: two asset paths (a, b), or two JSON dumps (before_json, after) such as get_data_table_rows or export_data_table_as_json output, which win when present. Returns identical, added/removed/changed rows with counts and changed cells as {column, a, b}.

Returns: { mode, identical, added_count, removed_count, changed_count, unchanged_count, a_row_count, b_row_count, added_rows:[{row_name,row_data}], removed_rows:[...], changed_rows:[{row_name,changed_cells:[{column,a,b}]}] }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
aNoFull asset path of the first DataTable (alias: table_a); asset mode
bNoFull asset path of the second DataTable (alias: table_b); asset mode
afterNoThe 'after'/B table dump as a JSON object/array or stringified JSON (alias: after_json); JSON mode
beforeNoAlias of before_json: the first (before) table dump; before_json wins when both are given
table_aNoAlias of a: asset path of the first DataTable, e.g. "/Game/Data/DT_Items"; a wins when both are given
table_bNoAlias of b: asset path of the second DataTable, e.g. "/Game/Data/DT_Items_Old"; b wins when both are given
after_jsonNoAlias of after: the second (after) table dump; after wins when both are given
before_jsonNoThe 'before'/A table dump as a JSON object/array or stringified JSON (alias: before); JSON mode

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.2.0
    • addedInput schema / properties / after_json / description
      Added value: +"Alias of after: the second (after) table dump; after wins when both are given"
    • addedInput schema / properties / before / description
      Added value: +"Alias of before_json: the first (before) table dump; before_json wins when both are given"
    • addedInput schema / properties / table_a / description
      Added value: +"Alias of a: asset path of the first DataTable, e.g. \"/Game/Data/DT_Items\"; a wins when both are given"
    • addedInput schema / properties / table_b / description
      Added value: +"Alias of b: asset path of the second DataTable, e.g. \"/Game/Data/DT_Items_Old\"; b wins when both are given"
    • removedInput schema / required
      Removed value: -[
      -  "a",
      -  "b"
      -]
  2. First observedv1.1.0

TDQS

A4.4/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, and the description reinforces this with 'without modifying either'. It adds context beyond the annotations by disclosing the full result shape (counts, added/removed/changed rows, changed cells), giving the agent a clear picture of the operation's output and effect.

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?

Two compact blocks: purpose plus mode selection up front, followed by the return structure. The prose is dense but not wasteful; the only minor blemish is the slightly doubled 'Returns' framing, which is redundant rather than confusing.

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, so the description rightly carries the return-value burden and enumerates the result object field by field. With full schema coverage on inputs and the two-mode contract spelled out, an agent has everything it needs to call this correctly.

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 per-field alias precedence is already documented. The description adds a cross-parameter rule the schema does not express: JSON dumps win over asset paths when both are supplied, and it ties the before/after pair to recognizable sibling outputs. That is genuine value above the schema baseline.

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 (diff) plus the resource (two DataTables) and the exact granularity ('row by row and cell by cell without modifying either'). It further distinguishes itself from sibling data-table tools by naming the producers of its inputs (get_data_table_rows, export_data_table_as_json), so an agent can place it precisely.

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?

The description lays out the two invocation modes (asset paths a/b vs. JSON dumps before_json/after) and where the JSON comes from, which is actionable routing guidance. It does not state when NOT to use it or name a competing diff tool explicitly, so it stops short of a full when/when-not treatment.

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