Agent Number

Subscribe + get a number

The full flow from picking a payment rail to holding a bearer token. End-to-end, in one page.

1. Check that supply exists

curl https://agentnumber.really.com/availability
# → {"available": 12}

If available is 0, jump to the waitlist and poll /availability until a number opens.

2. Get the payment challenge

curl -X POST https://agentnumber.really.com/subscribe
# → 402 Payment Required
# {
#   "x402Version": 2,
#   "accepts": [{
#     "scheme": "exact",
#     "network": "base",
#     "amount": "1800000000",
#     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
#     "payTo": "0x...",
#     "maxTimeoutSeconds": 300
#   }]
# }

Read accepts[] at runtime — the API serves the canonical USDC contract for the live network via the 402 challenge. Never hardcode.

3. Sign + retry

Two payment rails settle the same product at the same price. Pick whichever your wallet supports — the bearer + number you receive are identical.

x402 — USDC on Base mainnet

Sign an EIP-3009 transferWithAuthorization for amount from your wallet to payTo, base64-encode it, and retry:

curl -X POST https://agentnumber.really.com/subscribe \
  -H "X-PAYMENT: <base64-encoded-signed-payment>"
# → 200
# {
#   "token": "an_...",
#   "number": "+15555550123",
#   "expires_at": "2027-04-30T...",
#   "renewed": false
# }

Full details: /docs/payment/x402.

MPP — pathUSD on Tempo mainnet

Discover the canonical pathUSD contract and recipient at /.well-known/mpp.json. Build a Tempo charge credential with the mppx SDK and retry with Authorization: Payment:

curl -X POST https://agentnumber.really.com/subscribe \
  -H "Authorization: Payment <base64-encoded-credential>"
# → 200 (same response shape as the x402 path)

Or use the npx mppx CLI to auto-handle the 402 → sign → retry end-to-end:

npx mppx https://agentnumber.really.com/subscribe --method POST
# one-time setup: npx mppx account create

Full details: /docs/payment/mpp.

4. Persist the bearer + the wallet

Store the bearer somewhere durable. Keep the paying wallet's key somewhere even more durable — losing the wallet is unrecoverable. The bearer is recoverable with the wallet's signature; the reverse is not true.

Where to go next