Skip to main content
Glama

get_content_hash

Read-onlyIdempotent

Computes a versioned SHA-256 hash of a model and its descendants on demand so you can compare elaborated content across snapshots using the same format_version.

Instructions

Versioned SHA-256 of a model and its descendants, computed on demand. Compare elaborated content across snapshots using the same format_version. Names and IDs participate; source metadata and primitive definitions are excluded. Track naja_git_hash separately for engine changes. This is not functional equivalence. Large hierarchies can take time to hash.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_content_hash"
  }
}

Input Schema

NameRequiredDescriptionDefault
moduleNoElaborated module/model name; omit for the top design.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.1.24

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, the description discloses deterministic composition (names and IDs count, source metadata and primitives do not), the format_version precondition for valid comparisons, that it is not functional equivalence, and that hashing large hierarchies is slow. These are exactly the caveats an agent needs to trust or avoid the result.

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

Conciseness4/5

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

Five short sentences, front-loaded with what the hash is and how to compare it, with caveats trailing. Dense but tight; the terse fragment style is efficient though slightly clipped, and each sentence carries distinct 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 covers what the value represents, its stability conditions (format_version), and its performance characteristics. It does not say where format_version is obtained or what a mismatch does, a minor gap for a single-parameter read tool with full safety annotations.

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 coverage is 100% and the single 'module' parameter is already documented as omitting for the top design. The description implies the hierarchical scope ('and its descendants') but adds no new syntax or semantics for the parameter itself, so the baseline 3 applies.

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: a versioned SHA-256 hash of a model and its descendants, computed on demand. It also scopes the input precisely (names/IDs participate, source metadata and primitives excluded), which distinguishes it from a plain git hash and from other inspection tools like get_hierarchy or get_stats.

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 'compare across snapshots using the same format_version' clause gives a clear use case, and 'track naja_git_hash separately for engine changes' steers the agent to an alternative signal for a different question. It lacks an explicit statement of when not to use it (e.g. instead of get_module_card for single-model inspection), so it falls short of full when/when-not/alternatives routing.

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