Free tier
Your AI agent can hold its own payable name: pay:agent.<label>.
Registration is free — no fee, no NFT — and gated by cryptography, not payment:
you present a verifiable credential proving a real principal stands behind the agent.
Names resolve immediately and are committed to the XRP Ledger in a daily Merkle-batch anchor.
Registration requires an AgentAuthorityCredential — a W3C Verifiable Credential
binding your agent's Ed25519 did:key to a controlling principal (your
pay: name). Issuance is vouched: the DNS of Money issuer signs the credential
for your agent's public key. Request one at
dnsofmoney@gmail.com with your agent's public key
(PEM) and your principal pay: name.
Wrap the credential in a Verifiable Presentation whose holder proof is bound to a zero-amount intent naming your requested alias. This is the same proof engine used for agent payments — a presentation captured for a payment can never register a name, and a registration presentation can never move money.
# challenge = hex(sha256(JCS({amount, currency, payee, nonce}))) intent = { "amount": "0", # always zero for registration "currency": "XRP", # must match your credential's grant currency "payee": "pay:agent.myhelper", # the exact name you are requesting "nonce": "a-fresh-unique-nonce" } # Sign the VP with the AGENT key (proofPurpose=authentication), # challenge = the intent hash above, domain = "dnsofmoney.com/agents/register".
The result is a W3C Verifiable Presentation with an eddsa-jcs-2022
Data Integrity proof. Any library that supports that cryptosuite can build it.
POST /api/v1/agents/register
{
"alias_name": "pay:agent.myhelper",
"presentation": { ...signed VP... },
"nonce": "a-fresh-unique-nonce",
"currency": "XRP",
"xrpl_address": "r..." # optional — makes the name payable
}
# 201 →
{
"success": true,
"data": {
"alias_name": "pay:agent.myhelper",
"agent_did": "did:key:z6Mk...",
"agent_principal": "pay:yourname",
"status": "active",
"anchor_status": "pending", # flips to "anchored" within 24h
"anchor_leaf_hash": "..."
}
}
Registrations are batched and one Merkle root is anchored to the ledger daily (skipped when the batch is empty — proof staleness is bounded at ≤24h). Once anchored, fetch your inclusion proof and check it against the on-chain FAS-1 memo:
GET /api/v1/agents/anchor-proof/pay:agent.myhelper # → { "anchor_status": "anchored", "leaf_hash": "...", "merkle_root": "...", # matches the on-chain memo "merkle_path": [{"sibling": "...", "position": "left"}, ...], "anchor_tx_hash": "...", # livenet.xrpl.org/transactions/<hash> "anchored_at": "2026-07-12T..." }
A registered name settles in XRP on the XRP Ledger today. DNS of Money's
paid agent tools settle over x402 in the stablecoin native to your agent's chain —
each endpoint answers a 402 with its own network's payment requirement:
| Endpoint | Settles in | Network |
|---|---|---|
GET /api/v1/x402/pay/{alias} | XRP | XRP Ledger (xrpl:0) |
GET /api/v1/x402/presend | USDC | Base (eip155:8453) |
GET /api/v1/x402/screen/{target} | USDC | Algorand (mainnet) |
GET /api/v1/x402/screen-xlayer/{target} | USDT0 | X Layer / OKX (eip155:196) |
Full machine-readable list: GET /.well-known/x402. RLUSD is supported for aliases
whose wallet has set an RLUSD trust line.
| Shape | pay:agent.<label> exactly — lowercase letters, digits, hyphens; one label. |
|---|---|
| First come, first served | Within the subtree — except labels matching an existing paid/founding name, which are reserved for that name's owner (register with that name as your credential's principal to claim it). |
| Never sold | pay:agent.* is free-tier-only forever. No paid claim on the subtree can ever evict you. |
| Rate limit | 10 names per controlling principal per rolling 24h. |
| Structural names | agent.trust, agent.registry, agent.did and similar are reserved. |
| Revocation | If your credential is revoked, every name it registered is suspended (resolution stops). Suspension is reversible after human review. |
agent_registration block in
GET /.well-known/x402, or the MCP tool get_agent_registration_info
at POST /mcp/tools/call.