Skip to main content
Glama

fingerprint

Computes a stable trace hash that ignores messages, addresses, paths, and line numbers by default, so identical bugs on different runs or hosts match and changed hashes can be explained.

Instructions

Compute a stable fingerprint for each trace in the text.

The hash covers the language, the top-level and root-cause exception types and the innermost application frames (function + file base name). Messages, memory addresses, ids, container-vs-local path prefixes, generated names ($$Proxy123) and, by default, line numbers are ignored, so the same bug on another run, host or commit hashes identically while a different bug does not. The components that went into the hash are listed so a changed fingerprint can be explained.

Args: text: One or more traces (max 5,000,000 characters). include_line_numbers: Also hash line numbers (stricter: edits to the file change the hash). redact: Remove secrets etc. from the output (default true).

Input Schema

NameRequiredDescriptionDefault
textYes
redactNo
include_line_numbersNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the whole burden and does so well: it enumerates what is hashed and what is deliberately ignored (messages, addresses, ids, path prefixes, generated names, line numbers), states the stability guarantee, and notes that the hash components are returned so changes can be explained. It also flags the redact default, a behaviorally significant side effect.

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?

Front-loaded with the purpose, then a tight explanatory paragraph, then a compact Args block. Every clause adds usable information about hashing behavior; nothing is redundant padding.

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 three-parameter, no-annotation tool with an output schema, the description covers behavior, inputs, and stability semantics thoroughly. The remaining gap is relative positioning against the sibling tools and any note on result ordering or batching for multi-trace input.

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

Parameters5/5

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

Schema coverage is 0%, so all meaning must come from the description, and it supplies an Args block defining every parameter: text carries a 5,000,000 character cap, include_line_numbers is framed as the stricter mode where file edits change the hash, and redact has an explicit default. This is materially more than the schema titles convey.

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?

A concrete verb and resource ("Compute a stable fingerprint for each trace") plus a precise statement of what the hash covers. It is plainly distinct from parse_trace or redact_trace, which would not describe hashing exception types and frames.

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?

The description gives the operating context (same bug across runs, hosts, or commits hashes identically) which implies its use for deduplication and grouping. It does not explicitly say when to use this instead of compare_traces or parse_trace, and names no exclusions, so it falls short of explicit routing.

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