{"openapi":"3.1.0","info":{"title":"Verifiable Random","version":"0.1.0","description":"Paid and free random integer draws with drand provenance."},"servers":[{"url":"https://random.cipblujdea.com"}],"x-service-info":{"categories":["developer-tools","randomness"],"docs":{"homepage":"https://random.cipblujdea.com","apiReference":"https://random.cipblujdea.com/openapi.json","llms":"https://random.cipblujdea.com/llms.txt","client":"https://random.cipblujdea.com/client"}},"paths":{"/mcp":{"post":{"summary":"Streamable HTTP MCP endpoint","responses":{"200":{"description":"MCP response"}}}},"/v1/random":{"post":{"summary":"Paid random integer endpoint","description":"Requires an MPP payment credential and a UUID requestId. An unpaid request returns 402 with a Tempo payment challenge.","x-payment-info":{"amount":"10000","currency":"0x20c0000000000000000000000000000000000000","decimals":6,"displayAmount":"0.01","displayCurrency":"pathUSD","description":"One paid random integer with drand provenance","intent":"charge","method":"tempo","network":"tempo-testnet"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"},"min":{"type":"integer","default":1},"max":{"type":"integer","default":100}}}}}},"responses":{"200":{"description":"Purchased random integer and receipt"},"402":{"description":"MPP payment challenge"},"409":{"description":"The requestId is already bound to different draw arguments"}}}},"/v1/random/recover":{"post":{"summary":"Recover a settled payment from its original challenge","description":"Accepts the exact original HMAC-bound challenge and Tempo transaction hash. Recovery remains available through 24 hours after challenge expiry and never creates a new challenge.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["challenge","transactionHash"],"properties":{"challenge":{"type":"object"},"transactionHash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"}}}}}},"responses":{"200":{"description":"Original prepared result and recovered Tempo receipt"},"400":{"description":"Malformed JSON or missing recovery evidence"},"405":{"description":"Method not allowed"},"409":{"description":"Challenge, timing, transaction, transfer, or replay verification failed"},"429":{"description":"Recovery verification attempt limit exceeded"},"500":{"description":"Storage or unexpected internal failure; no recovery result is returned"},"503":{"description":"Payments are not configured"}}}},"/healthz":{"get":{"summary":"Process health","responses":{"200":{"description":"Process is running"}}}},"/readyz":{"get":{"summary":"Service readiness","responses":{"200":{"description":"Service and durable storage are ready"},"503":{"description":"Service is not ready"}}}}}}