Skip to main content
Glama

Change-history measurements (hotspots, change coupling)

codetopo_history
Read-only

Reports code hotspots and change coupling from a local Git history using change frequency, complexity, support, and confidence; returns an unmeasured report when no repository path is provided.

Instructions

Hotspots (change frequency x complexity, both factors stated) and change coupling (support/confidence as pair counts) over a local working tree's git history. History is local-only: without repo_path the answer is the unmeasured report (measured: false with the reason), never invented numbers.

Input Schema

NameRequiredDescriptionDefault
sinceNoOnly commits since this date (passed to git log --since).
db_pathYesPath to the index database.
repo_pathNoLocal working tree whose git history is read. Omit for the unmeasured report.
min_supportNoMinimum support for a coupled pair to be reported. Default 2.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.7.0

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses a key behavioral contract: missing repo_path returns measured: false with a reason instead of inventing numbers. That fallback behavior and data-provenance constraint are exactly the kind of operational detail an agent needs before invoking it.

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?

Two dense sentences front-load the metrics and then state the local-history fallback behavior. There is no filler, and the parenthetical definitions earn their place by clarifying the measurements.

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?

For a read-only measurement tool with full schema coverage, the description covers the core concepts and the important missing-repo_path fallback. It does not fully describe the measured output structure, but with no output schema this is a minor remaining gap rather than a blocking one.

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%, so the schema already documents all four parameters, including the repo_path omission behavior and min_support default. The description reinforces repo_path semantics but adds little parameter-level detail beyond the schema.

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 description states a specific resource and analysis: hotspots and change coupling computed over a local working tree's git history. It is clear enough to separate this from general metrics or diff tools, but it does not explicitly name sibling tools or contrast itself with them.

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?

It gives a clear usage condition: history is local-only and omitting repo_path produces an unmeasured report rather than fabricated numbers. It does not describe when an agent should prefer another sibling tool, so it stops short of full alternative guidance.

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