Skip to main content
Glama

diff_builds

Read-onlyIdempotent

Compare two builds to list added, removed, and changed schema fields, entity members, event fields, convars, Pulse bindings, and Hammer classes; find code or configs that may break after a patch.

Instructions

Show what changed between two ingested builds, at member granularity: one row per added/ removed/changed schema field, entity member, game-event field, script symbol, convar, Pulse binding or Hammer class. Each entry carries group (the parent class/entity/event/library) so members cluster under it; before/after hold only that member's own value. counts gives the exact per-section added/removed/changed breakdown ({section: {added, removed, changed}}), taken BEFORE the per-section limit cap, so it stays true even when sections is truncated to the first limit entries; totals[section] is the sum of that section's three counts. Use it after a game patch to find code or configs that might break.

Input Schema

NameRequiredDescriptionDefault
gameYesGame id: one of cs2, deadlock
to_buildNoNewer build number; default = current build
from_buildNoOlder build number; default = previous build

Output Schema

NameRequiredDescriptionDefault
gameYes
limitNoRow cap applied to each section
countsNoPer-section change-type breakdown `{section: {'added': n, 'removed': n, 'changed': n}}`, counted BEFORE the per-section `limit` cap — exact even when `sections` is truncated. `totals[section]` is the sum of that section's three counts.
totalsNoFull change count per section, before the per-section `limit` truncation
sectionsYes
to_buildYes
from_buildYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

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

Goes well past the annotations (readOnly/idempotent/openWorld) by disclosing output semantics that matter for correctness: `group` clusters members under their parent, `before`/`after` hold only the member's own value, and crucially `counts` is computed BEFORE the per-section `limit` cap so it remains accurate when output is truncated. That truncation caveat is exactly the kind of trait an agent could otherwise misread.

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 action and granularity before descending into output-field mechanics. The tail (counts/totals/limit explanation) is dense and partly redundant with the existing output schema, costing some economy without being padding.

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?

An output schema exists and annotations cover the safety profile, so the description is free to skip return values — yet it still spends most of its words describing result shape. What is missing is the reference to the `sections`/`limit` inputs it alludes to, leaving a small gap about how truncation is actually controlled.

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% and the defaults for to_build/from_build are already documented there, so the schema carries parameter meaning. The description arguably muddies things by referencing `sections` and `limit` as if they were inputs, yet neither appears in the input schema — an agent has no way to set them.

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?

Names a specific verb and resource ('Show what changed between two ingested builds') and immediately qualifies granularity ('one row per added/removed/changed ...'). The enumeration of member kinds (schema field, entity member, game-event field, script symbol, convar, Pulse binding, Hammer class) makes it unmistakably distinct from build_list or search_docs.

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?

Gives a concrete triggering context: 'Use it after a game patch to find code or configs that might break.' That is a clear when-to-use signal, but no explicit when-not or named alternative (e.g. compare against build_list for raw build metadata) is offered.

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