The x402 correctness layer.
A USENIX study found correctness violations in every major x402 facilitator tested. Ward checks whether yours actually holds up — against a real, self-hosted facilitator, not a mock.
Real facilitator, not mocks
Every check runs against a real, self-hosted facilitator.
Live TestNet transactions over the real x402-avm implementation — never a simulated stand-in.
Adversarial by design
Invariants come from a real security study, not guesswork.
Derived from the x402 protocol spec and a peer-reviewed USENIX study of real facilitator failures.
Chain-agnostic core
A second chain is a new adapter, not a rewrite.
Universal invariants never import Algorand-specific code — the boundary is enforced, not assumed.
Eight invariants, zero assumptions.
Every result ships reproducible evidence — request/response pairs, on-chain transaction IDs, and the exact source it's checking against.
Two ways to run Ward.
Run it yourself
Open-source CLI. Boots a self-hosted facilitator, funds test accounts, and runs the full suite against it.
npm install
ward init
ward test
Pay per check
A hosted, x402-gated endpoint: pay once in USDC, submit any facilitator URL, get a real pass/fail report back.
POST /verify-facilitator
{ "facilitatorUrl": "..." }