dns-of-money
Resolve, discover & pay pay: aliases for AI agents; returns a signed OFAC-screen attestation.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"dns-of-money": {
"url": "https://api.dnsofmoney.com/mcp/rpc"
}
}
}Remote endpoints
https://api.dnsofmoney.com/mcp/rpcstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟡resolve_alias(alias_uri, amount, currency, preferred_rail)
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').
Input Schema
{
"type": "object",
"properties": {
"alias_uri": {
"type": "string",
"description": "The pay: address to resolve. E.g. 'pay:acme.user'."
},
"amount": {
"type": "string",
"description": "Optional payment amount (decimal string) — refines rail scoring."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 currency code. Defaults to USD."
},
"preferred_rail": {
"type": "string",
"description": "Optional rail hint (e.g. 'xrpl', 'fednow'). Advisory only."
}
},
"required": [
"alias_uri"
]
}🟢discover_agent(alias_uri)
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').
Input Schema
{
"type": "object",
"properties": {
"alias_uri": {
"type": "string",
"description": "The pay: address to discover. E.g. 'pay:acme.user'."
}
},
"required": [
"alias_uri"
]
}🟢check_alias_available(alias_uri)
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').
Input Schema
{
"type": "object",
"properties": {
"alias_uri": {
"type": "string",
"description": "Candidate pay: address, e.g. 'pay:acme.user'. A bare name without the 'pay:' prefix is accepted too."
}
},
"required": [
"alias_uri"
]
}🟡get_payment_requirements(alias_uri, amount, currency)
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').
Input Schema
{
"type": "object",
"properties": {
"alias_uri": {
"type": "string",
"description": "The pay: address to pay. E.g. 'pay:acme.user'."
},
"amount": {
"type": "string",
"description": "Amount to pay — decimal string in the asset's display unit (XRP). Omit it to be quoted the alias's declared price; required for an alias that declares no price."
},
"currency": {
"type": "string",
"description": "Asset to pay in: 'XRP' (XRPL) or 'USDC' (Algorand). Defaults to XRP."
}
},
"required": [
"alias_uri"
]
}🟢get_payment_status(request_key)
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.
Input Schema
{
"type": "object",
"properties": {
"request_key": {
"type": "string",
"description": "The exact Idempotency-Key you sent with the paid request. 32-128 characters of [A-Za-z0-9_-], generated from a CSPRNG with at least 128 bits of entropy."
}
},
"required": [
"request_key"
]
}🟡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().
Input Schema
{
"type": "object",
"properties": {}
}Community
Evidence