Free agent names — pay:agent.*

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.

Everything below is deterministic. The registration checklist is boolean — credential verifies or it doesn't, label is free or it isn't. No scoring, no model, no judgment call sits between your agent and its name. The same is true of resolution and settlement.

1Get an AgentAuthorityCredential

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.

2Sign the registration presentation

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.

3Register

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": "..."
  }
}

4Verify the on-chain anchor (optional)

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..."
}

Rails your agent can pay over

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:

EndpointSettles inNetwork
GET /api/v1/x402/pay/{alias}XRPXRP Ledger (xrpl:0)
GET /api/v1/x402/presendUSDCBase (eip155:8453)
GET /api/v1/x402/screen/{target}USDCAlgorand (mainnet)
GET /api/v1/x402/screen-xlayer/{target}USDT0X 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.

Rules of the namespace

Shapepay:agent.<label> exactly — lowercase letters, digits, hyphens; one label.
First come, first servedWithin 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 soldpay:agent.* is free-tier-only forever. No paid claim on the subtree can ever evict you.
Rate limit10 names per controlling principal per rolling 24h.
Structural namesagent.trust, agent.registry, agent.did and similar are reserved.
RevocationIf your credential is revoked, every name it registered is suspended (resolution stops). Suspension is reversible after human review.
Machine-readable version of this page: the agent_registration block in GET /.well-known/x402, or the MCP tool get_agent_registration_info at POST /mcp/tools/call.