{"ok":true,"scheme":"sentinel402-credits/v1","enabled":true,"header":"X-Credit-Token","pack":{"priceUsd":"5","units":5000,"unitUsd":"0.001","expiryDays":90,"settles":"on-chain, once, via x402 or MPP (USDC)"},"buy":{"endpoint":"POST /v1/credits/buy","payment":"x402 | mpp | credits","returns":"the bearer token, exactly once"},"balance":{"endpoint":"GET /v1/credits/balance","header":"X-Credit-Token","free":true},"routeCosts":[{"key":"scan","path":"/v1/scan","method":"POST","units":20,"priceUsd":"0.02"},{"key":"batch","path":"/v1/scan/batch","method":"POST","units":50,"priceUsd":"0.05"},{"key":"audit","path":"/v1/audit","method":"POST","units":30,"priceUsd":"0.03"},{"key":"data","path":"/v1/data/{collection}","method":"GET","units":3,"priceUsd":"0.003"},{"key":"rcp","path":"/rcp/retrieve","method":"POST","units":3,"priceUsd":"0.003"},{"key":"mcp_scan","path":"/mcp","method":"POST","tool":"scan_for_pii","units":20,"priceUsd":"0.02"},{"key":"mcp_batch","path":"/mcp","method":"POST","tool":"scan_batch","units":50,"priceUsd":"0.05"},{"key":"mcp_audit","path":"/mcp","method":"POST","tool":"audit_compliance","units":30,"priceUsd":"0.03"},{"key":"mcp_data","path":"/mcp","method":"POST","tool":"get_live_data","units":3,"priceUsd":"0.003"},{"key":"prompt","path":"/v1/scan/prompt","method":"POST","units":10,"priceUsd":"0.01"},{"key":"prompt_batch","path":"/v1/scan/prompt/batch","method":"POST","units":30,"priceUsd":"0.03"},{"key":"mcp_prompt","path":"/mcp","method":"POST","tool":"scan_prompt_injection","units":10,"priceUsd":"0.01"}],"guarantees":["ATOMIC balances: each account lives in one Durable Object; redemptions are serialized and persisted before the response, so the same unit can never be spent twice — even by concurrent requests.","SPEND-BEFORE-SERVE: a route answers only after its units are deducted; a request that would 400 is rejected BEFORE any deduction (never charged for a doomed call).","FAIL-OPEN: if the credit store is unreachable, the gate falls back to the normal on-chain paywall — prepaid callers degrade to pay-per-call, the service never goes down."],"notes":["1 unit = $0.001. A route costs ceil(price / 1 unit): a $0.02 scan is 20 units, a $0.003 data call is 3 units.","Packs expire 90 days after purchase. Each purchase returns its OWN token — balances are not merged across packs; spend an old token down (or use it to buy the next pack) before switching.","Credits are prepaid and non-refundable; unused units lapse at expiry. Every route still accepts per-call x402/MPP payment — credits are a convenience rail, never a lock-in."]}