Skip to main content
Glama

Change coupling

change_coupling
Read-onlyIdempotent

Analyze git history to find files frequently changed together, revealing hidden dependencies imports miss. Filter by repo, path, time window, or a single file.

Instructions

Find pairs of files that are often changed in the same commits in the last N days (merge commits excluded), most shared commits first. Reveals hidden dependencies that imports do not show, e.g. code and the config or test it always drags along. Pass "file" to see what usually changes together with one file.

Input Schema

NameRequiredDescriptionDefault
daysNoTime window in days.
fileNoOnly pairs that include this repository-relative file.
pathNoRestrict to this file or directory.
repoNoRepo name or path; defaults to the first configured repo.
limitNoMaximum number of results.
excludeNoGlobs to leave out, as in file_hotspots.
minSharedNoMinimum number of shared commits for a pair to be listed.
maxFilesPerCommitNoSkip commits touching more files than this (bulk renames, formatting).

Output Schema

NameRequiredDescriptionDefault
repoYesName of the repository that was queried.
pairsYes
pairCountYesAll pairs with at least minShared shared commits.
windowDaysYes
scanTruncatedYes
commitsScannedYes
commitsSkippedYesCommits ignored for touching more than maxFilesPerCommit.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.5.0
    • changedInput schema / properties / days / description
      Previous value: -"Size of the time window in days."New value: +"Time window in days."
    • changedInput schema / properties / exclude / description
      Previous value: -"Glob patterns for files to leave out, same syntax as in file_hotspots."New value: +"Globs to leave out, as in file_hotspots."
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of results (1-100)."New value: +"Maximum number of results."
    • changedInput schema / properties / repo / description
      Previous value: -"Repository name or absolute path from the allowlist. Defaults to the first configured repo."New value: +"Repo name or path; defaults to the first configured repo."
  2. First observedv0.2.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real behavioral detail beyond that: merge commits are excluded from the count, results are ranked by shared-commit count, and commits touching many files are skipped (the maxFilesPerCommit behavior). It does not mention cost/performance or result shape, but the output schema covers the latter.

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

Conciseness5/5

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

Three sentences, front-loaded with the core operation and scope, then the value proposition, then the key optional usage pattern. No filler and no repetition of schema content.

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?

An output schema exists, so return values need no explanation, and all 8 parameters carry full schema descriptions. The description covers the non-obvious analytic semantics (merge exclusion, bulk-commit skipping, ranking) that an agent would otherwise have to guess from the schema alone.

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 description coverage is 100%, so the baseline is 3, but the description adds interpretive value by explaining what the 'file' filter actually does ('see what usually changes together with one file') and by tying 'often changed' to the minShared threshold and the merge-commit/bulk-commit exclusions. This helps disambiguate 'file' from 'path', which the schema alone leaves subtle.

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 ('Find pairs of files that are often changed in the same commits'), with scope (last N days, merge commits excluded) and ordering (most shared commits first). This is clearly distinguishable from siblings like file_hotspots or file_history, which concern individual file churn rather than co-change pairs.

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 clear usage context: it 'reveals hidden dependencies that imports do not show, e.g. code and the config or test it always drags along,' and instructs 'Pass "file" to see what usually changes together with one file.' That tells an agent when this tool is the right one, but no explicit when-not condition or named alternative among the 12 siblings is offered.

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