Skip to main content
Glama

gograph_changes

Read-onlyIdempotent

Compare Go declaration fingerprints to identify changed declarations after edits without flagging every symbol in an edited file. Use before impact analysis or review.

Instructions

Compare Go declaration fingerprints, including bodies, without marking every symbol in an edited file modified. Without git_ref, inspects trusted persisted graph.json without refreshing, or the startup fallback if no usable artifact exists. With git_ref, refreshes and extracts a confined declaration baseline without compiling application code. Existing but deselected files are excluded, not deleted; unsafe inputs and parse failures produce diagnostics, never deletion proof. Missing legacy declaration fingerprints produce unknown. Read-only analysis. WHEN TO USE: After editing to identify changed declarations before impact/review. NOT TO USE: For line-level diffs or a complete census when evaluation is partial/cannot_evaluate. RETURNS: Native gograph.changes.v1 with complete/partial/cannot_evaluate, diagnostics, changed_files, and new/modified/deleted/excluded/unknown symbol rows; CLI uses the same value and exits 2 for incomplete evaluation. Uncommitted modes compare declarations against HEAD, including selected untracked Go files. Traversal consumers refuse deleted declarations requiring historical caller evidence. Review instead includes changes --git HEAD declaration evidence and names unavailable historical callers, tests and risk. Incomplete comparisons and missing/ambiguous current identities remain errors. Rebuild before traversing newly added symbols.

Input Schema

NameRequiredDescriptionDefault
rootNoAbsolute path of the checkout you are working in (your cwd or git worktree). Must be this server's repository or one of its git worktrees; the answer then comes from that checkout's own graph. A path elsewhere is refused. Alias: cwd. Omit only when the configured checkout is the one you mean.
git_refNoOptional git reference to compare against (e.g., 'main', 'HEAD~5', 'v1.4.50')
intentionNoTechnical rationale, required for analytical calls selecting an active session.
session_idNoCaller selector returned by session_create. Omission means an independent caller; never inherits server environment or another caller's session.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.7.18
    • addedInput schema / properties / intention
      Added value: +{
      +  "description": "Technical rationale, required for analytical calls selecting an active session.",
      +  "type": "string"
      +}
    • addedInput schema / properties / root
      Added value: +{
      +  "description": "Absolute path of the checkout you are working in (your cwd or git worktree). Must be this server's repository or one of its git worktrees; the answer then comes from that checkout's own graph. A path elsewhere is refused. Alias: cwd. Omit only when the configured checkout is the one you mean.",
      +  "type": "string"
      +}
    • addedInput schema / properties / session_id
      Added value: +{
      +  "description": "Caller selector returned by session_create. Omission means an independent caller; never inherits server environment or another caller's session.",
      +  "type": "string"
      +}
  2. Addedv1.5.3
  3. Removedv1.5.3
  4. First observedv1.0.0

TDQS

A4.1/5.0
Behavior5/5

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

Well beyond the annotations, which already cover read-only/idempotent/no-destructive: the description discloses the two operating modes (no git_ref reads persisted graph.json without refreshing; with git_ref refreshes), that no application code is compiled, that deselected files are excluded rather than deleted, that parse failures yield diagnostics and never deletion proof, and that missing legacy fingerprints resolve to unknown. It also states refusal behavior for unsafe inputs and the exit-2 convention for incomplete evaluation.

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?

The purpose is front-loaded and the WHEN/NOT/RETURNS structure is helpful, but the middle is a wall of compressed fragments ('confined declaration baseline', 'Traversal consumers refuse deleted declarations requiring historical caller evidence') that read as internal design notes rather than agent-facing guidance. Several sentences could be merged or dropped without losing actionable information.

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?

With no output schema, the description does the right thing by enumerating the return shape (complete/partial/cannot_evaluate, diagnostics, changed_files, symbol row categories) and the incomplete-evaluation failure modes. A few concepts — what a 'confined declaration baseline' is, and what distinguishes 'excluded' from 'unknown' in practice — remain underspecified for a tool with this many modes.

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 baseline is 3, but the description adds genuine semantics the schema does not: git_ref's presence switches the tool between a no-refresh artifact read and a refresh, and root scoping determines which checkout's graph answers. intention and session_id are left entirely to their schema text, which is acceptable given the full coverage.

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?

The opening sentence states a specific verb and resource — 'Compare Go declaration fingerprints, including bodies' — and immediately distinguishes the semantics from line-level diffing ('without marking every symbol in an edited file modified'). The jargon 'fingerprints' and the dense follow-on sentences make the agent work harder than necessary to confirm the core operation, but the operation is unmistakably identifiable.

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?

Explicit 'WHEN TO USE' (after editing, before impact/review) and 'NOT TO USE' (line-level diffs; complete census when evaluation is partial) sections are present, plus a routing note pointing to review for changes --git HEAD evidence. It never names the actual sibling tool identifiers (gograph_review, gograph_impact), so the agent must infer the mapping, and the NOT-TO-USE clause is phrased awkwardly enough to require re-reading.

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