Skip to main content
Glama

PaymentOracle — Verifiable Multi-Rail Payment Receipts

Server Details

PaymentOracle — ES256K-signed receipts for x402 payments on USDC+EURC (Base) and XRP+RLUSD (XRPL).

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
ToolOracle/paymentoracle
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 3.7/5 across 6 of 6 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a distinct, non-overlapping purpose: health check, quoting payment intents, verifying transactions, issuing receipts, retrieving receipts, and getting the latest proof. No two tools could be confused.

Naming Consistency5/5

All tool names use consistent snake_case and follow a verb_noun pattern (get_, issue_, quote_, verify_) except health_check which is noun_noun but still clear and fits the style.

Tool Count5/5

With 6 tools, the server is well-scoped for its purpose. Each tool corresponds to a distinct operation in the payment receipt lifecycle, and there are no redundant or missing core functions.

Completeness4/5

The tool set covers the essential workflow: quote, verify, issue, retrieve, plus health and proof. Missing are operations like listing intents or canceling payments, but these are not critical for the primary use case.

Available Tools

6 tools
get_proof_latestBInspect

Get the most recent verified payment as a self-contained ES256K-signed proof. Liveness signal: if proof is recent, the service is signing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior2/5

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

No annotations are provided, so the description carries the full burden. It indicates the tool is a read operation returning a signed proof but does not disclose error behavior, idempotency, or what happens if no proof exists. The behavioral context is minimal.

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 with no wasted words. The first sentence states the core purpose, and the second adds a contextual usage hint. Perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and no annotations, the description is relatively sparse. It explains what the tool returns and one use case, but lacks details on error handling, proof format, or integration with sibling tools. Adequate but not comprehensive.

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?

There are zero parameters in the input schema, so the baseline is 4. The description does not need to add parameter semantics, and the coverage is trivially 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the most recent verified payment as a self-contained ES256K-signed proof. The verb 'get' and the specific resource are unambiguous, but it does not explicitly differentiate from sibling tools like get_receipt.

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

Usage Guidelines3/5

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

The description mentions liveness signal as a use case but does not provide explicit guidance on when to use this tool versus alternatives like get_receipt or verify_payment. No exclusions or prerequisites are stated.

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

get_receiptAInspect

Fetch a previously-issued receipt by id. Returns the full signed receipt JSON. The receipt body can be canonicalised, hashed (sha256), and verified offline against the published JWK at /.well-known/payment-oracle.json#receipts.public_jwk.

ParametersJSON Schema
NameRequiredDescriptionDefault
receipt_idYesReceipt id (r_<hex>)
Behavior4/5

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

Despite no annotations, the description discloses the return type (signed receipt JSON) and mentions additional capabilities like offline verification, hashing, and canonicalization, providing good behavioral context.

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 concise sentences that front-load the core purpose and return type, with no unnecessary words.

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?

For a simple fetch tool with no output schema, the description adequately explains what is returned and provides useful verification context, making it self-contained.

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?

Single parameter receipt_id with format 'r_<hex>' is clear from schema. Description adds no additional semantic detail, but schema coverage is 100%, so baseline 3 is appropriate.

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?

Clearly states the tool fetches a receipt by ID and returns signed receipt JSON. Distinguishes from siblings like issue_receipt and verify_payment.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance, but the purpose is clear and implies use for retrieving existing receipts. Lacks mention of alternatives.

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

health_checkAInspect

Service status, version, mode, supported rails (base-usdc-x402, xrpl-xrp, xrpl-rlusd, base-eurc), signing algorithm and key kid.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

The description lists what information is returned but does not disclose behavioral traits such as idempotency, safety, or any side effects. Given no annotations, the description could be more explicit about being a read-only operation.

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 a single sentence listing all returned fields. It is concise and efficient, though it could be slightly restructured for readability (e.g., 'Returns service status, version, mode, ...').

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?

For a tool with no parameters and no output schema, the description fully enumerates all returned fields (status, version, mode, rails, algorithm, key kid). Nothing is missing given the tool's simplicity.

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?

No parameters exist, so schema coverage is 100% by default. According to guidelines, zero parameters warrant a baseline of 4 since no additional parameter information is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description lists the returned fields (status, version, mode, etc.) which clearly indicates this is a health check tool. However, it lacks an explicit verb like 'retrieves' or 'checks', so the action is implied rather than stated.

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

Usage Guidelines2/5

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

No guidance on when to use this tool compared to siblings. While the name 'health_check' is self-explanatory, the description does not provide any context about when it is appropriate or what to expect from alternatives.

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

issue_receiptAInspect

Issue an ES256K-signed receipt for a verified payment. Same signing key (tooloracle-paymentoracle-es256k-1) for all four rails. Idempotent: calling twice with the same verification_id returns the byte-identical receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
verification_idYesVerification id from verify_payment (ver_<hex>)
Behavior4/5

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

With no annotations, the description carries full burden. It discloses ES256K signing, specific key, constant key across rails, and idempotency (repeat calls yield identical receipt). Does not cover error behavior or permissions.

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, each essential. First states core action and key detail, second adds idempotency. No redundancy or fluff.

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 single-parameter tool with no output schema, the description is largely sufficient. Covers purpose, key, idempotency, and dependency on verification. Missing format of receipt output, but acceptable given no output schema.

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% and already describes verification_id as from verify_payment. The description adds value by noting idempotency tied to the parameter, enhancing behavioral understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it issues an ES256K-signed receipt for a verified payment, providing specific verb and resource. It does not explicitly distinguish from sibling get_receipt, but the purpose is unambiguous.

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

Usage Guidelines3/5

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

Implies usage after verify_payment by referencing verification_id from that tool, and idempotency allows safe retries. No explicit when-not or alternatives to siblings like get_receipt are given.

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

quote_paymentAInspect

Open a payment intent for a tool call on a chosen rail. Returns intent_hash, amount in atomic + human form, payTo wallet on the selected chain, and expiry. Supported rails: base-usdc-x402, xrpl-xrp, xrpl-rlusd, base-eurc.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesTool name within the product (e.g., 'keyword_research')
unitsNoUnits to pay for. Defaults to 1. 1 unit = 0.01 of the asset (USDC/EURC) or rail-specific equivalent.
productYesProduct slug the agent is paying for (e.g., 'rank', 'flight')
agent_didNoAgent DID, e.g. 'did:web:my-agent.example' (optional but recommended)
tool_argsNoArguments for the tool call. Hashed into the intent.
preferred_railsNoPreferred payment rails in priority order. Defaults to base-usdc-x402.
Behavior3/5

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

No annotations are provided, so the description carries full disclosure burden. It lists returned values (intent_hash, amount, etc.) but does not disclose side effects (e.g., whether this actually charges or just reserves), idempotency, authentication needs, or rate limits.

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 two sentences, concise and front-loaded with action and return values. No wasted words, but could benefit from bullet points for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, nested objects, and no output schema, the description adequately covers returns but lacks context on idempotency, intent expiration, or payment flow steps. More detail would improve completeness.

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%. The description adds value by explaining unit equivalence ('1 unit = 0.01 of the asset') and clarifying that tool_args are hashed into the intent. This goes beyond basic schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose: opening a payment intent for a tool call on a chosen rail. It specifies supported rails and return fields. However, it does not explicitly differentiate from sibling tools, though siblings serve distinct functions.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is given. The description implies its usage for initiating payment before a tool call, but lacks exclusions or alternatives. Siblings like get_receipt or verify_payment are not mentioned.

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

verify_paymentAInspect

Verify an on-chain transaction against a previously-issued intent. Reads the chain via public RPC, confirms recipient/asset/amount/timing. Cross-rail replay protection enforced: a tx_hash can be verified at most once across all rails.

ParametersJSON Schema
NameRequiredDescriptionDefault
tx_hashYesOn-chain transaction hash. EVM rails: 0x<64 hex>. XRPL rails: 64 uppercase hex, no 0x prefix.
intent_hashYesIntent hash from quote_payment (sha256:...)
preflight_idNoOptional preflight id (pf_<hex>) if the agent ran a preflight check.
Behavior4/5

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

With no annotations provided, the description carries full disclosure burden. It discloses reading via public RPC, confirming recipient/asset/amount/timing, and replay protection. However, it omits side effects, error behavior, or response format.

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?

Three sentences, front-loaded with purpose, no redundancy. Every sentence adds unique information: purpose, mechanism, constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what the tool does and a key constraint (replay protection), but without output schema, it fails to describe the return value or success/failure indicators, leaving an agent unsure of the response structure.

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% with detailed parameter descriptions (tx_hash format, intent_hash origin, preflight_id optional). The tool description does not add extra parameter semantics beyond repeating that it reads the chain.

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 clearly states 'Verify an on-chain transaction against a previously-issued intent,' specifying the verb (verify) and the resource (transaction vs intent). This distinguishes it from sibling tools like issue_receipt or quote_payment.

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

Usage Guidelines3/5

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

The description implies usage after an intent is issued by referencing 'previously-issued intent' and mentioning cross-rail replay protection, but it does not explicitly state when to use versus alternatives (e.g., get_receipt) or when not to use.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.