Recomputes the expected refund and dispute outcome of stablecoin payments held under an escrowed refund protocol (a lock period with release, an arbiter refund that is all-or-nothing unless partial refunds are declared, an early withdrawal carrying a basis-point fee, and partial refunds with release of the remainder) from aggregate, synthetic-label payment records only, and flags every break between the merchant reported state or amounts and the recomputation with a named rule and a conservation identity over integer minor units. Everything runs locally on aggregate values only, so nothing leaves the machine.
| Rule | Check | Outcome |
|---|---|---|
| lock period | A payment sits HELD in escrow until paid_at plus the caller-declared lock period seconds; after the lock the full remaining amount releases to the recipient | expected state |
| refund_is_all_or_nothing | An arbiter refund returns the full payment amount; a decision below the full amount only counts when the caller declares partial refunds allowed, otherwise the decision is treated as the full refund and the break is named | break |
| payment_still_locked | A merchant report of RELEASED (or a released value) while the lock is still open at the audit clock is a break; the recomputed state is HELD | break |
| early_withdrawal_fee_bp | An early withdrawal inside the lock carries fee = floor(amount_minor times fee_bp over 10000), integer minor units, round-down; the remainder releases | expected state + fee |
| terminal_state_mismatch | Reported state differs from the recomputed terminal state (HELD, RELEASED, REFUNDED, PARTIALLY_REFUNDED, EARLY_WITHDRAWN) | break |
| reported_amount_mismatch | Reported refunded or released minor amounts differ from the recomputation | break |
| conservation | Paid equals refunded plus released plus fee plus still held, per payment and in total | identity |
| verdict | CONSISTENT (no breaks), CONSISTENT_WITH_BREAKS (breaks but the reported figures are internally conservative), INCONSISTENT (breaks and reported figures violate conservation) | verdict |
| identifier refusal | A payment_ref resembling an address (0x plus 40 hex), a transaction hash (0x plus 64 hex) or a 40-plus-character identifier-like blob is refused with no echo of the value | refusal |
The pinned profile re-implements the escrow, refund, arbiter and early-withdrawal behaviour of the Circle Refund Protocol (Apache-2.0) from a pinned source snapshot; it is an independent re-implementation in plain arithmetic and implies no endorsement by or affiliation with Circle. Payment settlement evidence lives in the estate x402 and CCTP nodes; this node consumes none of their outputs.
Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this exact tool, with this sample, and verify the artifact.
Run the AINumbers MCP tool `validate_cbr_data_return`. Task: Validate an aggregate correspondent-banking data return against an illustrative profile-driven template: required fields, roll-forward consistency, corridor sums, period sanity, key-currency and concentration flags, readiness roll-up.
Call it with arguments: {"policy_parameters":{"profile":"generic","institution_type":"bank","institution_code":"FI-001","period":{"start":"2026-01-01","end":"2026-03-31"},"currencies":[{"currency":"USD","opening_correspondents":5,"active_correspondents":4,"opened":1,"terminated_restricted":2,"corridors":[{"country":"US","outbound_count":1200,"inbound_count":900,"outbound_value":6000000,"inbound_value":4400000},{"country":"GB","outbound_count":900,"inbound_count":700,"outbound_value":5000000,"inbound_value":3600000},{"country":"SG","outbound_count":600,"inbound_count":500,"outbound_value":4000000,"inbound_value":2900000}],"totals":{"outbound_count":2700,"inbound_count":2100,"outbound_value":15000000,"inbound_value":10900000}},{"currency":"EUR","opening_correspondents":3,"active_correspondents":3,"opened":0,"terminated_restricted":0,"corridors":[{"country":"DE","outbound_count":400,"inbound_count":300,"outbound_value":1500000,"inbound_value":1200000},{"country":"FR","outbound_count":300,"inbound_count":250,"outbound_value":1000000,"inbound_value":900000},{"country":"NL","outbound_count":150,"inbound_count":120,"outbound_value":700000,"inbound_value":600000}],"totals":{"outbound_count":850,"inbound_count":670,"outbound_value":3200000,"inbound_value":2700000}}]}}
Verify before trusting: call `verify_execution_hash` on mcp.ainumbers.co (https://mcp.ainumbers.co/mcp) with the parameter `claimed_hash` set to the returned `execution_hash`, passing the full artifact the run returned (the object containing `policy_parameters` + `output_payload` + `execution_hash`; equivalently `policy_parameters` + `output_payload` with `claimed_hash`), not the bare hash string.
Return the ledger link https://ledger.ainumbers.co/ so a human can re-verify without contacting us.
PII rule: All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data: use synthetic or anonymised inputs only.
Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/795-stablecoin-refund-dispute.html#p=v1.H4sIAAAAAAAA_wHRBC77eyJwcm9maWxlIjoiZ2VuZXJpYyIsImluc3RpdHV0aW9uX3R5cGUiOiJiYW5rIiwiaW5zdGl0dXRpb25fY29kZSI6IkZJLTAwMSIsInBlcmlvZCI6eyJzdGFydCI6IjIwMjYtMDEtMDEiLCJlbmQiOiIyMDI2LTAzLTMxIn0sImN1cnJlbmNpZXMiOlt7ImN1cnJlbmN5IjoiVVNEIiwib3BlbmluZ19jb3JyZXNwb25kZW50cyI6NSwiYWN0aXZlX2NvcnJlc3BvbmRlbnRzIjo0LCJvcGVuZWQiOjEsInRlcm1pbmF0ZWRfcmVzdHJpY3RlZCI6MiwiY29ycmlkb3JzIjpbeyJjb3VudHJ5IjoiVVMiLCJvdXRib3VuZF9jb3VudCI6MTIwMCwiaW5ib3VuZF9jb3VudCI6OTAwLCJvdXRib3VuZF92YWx1ZSI6NjAwMDAwMCwiaW5ib3VuZF92YWx1ZSI6NDQwMDAwMH0seyJjb3VudHJ5IjoiR0IiLCJvdXRib3VuZF9jb3VudCI6OTAwLCJpbmJvdW5kX2NvdW50Ijo3MDAsIm91dGJvdW5kX3ZhbHVlIjo1MDAwMDAwLCJpbmJvdW5kX3ZhbHVlIjozNjAwMDAwfSx7ImNvdW50cnkiOiJTRyIsIm91dGJvdW5kX2NvdW50Ijo2MDAsImluYm91bmRfY291bnQiOjUwMCwib3V0Ym91bmRfdmFsdWUiOjQwMDAwMDAsImluYm91bmRfdmFsdWUiOjI5MDAwMDB9XSwidG90YWxzIjp7Im91dGJvdW5kX2NvdW50IjoyNzAwLCJpbmJvdW5kX2NvdW50IjoyMTAwLCJvdXRib3VuZF92YWx1ZSI6MTUwMDAwMDAsImluYm91bmRfdmFsdWUiOjEwOTAwMDAwfX0seyJjdXJyZW5jeSI6IkVVUiIsIm9wZW5pbmdfY29ycmVzcG9uZGVudHMiOjMsImFjdGl2ZV9jb3JyZXNwb25kZW50cyI6Mywib3BlbmVkIjowLCJ0ZXJtaW5hdGVkX3Jlc3RyaWN0ZWQiOjAsImNvcnJpZG9ycyI6W3siY291bnRyeSI6IkRFIiwib3V0Ym91bmRfY291bnQiOjQwMCwiaW5ib3VuZF9jb3VudCI6MzAwLCJvdXRib3VuZF92YWx1ZSI6MTUwMDAwMCwiaW5ib3VuZF92YWx1ZSI6MTIwMDAwMH0seyJjb3VudHJ5IjoiRlIiLCJvdXRib3VuZF9jb3VudCI6MzAwLCJpbmJvdW5kX2NvdW50IjoyNTAsIm91dGJvdW5kX3ZhbHVlIjoxMDAwMDAwLCJpbmJvdW5kX3ZhbHVlIjo5MDAwMDB9LHsiY291bnRyeSI6Ik5MIiwib3V0Ym91bmRfY291bnQiOjE1MCwiaW5ib3VuZF9jb3VudCI6MTIwLCJvdXRib3VuZF92YWx1ZSI6NzAwMDAwLCJpbmJvdW5kX3ZhbHVlIjo2MDAwMDB9XSwidG90YWxzIjp7Im91dGJvdW5kX2NvdW50Ijo4NTAsImluYm91bmRfY291bnQiOjY3MCwib3V0Ym91bmRfdmFsdWUiOjMyMDAwMDAsImluYm91bmRfdmFsdWUiOjI3MDAwMDB9fV19uxr92tEEAAA