Skip to main content
Glama

verify_receipt

Read-onlyIdempotent

Verify the Ed25519 signature on a TrustBench receipt. Two modes: (1) Lookup mode — pass receipt_id and the server fetches the receipt from trustbench.io and re-runs verification (handy when you only have an ID). (2) Offline mode — pass receipt_json (the full {receipt, signature} envelope an agent received from a third party) and the server verifies the Ed25519 signature against the published public key at trustbench.io/.well-known/trustbench-pubkey without trusting the database. Exactly one of receipt_id or receipt_json must be provided. Output: returns JSON with receipt_id, signature_valid (boolean), on_chain_verified (boolean, where present), signature_alg ("ed25519"), verify_url, pubkey_url. For non-server-mediated verification with no network round-trip, use the @trustbench/verify-receipt npm package.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
receipt_idNoLookup mode: the receipt ID to fetch and verify. Mutually exclusive with receipt_json.
receipt_jsonNoOffline mode: a full signed-receipt envelope {receipt, signature} (or a Phase 3 SignedReceipt). Verified against the published Ed25519 public key without database lookup. Mutually exclusive with receipt_id.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, but the description adds critical behavioral context: it fetches from trustbench.io in lookup mode, avoids database trust in offline mode, returns a specific JSON shape (receipt_id, signature_valid, on_chain_verified, etc.), and enforces that exactly one of receipt_id or receipt_json must be provided. This goes well beyond the annotations and gives the agent a clear model of what will happen.

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?

The description is information-dense but well-organized: one core purpose sentence, two mode explanations, a combined constraint and output summary, and an alternative-tool recommendation. It avoids redundancy with the schema and remains compact. It could be slightly more scannable with bullets, but it earns its length.

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?

Given that there is no output schema, the description thoroughly documents the return fields. It also covers both operational modes, input constraints, cryptographic algorithm, and public key source. It even mentions legacy Phase 3 SignedReceipt support. For a moderately complex tool with nested objects and multiple modes, this description leaves no significant gaps.

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 coverage is 100% with descriptions for both receipt_id and receipt_json, so the baseline is 3. The description elevates this by explaining the distinction between lookup and offline modes, the envelope structure '{receipt, signature}', and the trust model ('without trusting the database'). It confirms the oneOf constraint and adds operational context that helps the agent choose the correct parameter for the situation.

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 opens with a specific verb and resource: 'Verify the Ed25519 signature on a TrustBench receipt.' It clearly distinguishes the tool's purpose from siblings like get_receipt (which fetches a receipt) and get_rankings (which likely retrieves rankings). The two modes are explicitly named, making the scope unmistakable.

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?

The description provides explicit usage guidance by breaking out two modes with concrete triggers: 'Lookup mode — pass receipt_id... handy when you only have an ID' and 'Offline mode — pass receipt_json... without trusting the database.' It also suggests an alternative for non-server-mediated verification: 'use the @trustbench/verify-receipt npm package.' This directly tells the agent when to use this tool versus when to use something else.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: get_rankings retrieves liveness rankings, get_receipt fetches a receipt by ID, and verify_receipt validates receipt signatures. There is no overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: get_rankings, get_receipt, verify_receipt. The naming is uniform and predictable.

Tool Count4/5

Three tools is a reasonable count for a focused server dealing with rankings and receipt verification. It is slightly on the lower side but not too few, as each tool serves a distinct and necessary function.

Completeness3/5

The tool set covers core operations: retrieving rankings and handling receipts (fetch and verify). However, there are notable gaps such as no tool to list receipts or query provider capabilities beyond rankings, which could limit agent workflows.