Dns Of Money

io.github.sparkmastergrapePublished by GitHub account sparkmastergrapev1.1.0Updated Nov 5, 2026

Resolve, discover & pay pay: aliases for AI agents; returns a signed OFAC-screen attestation.

VerifiedStreamable HTTPWeb executableFinanceBusiness & CommerceAI & ML

Overview

AI-generated overview

Resolves pay: financial aliases to payment endpoints, agent-commerce metadata and x402 payment requirements for AI agents.

What you can do
  • Resolve pay: aliases to preferred rail, fallback endpoints, ISO 20022 hint and compliance signal
  • Look up the AP2/A2A agent-commerce block for an alias
  • Check whether an alias is available, taken or reserved, and see founding spots left
  • Fetch x402 PaymentRequirements (scheme, network, payTo, asset, amount, invoiceId) for paying an alias
  • Check whether an attempted payment was recorded before retrying
  • Read how to self-register a free pay:agent alias
When to use it
Useful when an assistant needs to turn a human-readable pay: identifier into concrete payment routing details, discover an agent's commerce capabilities, or prepare and verify an x402 payment without retrying blindly.
Requirements
Remote streamable HTTP endpoint at api.dnsofmoney.com; no local install. No authentication is declared in the manifest, but the README says an X-API-Key header is needed for write operations and that anonymous resolve calls return status only, with a free API key available on request. Network access required.
Before you install
The server concerns real money movement: it returns payment endpoints, wallet addresses and x402 payment requirements, and the README describes paid alias registration priced in XRP. An API key is requested for full resolution and writes. Verify payment status before retrying to avoid double spending, and note that some rails are described as mock and no bank partner is live.

Installation

In SourceWeft

  1. Open Dns Of Money in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.sparkmastergrape%2Fdns-of-money/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "dns-of-money": {
      "type": "http",
      "url": "https://api.dnsofmoney.com/mcp/rpc"
    }
  }
}

README

dns://money — Financial Address Resolution for the Machine Economy

"In another time's forgotten space"

[License: MIT] [FAS-1 Spec] [XRPL Mainnet] [Genesis TX] [CC BY 4.0]

Live: dnsofmoney.com · Spec: dnsofmoney.com/fas-1/ · API: api.dnsofmoney.com · Free API key: request access

We are not a bank. We are the layer above it.

DNS of Money is a financial address resolution protocol and payment orchestration infrastructure for the machine economy. It resolves human-readable pay: identifiers to payment endpoints across multiple rails — without touching funds, holding deposits, or requiring a banking license.


What This Is

Just as DNS resolves example.com → IP address, FAS-1 resolves pay:vendor.alpha → complete payment instruction.

pay:agent.compute  →  { rail: "XRPL", address: "rXXX...", iso_hint: "pacs.008.001.08" }pay:vendor.alpha   →  { rail: "FedNow", address: "021000021:1234567890", fee_estimate: "0.045" }pay:contractor.jay →  { rail: "ACH", routing: "...", account: "..." }

No raw wallet addresses. No routing numbers in UX. One identifier that works everywhere.


Why This Exists

The agent address resolution gap. AI agents can now transact autonomously — but there is no standard way to name them, register them, and convert those names into payment endpoints. As we read AP2, A2A and MCP, none of them defines how to name a payee and resolve that name to a payment endpoint. FAS-1 fills that gap.

DNS of Money is the naming and resolution layer for agentic commerce.


Architecture

┌─────────────────────────────────────────────────────────────┐│                    DNS of Money                              ││                  pay: Namespace Layer                        ││                                                             ││   pay:agent.compute  →  Resolver  →  ResolutionResponse     ││                              │                              ││         ┌────────────────────┼────────────────────┐         ││         ▼                    ▼                    ▼         ││    XRPL Adapter         FedNow Adapter       ACH Adapter    ││    (mainnet, live)      (mock)               (mock)        │└─────────────────────────────────────────────────────────────┘                              │                              ▼          ┌───────────────────────────────────────┐          │         Financial Autonomy Stack       │          │           (execution layer)            │          │  Payment routing · ISO 20022 · OFAC   │          │  Agent wallets · Policy engine         │          └───────────────────────────────────────┘

Four-Layer Stack

LayerNamePurpose
1DNS of Moneypay: alias registration and resolution
2AI Orchestration LayerRouting decisions, cost optimization, rail scoring
3Multi-Rail Payment RouterSettlement execution (ACH, FedNow, XRPL, SWIFT)
4Autonomous Agent NetworkM2M commerce, agent-to-agent payment hooks

MVP flow: alias → resolve → route → ISO 20022 hint → simulate settlement


The pay: URI Scheme

FAS-1 (Financial Address Standard 1) defines the pay: URI scheme for human-readable financial addresses.

pay:vendor.alpha          # vendor namespace, alpha entitypay:agent.compute         # agent namespace, compute servicepay:contractor.jay        # contractor namespace, individualpay:bank.settlement       # institutional namespace

Format

pay-uri  = "pay:" label *("." label)label    = 1*63( ALPHA / DIGIT / "-" )

Rules:

  • Lowercase only; NFC + Punycode for non-ASCII labels
  • Dots are hierarchy separators, not name separators
  • Max 63 characters per label, 128 total; min 3 total
  • No leading/trailing hyphens; no consecutive dots
  • v0.1 (current): at least one dot required — pay:namespace.label
  • v0.2 (draft): single-label addresses for people and brands — pay:elonmusk
  • Regex (v0.1): ^pay:[a-z0-9][a-z0-9\-]*(\.[a-z0-9][a-z0-9\-]*)+$
  • Regex (v0.2 draft): ^pay:[a-z0-9][a-z0-9\-]*(\.[a-z0-9][a-z0-9\-]*)*$

Full spec: docs/FAS-1-spec.md · License: CC BY 4.0


Resolution Response

json
{  "alias": "pay:vendor.alpha",  "preferred_rail": "XRPL",  "endpoints": [    {      "rail": "XRPL",      "currency": "USD",      "address": "rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",      "routing_metadata": { "destination_tag": 12345 },      "settlement_latency": "3-5s",      "fee_estimate": "0.0001"    },    {      "rail": "FedNow",      "currency": "USD",      "address": "021000021:1234567890",      "routing_metadata": { "routing_number": "021000021" },      "settlement_latency": "instant",      "fee_estimate": "0.045"    }  ],  "iso20022_hint": "pacs.008.001.08",  "iso20022_map": { "cdtr_nm": "Alpha Vendors LLC", "cdtr_acct_tp": "CACC", "ccy": "USD" },  "compliance": { "sanctions_checked": true, "fatf_risk_rating": "low", "requires_purpose_code": false },  "ttl_seconds": 300,  "resolved_at": "2026-03-20T00:00:00Z"}

Account and routing numbers are never returned at authorization levels 0–1. Full field list, authorization levels, and error codes: docs/FAS-1-spec.md.


Quick Start

Resolve a pay: alias

bash
curl https://api.dnsofmoney.com/api/v1/resolve/pay:vendor.alpha \  -H "X-API-Key: your_key"

Register a pay: alias (founding tier)

bash
curl -X POST https://api.dnsofmoney.com/api/v1/aliases/register \  -H "X-API-Key: your_key" \  -H "Content-Type: application/json" \  -d '{    "alias": "pay:yourname.here",    "xrpl_address": "rYourXRPLAddress",    "payment_tx_hash": "VERIFIED_5XRP_TX_HASH",    "tier": "founding"  }'

Check availability

bash
curl https://api.dnsofmoney.com/api/v1/aliases/available/yourname.here# → { "status": "available" | "taken" | "reserved" }

Agent Integration

MCP / A2A

DNS of Money fills the agent payment discoverability gap described in FAS-1 spec §9.1. Any agent can advertise a pay: alias; any caller can resolve it to a ranked list of payment endpoints without prior knowledge of the agent's banking infrastructure.

python
# A2A-031 binding patternagent_card = {    "agent_id": "AGT-COMPUTE-001",    "payment_alias": "pay:agent.compute"}
# Caller resolves before paymentresolution = await resolve("pay:agent.compute")# → { rail, address, iso20022_hint }

Python

python
import httpx
async def resolve_payment_alias(alias: str, api_key: str) -> dict:    async with httpx.AsyncClient() as client:        r = await client.get(            f"https://api.dnsofmoney.com/api/v1/resolve/{alias}",            headers={"X-API-Key": api_key}        )        return r.json()
result = await resolve_payment_alias("pay:vendor.alpha", "your_key")print(result["preferred_rail"])   # "XRPL"print(result["iso20022_hint"])    # "pacs.008.001.08"

JavaScript / TypeScript

typescript
const resolve = async (alias: string): Promise<ResolutionResponse> => {  const res = await fetch(`https://api.dnsofmoney.com/api/v1/resolve/${alias}`, {    headers: { "X-API-Key": process.env.DNS_MONEY_API_KEY! }  });  return res.json();};
const { preferred_rail, endpoints, iso20022_hint } = await resolve("pay:agent.compute");

Supported Payment Rails

RailTypeLatencyCurrency
XRPLBlockchain3–5 secondsXRP, IOUs
FedNowInstant ACHInstantUSD
ACHBank transfer1–3 daysUSD
SWIFTWire1–5 daysMulti-currency
Solana/USDCBlockchain<1 secondUSDC

On-Chain Namespace Anchors

All root namespaces are immutably anchored on XRPL mainnet via FAS-1 memo transactions before publication of this spec. This is the moat: namespaces cannot be forked once registered on-chain.

Confirmed on-chain (March 2026):

Genesis TX        — March 13, 2026 — first inter-AI payment on XRPL mainnetpay:agent.*       — March 17, 2026 — agent namespace rootpay:swift         pay:fednow        pay:fedreservepay:iso20022      pay:cbdc          pay:treasurypay:bis           pay:imf           pay:worldbankpay:correspondent pay:nostro        pay:vostropay:fedwire       pay:chips         pay:chapspay:target2       pay:cips          pay:ripplenetpay:odl           pay:swift.usd     pay:swift.eur

All memo transactions use the FAS-1 format:

json
{  "p": "FAS-1",  "v": "0.1",  "a": "pay:agent.*",  "t": "root_namespace",  "o": "dnsofmoney.com",  "d": "2026-03-17"}

Founding Tier

The first 600 pay: names are priced by claim order, graduated from 0 up to 5 XRP, and permanently grandfathered at the price paid. The current band is served live by GET /api/v1/founding/status. One name per XRPL wallet. On-chain proof issued at registration.

Each founding name includes:

  • A permanent pay: alias on XRPL mainnet
  • A unique generative fractal flame identity NFT (XLS-20)
  • IPFS-pinned art and metadata that outlives every server
  • On-chain proof via FAS-1 memo protocol

33 minted. 567 remaining. Mint yours at dnsofmoney.com

  • Founding tier encoded on XRPL mainnet via FAS-1 memo
  • Permanent — cannot be revoked
  • Hard cap enforced atomically: SELECT ... FOR UPDATE inside the registration transaction

Check remaining spots: GET /api/v1/founding/status


Proof of Work

This is not vaporware. The transactions below are real. The XRPL ones are publicly verifiable by anyone — no login, no trust required.

XRPL Mainnet — Publicly Verifiable On-Chain

TXTime (UTC)DirectionAmountLedgerHash
TX109:16:40 Mar 13 2026Claude → GPT-4$0.69 USD (0.482517 XRP)102837427B92C23BA...
TX220:20:10 Mar 13 2026GPT-4 → Claude$4.20 USD (3.0 XRP)102849264EB8F2C20...

Click either hash. It's on the ledger. Permanent.

Bidirectional AI payment rail: proven on XRPL mainnet — publicly verifiable on-chain.

Agent Verification — AI-to-API Resolution Proven

StepResultDate
Resolve pay:genesis at tier 3Full response: entity_id, compliance, ISO hint, agent_commerce, identity blockMar 24, 2026
Verify NFT on-chainNFTokenID confirmed, taxon 420069 (founding), IPFS metadata verifiedMar 24, 2026
Witness 1 XRP paymentpay:architect → pay:genesis with memo DNS-OF-MONEY-PROOFMar 24, 2026

First external AI agent (Perplexity) to resolve a pay: alias, verify on-chain identity, and witness a real payment — end-to-end.


ISO 20022 Compatibility

All payment models are ISO 20022 compatible. The resolver returns iso20022_hint on every resolution response, enabling downstream systems to generate standards-compliant payment messages without any mapping work.

MessageUsage
pacs.008Credit transfer initiation
pacs.002Payment status report
pain.001Customer credit transfer
camt.053Account statement
camt.054Debit/credit notification

What We Are Not

This protocol is explicit about scope:

✅ Payment address resolution✅ Payment orchestration infrastructure✅ Financial metadata layer✅ Routing intelligence layer✅ API gateway pattern for licensed banking infrastructure   (adapter interfaces only. No bank partner is live today.)
❌ Not a bank❌ Not a deposit holder❌ Not a settlement institution❌ Not a card issuer❌ Not a clearing network

No banking license required to use this protocol.


SDK

Official client libraries for the DNS of Money API. No external dependencies — stdlib only.

python
from dnsofmoney import resolve
result = resolve("pay:vendor.alpha")print(result.endpoints[0].rail)
typescript
import { resolve } from "dnsofmoney";
const result = await resolve("pay:vendor.alpha");console.log(result.endpoints[0].rail);

Repository Structure

dns-of-money/├── docs/│   ├── FAS-1-spec.md          # Financial Address Standard 1 (CC BY 4.0)│   ├── architecture.md        # Full system architecture│   └── integration-guide.md   # Integration patterns (MCP, A2A, REST)├── examples/│   ├── python/                # Python integration examples│   ├── typescript/            # TypeScript/JavaScript examples│   └── curl/                  # REST API examples├── schemas/│   ├── resolution-response.json   # JSON Schema for resolution response│   └── registration-request.json  # JSON Schema for registration├── sdk/│   ├── python/                # Python SDK (pip install dnsofmoney)│   └── typescript/            # TypeScript SDK (npm install dnsofmoney)└── CHANGELOG.md

Related Repositories

RepoPurposeLicense
dnsofmoney/dns-of-moneyFAS-1 spec, integration docs, schemas (this repo)CC BY 4.0 (docs/), Apache-2.0 (sdk/), MIT (other code, schemas)
dnsofmoney/a2a-protocol-coreA2A protocol core — agent-to-agent commerceApache 2.0

API Reference

Base URL: https://api.dnsofmoney.com

MethodEndpointDescription
GET/api/v1/resolve/{alias}Resolve a pay: alias to payment endpoints
GET/api/v1/aliases/available/{name}Check alias availability
POST/api/v1/aliases/registerRegister a new pay: alias
GET/api/v1/aliases/founding/remainingFounding tier spots remaining
GET/healthAPI health check

Full API docs: api.dnsofmoney.com/docs

Authentication: X-API-Key header required for all write operations.


Current State vs. Roadmap

Live Today ✅

  • pay: alias registration and resolution (7-stage pipeline with identity evolution)
  • NFT identity system: generative fractal flame art per alias, IPFS-pinned
  • Identity block in resolve response (image, metadata, explorer link)
  • Founding mint page with live counter at dnsofmoney.com
  • Claim page: wallet connect via Xaman, burn option
  • XRPL payment rail (mainnet, proven)
  • ACH adapter (mock / not yet live — no real ACH settlement to date)
  • OFAC sanctions screening
  • ISO 20022 hint generation
  • Founding tier (600-name hard cap, 33 minted, on-chain proof)
  • 41 root namespaces anchored on XRPL mainnet
  • Agent verification: first AI agent resolved + verified + witnessed payment
  • Marketing site live at dnsofmoney.com with SSL
  • Rate limiting + IPFS proxy at the edge
  • Managed secrets + HTTPS API live (api.dnsofmoney.com)
  • MCP server (remote, streamable HTTP) listed in the official MCP registry
  • x402 agent payments: multi-network challenge, paid counterparty screening, discovery manifest at /.well-known/x402
  • 4,297 tests passing in CI on the reference implementation (2026-11-02)

Roadmap 🗺️

  • FedNow and ACH production integration (pending a banking partner. Both are mock today.)
  • AP2 mandate layer on the public API (mapping published in spec §9.6)
  • SDK packages (Python, TypeScript, Go)
  • LangChain / CrewAI / AutoGPT integration modules
  • Subdomain delegation (hierarchical namespace tree)
  • Resolution fee pricing
  • Token economics and governance

FAS-1 Spec

The Financial Address Standard 1 (FAS-1) is the open protocol specification underlying pay: URIs. It is licensed under CC BY 4.0 — free to implement, extend, and build on.

Key properties:

  • Rail-agnostic: one alias resolves to N endpoints, ordered by policy
  • ISO 20022 aligned: every resolution carries a message family hint
  • On-chain anchored: namespace ownership is verifiable on XRPL mainnet
  • A2A, MCP and x402: live surfaces, not aspirations (see the spec, §9.4 and §9.5)
  • AP2: the three-mandate mapping is published in §9.6. Implemented as a spike, not yet exposed on the public API

Read the spec: docs/FAS-1-spec.md


Contributing

This repo is the public home of the FAS-1 specification and integration documentation. We welcome:

  • Issues: spec clarifications, edge cases, implementation questions
  • PRs: integration examples, documentation improvements, schema refinements
  • Discussions: use cases, protocol extensions, competing approaches

For protocol-level proposals, open an issue with the [RFC] prefix.


License

  • Protocol specification and documentation (docs/): CC BY 4.0. The root MIT License does not apply to docs/.
  • SDKs (sdk/): Apache-2.0.
  • Other code, code examples and schemas: MIT, except where a directory has its own license file.

Community


Financial orchestration infrastructure for the machine economy.
Payments. AI agents. Autonomous commerce.
We are not a bank. We are the layer above it.


"If you plant ice, you're gonna harvest wind."

Source: README.md at commit a7f609b

Tools

6

resolve_alias

Resolve a human-readable financial alias (pay: address) to payment endpoints and routing metadata. Call this before initiating any payment to a pay: address. Returns the preferred rail, fallback endpoints, an ISO 20022 hint, and a compliance signal. Anonymous calls return status only; a free API key (no credit card) unlocks the endpoint set — which rails and currencies the alias accepts — via POST /api/v1/access-requests. You do NOT need a key to pay: get_payment_requirements returns a payable address to any caller. Example: resolve_alias('pay:acme.user').

Parametersamountcurrencyalias_urirequiredpreferred_rail

discover_agent

Get the AP2/A2A agent-commerce block for a pay: address — the DNS of Money equivalent of an A2A agent-card lookup. Use this during agent discovery before initiating a mandate flow. Returns agent capabilities only; NO payment credentials. Example: discover_agent('pay:acme.user').

Parametersalias_urirequired

check_alias_available

Check whether a pay: alias can still be claimed. Returns exactly one of three states: 'available' (free to register), 'taken' (already registered), or 'reserved' (protected namespace). When available, also returns the number of founding spots remaining. Public — no API key required. Read-only: this never reserves or registers the name. Example: check_alias_available('pay:acme.user').

Parametersalias_urirequired

get_payment_requirements

Get x402 PaymentRequirements for paying a pay: alias. Returns the 402 `accepts` block (scheme, network, payTo, asset, amount, invoiceId) an x402 agent needs to construct and submit the payment. currency='XRP' settles on the XRP Ledger (amount in drops); currency='USDC' settles USDC on Algorand via the GoPlausible facilitator (amount in atomic micro-USDC, feePayer in `extra`). The deterministic resolver chooses the rail; this tool never moves money. Example: get_payment_requirements('pay:acme.user', amount='1.5').

Parametersamountcurrencyalias_urirequired

get_payment_status

Check whether a payment you already attempted was recorded, BEFORE you retry and risk spending twice. Pass the request_key you sent as the Idempotency-Key header on the paid request. Returns state 'settled' (we hold a receipt — do NOT pay again) or 'not_found' (we have no record — retrying is safe). Use this when a paid call timed out or its response was lost: on rails where the facilitator broadcasts, you never learn the transaction hash unless our response reaches you, so this key is the only thing that can answer. The key is a bearer secret — whoever presents it gets the receipt.

Parametersrequest_keyrequired

get_agent_registration_info

Learn how to self-register a FREE pay:agent.<label> alias for your agent. Returns the registration endpoint, the AgentAuthorityCredential verifiable-presentation requirements (intent binding + domain), the rate limit, and the Merkle anchor-proof endpoint. Read-only — registration itself is the credential-gated POST this tool points at. Example: get_agent_registration_info().

Takes no parameters.

Version history

2
  1. v1.1.0LatestNov 5, 2026
  2. v1.0.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts