Skip to main content
Glama
waterofriver

ghidriff-mcp

by waterofriver

ghidriff_run_diff

Run a blocking binary diff, comparing old and new binaries to produce structured function changes and match statistics.

Instructions

Run a diff and wait for it to finish (blocking convenience wrapper).

Prefer ghidriff_start_diff for large binaries: this call occupies the tool call for the whole analysis.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
engineNoDiff engine: VersionTrackingDiff (default), SimpleDiff or StructualGraphDiff.VersionTrackingDiff
summaryNoAlso diff the oldest against the newest binary.
timeout_sNoOverall budget in seconds (default: server setting, 3600).
force_diffNoDiff even when architecture or symbols do not match.
no_symbolsNoTurn symbols off for analysis. Use it for offline/air-gapped work: ghidriff otherwise queries PDB symbol servers such as Microsoft's.
old_binaryYesPath to the older binary.
output_dirNoWhere to write diffs. Defaults to the job run directory.
new_binariesYesOne or more newer binaries, oldest first.
force_analysisNoRe-analyse every binary instead of reusing cached analysis.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses the blocking behavior ('wait for it to finish', 'occupies the tool call for the whole analysis'). Since no annotations are provided, the description carries the full burden of behavioral disclosure. It mentions the blocking aspect but could optionally add detail about timeout behavior or return semantics; however, the core blocking behavior is well conveyed.

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 sentences, front-loaded with the primary purpose and then the usage caveat. Every sentence earns its place, and there is zero redundancy. The warning about large binaries is placed immediately after the purpose.

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?

The tool has an output schema, so return values are covered there. The description provides the essential blocking behavior and usage guidance. With 9 parameters, the schema covers them all, and the description tells the agent when to use this versus the sibling. It is complete enough for an agent to invoke correctly.

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 all parameters are documented in the input schema. The tool description adds no parameter-specific information beyond what the schema already provides. Baseline of 3 is appropriate because the schema handles parameter semantics.

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?

The description states a specific verb ('Run'), a resource ('diff'), and its nature ('blocking convenience wrapper'). It distinguishes itself from the sibling ghidriff_start_diff by positioning as the blocking version of the same operation. This is clear and specific.

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

Usage Guidelines5/5

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

Explicitly tells the agent to 'Prefer ghidriff_start_diff for large binaries' and explains why (this call occupies the tool call for the whole analysis). This is direct guidance on when NOT to use this tool and when to choose an alternative.

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