MCP · x402 · Stellar

A spend cap AI agents can't talk their way past.

Nymor lets any MCP-connected AI agent discover paid API resources and pay for them in real USDC on Stellar — inside a budget enforced by a Soroban smart contract the network itself refuses to let overspend, not just application code the agent's own logic could route around.

Headline on-chain result
2/2
real testnet transactions — one accepted under cap, one rejected on-chain over cap
The rejection is a real Stellar transaction, not a test assertion. Read the proof →
5
Real paid resources
2
On-chain proof transactions
19
Passing tests, unit + integration
1
Gap, disclosed on purpose

Real facilitator, not mocks

Every payment settles real USDC on Stellar testnet.
Real x402 challenge-response over the OZ Channels facilitator — never a simulated stand-in.

Enforced on-chain, not just in code

A Soroban smart account refuses the overspend itself.
Proven with a real transaction rejected on-chain — Error(Contract, #3221) — not just a passing test.

Honest by construction

Every claim ships with a transaction hash or a test file.
The one gap that isn't wired up yet is documented, not buried — see the status page.

What Nymor proves

Six claims, zero rounding up.

Every result ships a real transaction hash or a test file — the same discipline as a conformance suite, applied to a payments product.

ID Claim Evidence Status
P1
x402 settles real USDC on Stellar testnet
RUN_INTEGRATION=1 pnpm test
26a0e061… ↗ proven
P2
MCP wiring works over the real stdio protocol
mcp.integration.test.ts, not a direct import
6347154e… ↗ proven
P3
Concurrent spend requests can't double-spend past the cap
20-way concurrency test, ledger.test.ts
test suite proven
P4
On-chain smart account authorizes a transfer under its cap
successful: true on Horizon
e4358552… ↗ proven
P5
On-chain smart account rejects a transfer over its cap — on-chain
Error(Contract, #3221) SpendingLimitExceeded
d0f3e128… ↗ headline
P6
Real agent payments route through that on-chain cap
buyer signer still a raw Ed25519 key — disclosed
docs.nymor.xyz not wired up
How it works

Discover, spend-gate, pay.

1. Discover

An agent calls nymor.discover() over MCP and gets back a real registry — live price data, an LLM summarizer, a Stellar balance lookup, image generation, weather.

2. Spend-gate

Before any money moves, the request is checked against a budget — an atomic application ledger, and a Soroban smart account the network itself can refuse to authorize.

3. Pay

A real x402 challenge-response: 402, a signed Stellar transaction, real USDC settlement, a retry with proof. The agent gets real data back and a transaction hash.