Wasit
Wasit is an independent protocol-compliance tester for two agentic-payment protocols, x402 and MPP, on Stellar testnet. It runs the real payment flow against a live service and verifies the settlement itself — by reading Stellar RPC and the token contract's own transfer event — rather than trusting whatever the service's response claims happened. The x402 payment checks also pay on Base Sepolia, Ethereum Sepolia and Solana devnet, where the settlement is read from that chain's own record of the transfer.
It is not a schema validator. A response can have every field in the right place and still take money without settling it; that gap is exactly what Wasit checks for.
Why it exists
x402 and MPP ship an official SDK. Neither ships an independent way to check
that a service actually implements it — nothing plays the role
stellar-anchor-tests plays for the anchor ecosystem. "We support x402" is
currently a claim nobody can check from the outside.
Why Wasit Exists has the full story, including three concrete divergences between documentation and shipped SDK behavior that turned up while building this tool.
What you get
One check suite, two ways to run it:
@wasit-dev/cli— thewasitterminal command, for a local run or a CI job.@wasit-dev/server— the same checks as MCP tools, for Claude Code, Claude Desktop, or any other MCP-compatible agent.
Both are thin adapters over
@wasit-dev/core — there is
only one implementation of each check, so a CLI run and an agent's run can
never disagree about the same target.
Status
| Area | Status |
|---|---|
x402 read-only checks (X402-01–05) | Done, on a challenge from any chain; verified against a real facilitator |
x402 payment checks (X402-06–10) | Done on Stellar testnet, Base Sepolia, Ethereum Sepolia and Solana devnet, settlement verified from each chain's own record |
MPP charge mode (MPP-01) | Done, settlement verified from contract events; pays only on the run's network |
MPP channel mode (MPP-10–14) | Done, including destructive close |
| CLI | Done — six subcommands, wasit serve among them, plus an interactive dashboard |
| Testnet wallet tooling | Done — wasit wallet create/fund/status on Stellar testnet, and for the x402 payer on Base Sepolia, Ethereum Sepolia and Solana devnet |
| MCP server | Done, three tools + one behind an opt-in |
| Error taxonomy and exit codes | Done |
| Wasit's own test suite | Done — offline (no keys, no target, no network); type-check and tests both run in CI |
| Testing against third-party services | Done — one third-party service, defi-copilot, tested with its operator's written authorization as a local instance, plus Stellar's own reference implementations (x402, MPP); reported in aggregate in conformance-findings.md |
| Upstream reports to SDK maintainers | Filed — stellar-mpp-sdk#66, #67, #70 (closed; fix merged, unreleased), #82 (fixed in #83, verified), #89 |
| Published to npm | Yes — @wasit-dev/core, @wasit-dev/cli, @wasit-dev/server |
| Mainnet | Out of scope — see Design Notes |
Sixteen checks are implemented and reachable from both front ends. Every one is traced to a written spec clause in Check Catalogue; a check that cannot be traced is out of scope by construction.