Skip to main content
Glama

detect_changes

Read-onlyIdempotent

Maps a Git diff to changed files, callers, dependencies, and test impact so you can review code changes and assess risk.

Instructions

Map a Git diff to files and impact. Page with snapshot cursors.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
viaNoAdd via_qn, via_edge.
depthNo
limitNo
scopeNoimpact
seedsNoList changed-symbol seeds with independent pagination.none
sinceNo
formatNotree
projectYes
fixpointNoWalk to closure; no depth.
directionNoinbound=callers; outbound=dependencies; both=union.inbound
edge_typesNoInbound walk; default CALLS.
seed_limitNo
base_branchNoDefault: origin/HEAD, else main, else master, else the upstream.
config_pathNoProject config override; absolute or project-relative.
seed_cursorNoContinue seeds:list; excludes nonzero seed_offset.
seed_filterNoProduct excludes indexed test metadata and configured test globs.all
seed_offsetNo
module_limitNo
changed_limitNo
impact_cursorNo
impact_offsetNo
module_cursorNo
module_offsetNo
changed_cursorNo
changed_offsetNo
max_output_tokensNoSizing hint; hard ceiling is 4 UTF-8 bytes/token.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changedv0.12.1
    • removedInput schema / properties / base_branch / default
      Removed value: -"main"
    • addedInput schema / properties / base_branch / description
      Added value: +"Default: origin/HEAD, else main, else master, else the upstream."
    • addedInput schema / properties / config_path
      Added value: +{
      +  "description": "Project config override; absolute or project-relative.",
      +  "type": "string"
      +}
    • addedInput schema / properties / edge_types
      Added value: +{
      +  "description": "Inbound walk; default CALLS.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / fixpoint
      Added value: +{
      +  "description": "Walk to closure; no depth.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / scope / enum
      Previous value: -[
      -  "files",
      -  "impact"
      -]New value: +[
      +  "files",
      +  "impact",
      +  "tests"
      +]
    • addedInput schema / properties / seed_cursor
      Added value: +{
      +  "description": "Continue seeds:list; excludes nonzero seed_offset.",
      +  "type": "string"
      +}
    • addedInput schema / properties / seed_filter
      Added value: +{
      +  "default": "all",
      +  "description": "Product excludes indexed test metadata and configured test globs.",
      +  "enum": [
      +    "all",
      +    "product"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / seed_limit
      Added value: +{
      +  "default": 50,
      +  "maximum": 1000,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / seed_offset
      Added value: +{
      +  "default": 0,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / seeds
      Added value: +{
      +  "default": "none",
      +  "description": "List changed-symbol seeds with independent pagination.",
      +  "enum": [
      +    "none",
      +    "list"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / via
      Added value: +{
      +  "description": "Add via_qn, via_edge.",
      +  "type": "boolean"
      +}
  2. Changed15 schema fields changedv0.11.0
    • addedInput schema / properties / changed_cursor
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / changed_limit
      Added value: +{
      +  "default": 20,
      +  "maximum": 5000,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / changed_offset
      Added value: +{
      +  "default": 0,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • removedInput schema / properties / depth / description
      Removed value: -"Max traversal hops from the changed symbols."
    • changedInput schema / properties / direction / description
      Previous value: -"inbound (default) = the blast radius: transitive CALLERS of the changed symbols. outbound = what the changed code depends on. both = union."New value: +"inbound=callers; outbound=dependencies; both=union."
    • addedInput schema / properties / impact_cursor
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / impact_offset
      Added value: +{
      +  "default": 0,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • removedInput schema / properties / limit / description
      Removed value: -"Per-symbol impacted rows shown (nearest hops first). impacted_total is always exact and the impacted_modules rollup always complete regardless."
    • addedInput schema / properties / max_output_tokens
      Added value: +{
      +  "default": 3200,
      +  "description": "Sizing hint; hard ceiling is 4 UTF-8 bytes/token.",
      +  "maximum": 1000000,
      +  "minimum": 128,
      +  "type": "integer"
      +}
    • addedInput schema / properties / module_cursor
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / module_limit
      Added value: +{
      +  "default": 20,
      +  "maximum": 256,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / module_offset
      Added value: +{
      +  "default": 0,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / scope / default
      Added value: +"impact"
    • removedInput schema / properties / scope / description
      Removed value: -"files: changed files only (no traversal). impact (default): files + the transitive impact set."
    • removedInput schema / properties / since / description
      Removed value: -"Git ref or tag to compare from (e.g. HEAD~5, v0.5.0). Diffs <ref>...HEAD."
  3. Changed1 schema field changedv0.10.4
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "type": "object"
      -}New value: +null
  4. Addedv0.10.0
  5. Removedv0.9.0
  6. First observedv1.0.0

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so safety is covered. The description's only behavioral disclosure is 'Page with snapshot cursors', which is a useful but vague hint about the pagination model; it says nothing about the multiple walk modes (depth vs fixpoint), base-branch resolution, or config overrides that dominate this tool's behavior.

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

Conciseness3/5

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

Two tightly written, front-loaded sentences with no padding. However, for a 26-parameter tool the brevity crosses into under-specification rather than true conciseness.

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

Completeness2/5

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

No output schema and no annotation gaps to lean on; the description omits the multi-dimensional pagination model, the base-branch defaults, and the scope/direction modes. For a tool this complex it is not remotely complete.

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

Parameters1/5

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

With 26 parameters and only 38% schema description coverage, the description must carry significant param meaning, yet it clarifies none. It only loosely gestures at 'files and impact' (scope) and cursors, leaving depth, fixpoint, seeds, edge_types, direction, and the many offset/limit knobs undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Map a Git diff to files and impact'), which is concrete and understandable. It does not differentiate this from plausible siblings like compare_graphs or query_graph, and 'Page with snapshot cursors' is jargon that adds little clarity.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no pointer to an alternative tool. An agent cannot tell from the description whether to reach for this versus compare_graphs or search_graph when analyzing changes.

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