Wasit is an independent conformance tester for two agentic-payment protocols on Stellar: x402 and MPP. 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.
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.
Thirteen checks across x402 and MPP are implemented, each traced to a written spec clause in the Check Catalogue.
Status
| Area | Status |
|---|---|
x402 read-only checks (X402-01–05) | Done, verified against a real facilitator |
x402 payment checks (X402-06, 07) | Done, settles on testnet |
MPP charge mode (MPP-01) | Done, settlement verified from contract events |
MPP channel mode (MPP-10–14) | Done, including destructive close |
| CLI | Done, three subcommands |
| MCP server | Done, three tools + one behind an opt-in |
| Error taxonomy and exit codes | Done |
| Testing against third-party services | Partial — 3 public repos tested without contacting the operator (see evidence); a run with explicit operator authorization hasn't happened yet |
| Upstream reports to SDK maintainers | Filed — stellar-mpp-sdk#66, #67 |
| Published to npm | Yes — @wasit-dev/core, @wasit-dev/cli, @wasit-dev/server |
| Mainnet | Out of scope — see Design Notes |
Thirteen 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.
Where to go next
- Quick Start — run your first check
- Why Wasit Exists — the full motivation, including what was found wrong upstream
- Check Catalogue — every check's pass criteria and spec reference
