x402 Quote Fingerprint Guard

Prevents a retry workflow from silently accepting changed payment terms. Bind stores only a normalized quote fingerprint and timestamp; check compares a supplied quote without revealing the original terms.

Use when

  • A retry identity must stay bound to the first normalized x402 quote.
  • Agents need a shared, expiring check against silent payment-term drift.

Do not use when

  • The quote itself must be retained, signed, paid, or recovered later.
  • A durable financial ledger or permanent binding is required.

Invocation contract

HTTP
/v1/tools/x402-quote-fingerprint-guard
Version
0.1.0
Mode
atomic
Idempotency
required
Retention
Only derived namespace/retry-key and quote fingerprints plus a timestamp remain in Valkey until expiry. Raw commercial terms are not stored.
Tested with
Valkey 8, x402 v2 requirement snapshots

Positive and negative examples

{
  "input": {
    "action": "bind",
    "namespace": "checkout",
    "retry_key": "attempt-42",
    "quote": {
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "USDC",
      "amount_atomic": "1000",
      "pay_to": "0x1111111111111111111111111111111111111111",
      "resource": "https://api.example.invalid/job",
      "extensions": [
        "payment-identifier"
      ]
    },
    "ttl_seconds": 300
  },
  "output": {
    "guard_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "bound": true,
    "newly_bound": true,
    "matches": true,
    "supplied_fingerprint": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    "bound_fingerprint": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    "bound_at": "2026-07-25T00:00:00.000Z",
    "expires_at": "2026-07-25T00:05:00.000Z",
    "ttl_seconds_remaining": 300
  },
  "negative": [
    {
      "scenario": "The quote itself must be retained, signed, paid, or recovered later.",
      "expected_error": "INVALID_INPUT",
      "charged": false
    }
  ]
}

Deterministic errors

CodeRetryChargedRecovery
INVALID_INPUTfalsefalseCorrect the request to match input_schema.
TOOL_PAUSEDtruefalseWait for the operator to resume the tool.
RATE_LIMITEDtruefalseRetry after the response Retry-After interval.
DEPENDENCY_UNAVAILABLEtruefalseRetry with the same idempotency identity.

Full machine manifest

The HTTP, OpenAPI, MCP, llms.txt, and ARD descriptions are generated from this same registry record.

Open JSON manifest →