ReceiptRail
Server Details
Read-only on-chain receipt check for x402 payments; confirm settlement before trusting a tx.
- Status
- Healthy
- Uptime
- 98.6% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- xka0085-byte/agenttoll
- GitHub Stars
- 0
- Server Listing
- ReceiptRail — x402 Delivery Receipts on Solana
TDQS
Scored across 4 tools
get_receipt, issue_receipt, and verify_receipt have clearly distinct actions and descriptions. verify_receipt and verify_x402_receipt both verify receipts, but descriptions clearly distinguish on-chain AgentToll verification from x402 JWS-extension verification, so misselection is possible but unlikely.
All tools use snake_case with a verb-first pattern: get_receipt, issue_receipt, verify_receipt, verify_x402_receipt. The only minor deviation is the extra protocol qualifier in verify_x402_receipt, but the overall convention is predictable.
Four tools is slightly thin but well within the typical 3-15 scoped range for a focused receipt service. Each tool covers a distinct operation (issue, get, verify on-chain, verify x402 format).
The core lifecycle is covered: issuing a receipt, fetching it by ID or payment reference, and verifying it both on-chain and in x402 format. A listing/search operation by buyer or seller is missing, but agents can work around this with individual lookups.
Available Tools
4 toolsget_receiptGet receipt detailsAInspect
Fetch full receipt details: digests, checks, outcome, amount, buyer, seller, timestamp, PDA. Look up by receipt_id, or by x402_payment_ref (always works — the receipt lives on-chain). Read-only, no cost.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt_id | No | Receipt id, e.g. r_abcdef1234567890 | |
| payment_ref | No | x402_payment_ref of the transaction (use this if receipt_id unknown; resolved on-chain) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states 'Read-only, no cost' and 'always works — the receipt lives on-chain', which informs the agent about safety and reliability. It does not mention failure modes or return format details, but for a read-only tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence states what is returned, the second explains lookup methods and safety. Critical information is front-loaded and every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the returned fields, both lookup methods, and discloses read-only status. With no output schema, this is sufficient for an agent to know what to expect. Minor gaps like precedence when both parameters are provided are not addressed, but the tool's simplicity makes this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters have descriptions. The description adds value by explaining that payment_ref is the more reliable lookup method and provides an example format for receipt_id. This goes beyond the schema's basic type descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Fetch) and resource (full receipt details) and enumerates the specific fields returned (digests, checks, outcome, amount, buyer, seller, timestamp, PDA). This clearly distinguishes it from sibling tools issue_receipt and verify_receipt, which focus on creation and verification respectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear lookup guidance: use receipt_id or x402_payment_ref, and explicitly notes that payment_ref always works because the receipt lives on-chain. It does not explicitly contrast with siblings, but the purpose is distinct and the usage context is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_receiptIssue delivery receiptAInspect
Anchor a SHA-256 digest of delivered content plus the x402 settlement reference on Solana. Returns a permanent, publicly verifiable receipt (poll until outcome === "settled"). Costs 0.001 USDC via x402; if x402_payment_signature is omitted, returns the payment challenge instead (pay 0.001 USDC to the service address, then call again with the payment tx signature).
| Name | Required | Description | Default |
|---|---|---|---|
| buyer | No | Optional buyer identifier (wallet address) | |
| seller | No | Optional seller identifier | |
| x402_payment_ref | Yes | Unique reference for this transaction (1-128 chars) | |
| deliverable_digest | Yes | SHA-256 hex digest (64 chars) of the delivered content | |
| x402_payment_signature | No | Solana tx signature of the 0.001 USDC payment to the service address. Omit to receive the payment challenge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses that it costs 0.001 USDC, requires x402 payment, and returns a payment challenge if signature omitted. However, it does not describe what happens on failure (e.g., insufficient payment, invalid digest), or the exact format of the challenge, though polling behavior is mentioned. Partial disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact two-sentence description that front-loads the core purpose and then explains the payment flow. Good use of parentheses. Slightly dense, but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a transactional tool with payment and multiple optional params, description covers the essential flow but misses failure scenarios, return structure details, and any rate limits. Given no output schema and no annotations, there is room for more, but the core usage is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a decent description. Description clarifies that x402_payment_signature is optional and its omission triggers challenge issuance, which adds value. But it doesn't elaborate on buyer/seller semantics beyond schema—acceptable given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'anchor', resource (SHA-256 digest + x402 settlement reference on Solana), and outputs a permanent publicly verifiable receipt. Differentiates from siblings: get_receipt retrieves, verify_receipt verifies, issue_receipt anchors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly explains when to use: to issue a receipt for delivered content after payment. It also specifies the two-step flow: omit signature to get challenge, then call again with signature. No alternatives mentioned but the usage context is clear and complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_receiptVerify delivery receiptAInspect
Verify an AgentToll receipt against live Solana state: PDA owner must be the AgentToll program and the stored digest must match the receipt. Look up by receipt_id, or by x402_payment_ref (always works — the receipt lives on-chain). Read-only, no cost.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt_id | No | Receipt id, e.g. r_abcdef1234567890 | |
| payment_ref | No | x402_payment_ref of the transaction (use this if receipt_id unknown; resolved on-chain) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: discloses read-only nature, no cost, on-chain verification logic, and the fallback lookup behavior. It does not state failure semantics (error vs. boolean result) or return format, which is a minor gap for a verify tool given zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste: core verification logic front-loaded, then lookup methods, then a concise safety note. Every sentence earns its place and the most important information appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description covers verification semantics and lookup well, but does not explain what the agent receives on success or failure, nor whether both parameters can be provided together. This is a meaningful gap for an MCP tool with no structured output contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are well documented in the schema, so the baseline is 3. The description adds the nuance that payment_ref 'always works' and clarifies the relationship between the two lookups, adding marginal value beyond the schema but not compensating for anything missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (verify) and resource (AgentToll receipt against live Solana state), then defines what verification means concretely: PDA owner must be the AgentToll program and the stored digest must match. This gives an agent a precise mental model and implicitly differentiates from siblings get_receipt (fetch) and issue_receipt (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear lookup guidance: primary key receipt_id, with payment_ref as the reliable fallback ('always works — the receipt lives on-chain'), reinforced by the schema's 'use this if receipt_id unknown.' However, it does not explicitly state when to choose verify_receipt over get_receipt, leaving the verify-vs-fetch decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_x402_receiptVerify signed x402 receipt (official offer-receipt format)AInspect
Verify a signed receipt in the official x402 offer-receipt extension format (docs.x402.org/extensions/offer-receipt, npm @x402/extensions). Accepts {format:"jws", signature} artifacts (JWS with EdDSA/Ed25519 or ES256/P-256), checks structure, required payload fields (version/network/resourceUrl/payer/issuedAt), cryptographic signature, optional freshness window, and optional expected values. Public key resolves automatically from did:key/did:web/did:jwk kid, or pass public_key_jwk directly. Read-only, no cost.
| Name | Required | Description | Default |
|---|---|---|---|
| expect | No | Optional assertions: {resourceUrl?, payer?, network?} — verification fails if the payload contradicts them. | |
| receipt | Yes | Signed receipt artifact, e.g. {"format":"jws","signature":"<JWS compact serialization>"} | |
| public_key_jwk | No | Optional JWK to verify with. Omit to resolve from the kid (did:key:z... Ed25519, did:web, did:jwk). | |
| max_age_seconds | No | Freshness window for issuedAt (default 3600; pass 0 to skip the freshness gate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses that it is read-only and no-cost, checks structure, payload fields, cryptographic signature, freshness, and expected values, and resolves keys from DIDs. It does not describe the exact return shape or error output, which remains a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core purpose and then layers relevant verification details without obvious filler. It could be slightly tightened, but every clause contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-input verifier with no annotations and no output schema, the description covers inputs, verification stages, key resolution, freshness, and expected-value assertions thoroughly. The main omission is the success/return format, which is not fully specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, but the description adds supported algorithm details (EdDSA/Ed25519, ES256/P-256) and explains automatic public-key resolution from did:key/did:web/did:jwk when public_key_jwk is omitted. These details go beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Verify') and resource ('signed receipt') constrained to the official x402 offer-receipt extension format. This scoping distinguishes it from the generic sibling verify_receipt without needing to name it explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly scopes use to the x402 offer-receipt extension format and cites the docs/npm package, giving the agent enough context to choose this over a generic verifier. However, it does not explicitly say when not to use it or name alternative siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
verify_x402_receipt
3 tool updates
- First observed
get_receipt - First observed
issue_receipt - First observed
verify_receipt
Related MCP Connectors
See what actually settles on x402: wash-adjusted volume, payTo checks. Free, no key, no signup.
Verify signed x402 payments; treasury-scoped settlement is irreversible.
Check an x402 endpoint before your agent pays it: avoid / caution / ok, proven on-chain.
Verify crypto payments really settled and how much arrived. 20 chains. Read only, no API key.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides tools to look up providers, fetch receipts, and verify Ed25519 signatures for x402 payments on Base and Solana, with no API key needed for basic operations.2 npm-
- FlicenseNot gradedqualityBmaintenanceEnables auditing x402 payment logs against delivery logs to issue signed proof-of-delivery receipts and verify payer spend health.-
- FlicenseNot gradedqualityBmaintenanceEnables autonomous agents to inspect and audit unfamiliar x402 endpoints before spending USDC, using bounded read-only probes to surface payment challenges, pricing, network, receiver, and operational signals without signing or spending funds.-

EVIDIQ Notary MCPofficial
AlicenseNot gradedqualityBmaintenanceCryptographic receipt layer for AI inferences. Enables notarization and verification of AI outputs with on-chain proofs via x402 payment.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.