XRPName MCP Server
OfficialThis server lets AI agents interact with the XRPDomains naming system (.xrp, .xrpl, .xrpfi, .rlusd) on the XRP Ledger, providing read-only access to domain data and generating web links for registration or setting primary domains, all without requiring private keys.
Check domain availability: Look up 1–25 domains at once to see availability, price, and owner.
Get domain suggestions: Receive AI-recommended domain names based on a keyword or theme, each with availability and price.
View domain profiles: Access full public profile of a registered domain: owner, NFT token ID, metadata, avatar, social handles, linked addresses, and optionally ownership history.
List owned domains: Show all domains owned by an XRPL address, with sorting and TLD/length/primary status filtering.
Reverse lookup address: Find the primary name and all owned names associated with an XRPL address.
View pending offers: See incoming/outgoing transfer offers and paid-but-not-yet-minted orders for a wallet.
Check transaction status: Verify the validation status of an XRPL transaction by hash.
Check order status: Track the backend progress of a domain registration order (payment, offer creation, minting).
Initiate domain registration: Generate a direct link to register a domain on xrpdomains.xyz, where the user signs in their own wallet.
Set primary domain: Generate a link to set a domain as the wallet's primary name, completed securely in the browser.
Provides tools for interacting with XRP Ledger (XRPL) domains, including checking domain availability, pricing, profiles, portfolios, pending offers, transaction status, and generating registration links.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@XRPName MCP Servercheck if alice.xrp is available and how much it costs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
XRPName MCP Server
XRPL domains for AI agents. XRPName exposes the XRPDomains
naming system — .xrp, .xrpl, .xrpfi, .rlusd — over the
Model Context Protocol so assistants like
Claude, Cursor, and Codex can check availability, look up pricing and profiles,
read a wallet's portfolio, and hand the user a registration link.
Read-only + web-link by design. The server only reads public XRPL and
registry data; write actions (register, set primary) return an xrpdomains.xyz
link the user opens and signs in their own wallet. No API key, no private key,
no transaction is ever built or held by this server.
Tools
Tool | Kind | What it does |
| read | Availability, price, and owner for up to 25 domains at once |
| read | AI name suggestions for a keyword, with availability + price |
| read | Full profile for a registered domain (owner, records, history) |
| read | All domains held by an XRPL address |
| read | Reverse lookup: address → primary XRPName + all owned names |
| read | Pending buy/sell offers and mints for an address |
| read | Status of an XRPL transaction by hash |
| read | Status of a registration order by domain |
| link | Returns an |
| link | Returns a link to set a domain as the address's primary |
Related MCP server: Domain Checker MCP Server
Install
Hosted (recommended — zero install)
The server runs remotely at https://xrpdomains.xyz/mcp (Streamable HTTP, no auth).
# Claude Code
claude mcp add xrpname-mcp --transport http https://xrpdomains.xyz/mcpClaude Desktop / Cursor — add to the MCP config:
{
"mcpServers": {
"xrpname-mcp": { "url": "https://xrpdomains.xyz/mcp", "transport": "http" }
}
}Local (this npm package — stdio)
Runs the same tools locally, talking to the public XRPDomains API. No credentials needed.
npx -y @xrpname/xrpname-mcpWire it into any MCP client's stdio config:
{
"mcpServers": {
"xrpname-mcp": { "command": "npx", "args": ["-y", "@xrpname/xrpname-mcp"] }
}
}A one-click Claude Desktop extension (.mcpb) is attached to each
GitHub Release.
Configuration
All settings are optional — defaults point at the public mainnet API.
Variable | Default | Purpose |
|
| Backend REST API base |
|
| XRPL node for tx status |
| (in-memory) | Optional cache/rate-limit backend |
|
| HTTP port (remote transport only) |
|
| Pino log level |
See .env.example for the full list (rate limiting, analytics).
Links
Setup & all tools: https://xrpdomains.xyz/agent
MCP Registry:
io.github.XRPDomains/xrpname-mcp-serverRepository: https://github.com/XRPDomains/xrpname-mcp-server
Issues: https://github.com/XRPDomains/xrpname-mcp-server/issues
Development
npm ci
npm run build # tsc → dist/
npm test # vitest
npm run typecheck # tsc --noEmit
npm run dev # remote HTTP server (watch)
npm run dev:stdio # local stdio server (watch)License
MIT © XRPDomains. See LICENSE.
Available Tools
10 toolscheck_domainsARead-onlyIdempotentInspect
Check 1 to 25 XRPL domains for registration status and cost. Use for questions like "is .xrp taken?", "how much does .xrp cost?", "who owns .xrp?", or to verify availability before registering. Accepts .xrp, .xrpl, .xrpfi, .rlusd TLDs (defaults to .xrp when omitted). Returns availability, price in XRP and RLUSD, owner address, profile metadata if registered, and a web URL for the user to register if available. Also returns invalid_domains for inputs that fail validation.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | List of domains to check. Each may include or omit the TLD; defaults to .xrp. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so safety is covered; the description adds real behavioral context on top: the accepted TLD set, the .xrp default, the batch ceiling, and the invalid_domains validation bucket. It omits auth/rate-limit or failure-handling detail, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then use cases, then TLD rules, then return shape. It is dense with no filler, though the quoted-example list is the longest clause and slightly slows scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so fully: availability, price in XRP and RLUSD, owner address, profile metadata, registration URL, and invalid_domains. Inputs, defaults, limits, and validation failures are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description contributes meaning the schema lacks: the concrete list of accepted TLDs (.xrp, .xrpl, .xrpfi, .rlusd) and the default rule. That effectively documents enum-like accepted values that the schema does not enumerate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check XRPL domains for registration status and cost') and pins down the batch scope (1 to 25). This is distinguishable from siblings like register_domain (a mutation) and get_domain_profile (single-profile lookup) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering questions ('is <name>.xrp taken?', 'how much does <name>.xrp cost?') plus a condition ('verify availability before registering'), which tells the agent when to reach for it. It never names an exclusion or an explicit alternative tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_order_statusARead-onlyIdempotentInspect
Check the backend order status for a domain you tried to register on xrpdomains.xyz. Returns whether payment landed, the offer was created, the mint completed, or it failed at a step. Use when a user asks "did my X.xrp registration go through?" or "what's the status of my order?". This is deeper than check_domains (which only shows availability).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain whose order to check, e.g. "alice.xrp". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real value beyond that by enumerating the lifecycle states it reports (payment landed, offer created, mint completed, failed step), which tells the agent what a response can mean. It does not cover polling/rate behavior or how to interpret a partial failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and scope, followed by return semantics and the sibling comparison. No filler and nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description supplies the missing return-value semantics and the usage routing. Annotations cover the safety profile, so nothing an agent needs in order to call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, so the schema fully documents the 'domain' argument including its format example. The description adds no syntax, format, or constraint information beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (check backend order status) scoped to domains registered on xrpdomains.xyz, and explicitly distinguishes itself from the sibling check_domains ('deeper than check_domains, which only shows availability'). An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrasing ('did my X.xrp registration go through?', 'what's the status of my order?') plus an explicit exclusion for the nearest alternative. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_tx_statusARead-onlyIdempotentInspect
Check the validation status of an XRPL transaction by hash. Use after send_signed_tx to confirm whether the transaction was validated on-ledger. Returns status (pending, validated, failed, not_found) and engine result code.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | 64-character hex XRPL transaction hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply readOnlyHint and idempotentHint, so the safety profile is already covered. The description adds value beyond that by enumerating the possible outcomes (pending, validated, failed, not_found) and mentioning the engine result code, which implies the tool may need to be polled while pending. It does not discuss retry/polling cadence or rate limits, but the return-value disclosure is genuinely additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then workflow and return values. Every clause carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description takes on that burden and does so by listing the four status values and the engine result code. Combined with the annotations covering the read-only/idempotent profile, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required tx_hash parameter, so the schema already documents the 64-char hex format. The description adds only 'by hash' with no further syntax or format detail beyond the schema. Baseline 3 applies when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (check validation status of an XRPL transaction by hash) and names the companion tool send_signed_tx whose output it consumes. An agent can distinguish this read-only status probe from sibling tools like get_portfolio or check_order_status without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: 'Use after send_signed_tx to confirm whether the transaction was validated on-ledger.' That is clear situational context. No when-not guidance or alternative tools are named, but the placement in the send-then-verify workflow is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_profileARead-onlyIdempotentInspect
Get the full public profile of a single XRPL domain — owner, NFT token ID, metadata, avatar, fullname, description, social handles, linked chain addresses, and optionally the on-chain ownership history (pass include_history=true). Use when the user asks "show me X.xrp", "what does X.xrp link to?", "who owns X.xrp?", or "show me the history of X.xrp". Returns null fields gracefully if no profile is set.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to look up, e.g. "alice.xrp" | |
| include_history | No | Include the on-chain ownership timeline (transfers, marketplace sales). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds real behavioral context beyond that: history is opt-in via include_history=true, and unset profile fields return null rather than erroring.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: what it returns, when to use it, and edge-case behavior. Front-loaded with the resource definition, though the field enumeration is long and partially redundant with the usage examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of naming the returned fields and clarifying null-field behavior, which is the key return-value contract. Minor gaps remain (e.g., error behavior for a non-existent domain), but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented in the schema, establishing a baseline of 3. The description mentions include_history and its purpose but adds no syntax or format detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Get the full public profile of a single XRPL domain') followed by an explicit enumeration of what the profile contains. This clearly distinguishes it from bulk-oriented siblings like check_domains and resolve_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides four concrete user-utterance triggers ('show me X.xrp', 'who owns X.xrp?', etc.) that map intent directly to this tool. It stops short of naming an alternative tool or stating when NOT to use it, so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pending_offersARead-onlyIdempotentInspect
Get all pending XRPL domain operations for a wallet — incoming offers (someone offered the wallet a domain), outgoing offers (the wallet listed a domain), and paid-but-not-yet-minted orders the user can still complete. Use when the user asks "do I have any pending transfers?", "what offers are waiting on me?", or before suggesting an accept/cancel/continue-mint action. Requires an XRPL r... address.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | XRPL r... address of the wallet to query (e.g. "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and open-world, so the safety profile is covered. The description adds real behavioral value by decomposing what "pending" includes across three operation types, which the annotations cannot convey. It stops short of describing pagination or result shape, but adds meaningful context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose then the enumeration, then usage triggers, then the parameter requirement. Slightly run-on but every clause (especially the three-category breakdown and the pre-action cue) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-parameter tool with no output schema, the description covers what is retrieved (three categories), when to call it, and the required input. Only minor gaps remain around result shape/pagination, which are less critical given annotations already establish the read-only nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single required parameter with 100% schema coverage, so the schema already documents the address format and example. The description only restates the requirement (truncated as "Requires an XRPL r... address"), adding no new format or constraint detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (get) and resource (pending offers/domain operations) and enumerates the three distinct categories it covers: incoming offers, outgoing offers, and paid-but-not-minted orders. This lets an agent distinguish it from siblings like check_order_status or get_portfolio without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrasing ("do I have any pending transfers?", "what offers are waiting on me?") and a workflow cue (call before suggesting accept/cancel/continue-mint). It does not name the adjacent alternative check_order_status or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolioARead-onlyIdempotentInspect
List all XRPL domains owned by a wallet address. Use when the user asks "what domains do I own?", "show me my domains", or wants to see another wallet's holdings. Returns each domain with its TLD, length, primary flag, subname flag, and quick-action URLs. (nftoken_id, image, and mint time are not included here — use get_domain_profile for one domain.) Requires an XRPL r... address.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. "recent" keeps the backend order. | recent |
| limit | No | Max domains to return. | |
| address | Yes | XRPL r... address whose domains to list. | |
| filter_tld | No | Filter by TLD, e.g. ".xrp", ".xrpfi", ".rlusd", or "all". | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds value beyond that by enumerating the returned fields and explicitly naming what is NOT returned (nftoken_id, image, mint time) with a pointer to the sibling that does return them. It does not mention pagination/truncation behavior for large portfolios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then usage triggers, then return shape, then the exclusion/routing note — a logical order with no filler. It is on the longer side for a four-parameter list tool, but every clause (return fields, exclusion, sibling pointer) carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing the returned fields and the excluded ones. Combined with the annotations it covers what an agent needs to call and interpret the tool; only edge behaviors (empty portfolio, limit truncation) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents address, sort, limit and filter_tld in full. The description only reinforces that a valid XRPL address is required and adds no format or syntax detail for sort/filter_tld, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all XRPL domains owned by a wallet address') and explicitly distinguishes itself from the sibling get_domain_profile, which handles single-domain detail. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrases ('what domains do I own?', 'show me my domains') and covers the third-party case ('wants to see another wallet's holdings'). It also names the alternative (get_domain_profile) and the condition that selects it, so when-to-use and when-not-to-use are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_domainARead-onlyInspect
Get AI-recommended domain suggestions for a keyword or theme (e.g. "tom", "crypto", "defi"). Returns creative name + TLD combos with a category, each cross-checked for availability, priced, and given a register link. Use when a user asks "suggest names", "find me a domain about X", or "give me some .xrp ideas".
| Name | Required | Description | Default |
|---|---|---|---|
| tlds | No | TLDs to include (without dots), e.g. ["xrp","xrpfi"]. Omit for all. | |
| limit | No | How many suggestions to return. | |
| query | Yes | Keyword or theme to base suggestions on, e.g. "tom" or "crypto". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-lookup behavior are covered. The description adds real value beyond them by disclosing that results are cross-checked for availability, priced, and given a register link, and the 'AI-recommended' framing implies non-deterministic output consistent with idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, output shape second, usage triggers last. Every sentence earns its place, though the example list is slightly repetitive across the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing the returned structure (name+TLD, category, availability, price, register link). An agent has enough to call it correctly; only the exact result field names remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both tlds and limit are already documented in the schema; the description only echoes the query examples ('tom', 'crypto', 'defi') and alludes to TLD filtering ('.xrp ideas'). Baseline 3 is appropriate since the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (recommend domains) plus the scope ('for a keyword or theme') and distinguishes itself from siblings like check_domains and register_domain by being a generative suggestion tool. The output composition (name + TLD combos with category) makes the deliverable unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger phrasings ('suggest names', 'find me a domain about X', '.xrp ideas') that map intent to tool selection. It does not explicitly contrast with the closest sibling (check_domains) or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_domainARead-onlyIdempotentInspect
Get the link to register a .xrp / .xrpl / .xrpfi / .rlusd domain on xrpdomains.xyz. Registration is completed in the browser — the website handles the order and the user signs in their wallet there (the MCP does NOT build or broadcast the payment). Use when the user says "register X.xrpfi" or "buy X.xrp". Pass refcode if a referral applies.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain to register, e.g. "coolname.xrpfi". | |
| refcode | No | Optional referral code to embed in the registration link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, and the description reinforces this with the crucial disclosure that the MCP does NOT build or broadcast the payment and that signing happens in the user's wallet on the website. That is exactly the kind of context annotations cannot convey. It stops short of stating link expiry or reuse behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: purpose and accepted TLDs first, the critical browser/wallet caveat second, the trigger phrases and refcode rule last. No sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by stating the tool returns a link and that the transaction completes externally. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, establishing a baseline of 3. The description adds a real usage condition for refcode ('Pass refcode if a referral applies') that the schema's terse 'optional referral code' does not, lifting it slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get the link to register) and a concrete resource (a .xrp/.xrpl/.xrpfi/.rlusd domain on xrpdomains.xyz), and makes clear it is not the registration itself. This cleanly separates it from siblings like check_domains, recommend_domain, and get_domain_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger phrases ('register X.xrpfi', 'buy X.xrp') and a conditional rule for refcode. It does not name alternatives such as check_domains for availability or recommend_domain for name suggestions, so the when-not path is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_addressARead-onlyIdempotentInspect
Reverse resolution: given an XRPL address, return its primary XRPName (if set) and the full list of names owned by the wallet. Use when the user says "who owns [address]?", "look up this wallet", or "what names does [address] have?", or when chained with get_domain_profile to explore a wallet. Returns found:false if the address owns no XRPName.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of domains to return (cap 200). | |
| address | Yes | XRPL classic address, e.g. "rLhi87eXFZNueP4Kg1jUuHmm7pWZBoT3Yn". | |
| include_history | No | If true, include per-domain nftoken_id and mint date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuine behavioral context beyond that: it discloses the no-result case ("Returns found:false if the address owns no XRPName") and that the primary name is conditional ("if set"). It doesn't cover result volume/pagination behavior, minor given limit is schema-documented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no filler: the mechanism first, then usage triggers, then the failure-mode return. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so adequately, naming the primary name, the full owned-names list, and the found:false sentinel. It leaves the shape of the per-domain list (and what include_history surfaces in it) implicit, which is a small remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so address, limit and include_history are already fully documented with defaults, caps and examples. The description restates the address input conceptually but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and direction ("Reverse resolution: given an XRPL address, return its primary XRPName... and the full list of names owned"), which cleanly distinguishes it from the forward-looking sibling get_domain_profile. An agent can pick this tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete user phrasings ("who owns [address]?", "look up this wallet", "what names does [address] have?") plus a chaining condition with get_domain_profile, which is unusually strong routing guidance. It stops short of a when-not-to-use statement or an explicit alternative to pick instead, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_primary_domainARead-onlyIdempotentInspect
Get the link to set a domain as your wallet's primary (the name shown by default for your address). Setting primary is completed in the browser — the website handles it and your wallet signs there (the MCP does NOT build or broadcast the transaction). Use when the user says "make X.xrp my primary" or "set X.xrpfi as my main domain". The wallet must already own the domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain to set as primary, e.g. "alice.xrp". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true; the description adds crucial behavior beyond them — the tool only returns a link, the MCP does not build or broadcast the transaction, and completion happens in the browser with a wallet signature. That resolves the non-obvious async/out-of-band flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the critical browser-signing caveat up front; trigger phrases and ownership requirement follow efficiently. Slightly dense but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read-only tool with no output schema, the description covers what an agent must know: what it returns (a link), that signing happens outside the MCP, and the ownership precondition. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and documents the single domain parameter with an example, so the baseline is 3; the description adds the owning-wallet precondition and reinforces the domain target, giving a bit of extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (get a link to set a domain as primary) and clarifies the actual sign/broadcast happens elsewhere. It is clearly distinct from siblings like register_domain or resolve_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit trigger phrases ('make X.xrp my primary', 'set X.xrpfi as my main domain') and a precondition (wallet must already own the domain), so the agent knows exactly when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.5- Added
resolve_address
9 tool updates
v0.1.3- First observed
check_domains - First observed
check_order_status - First observed
check_tx_status - First observed
get_domain_profile - First observed
get_pending_offers - First observed
get_portfolio - First observed
recommend_domain - First observed
register_domain - First observed
set_primary_domain
TDQS
Scored across 10 tools
Most tools have distinct resource+action targets, but a few overlap: check_domains and get_domain_profile both surface ownership info (bulk availability vs single detailed profile), and get_portfolio and resolve_address both list names owned by a wallet. Descriptions do a good job clarifying intent, so an agent can usually disambiguate.
Every tool follows a consistent snake_case verb_noun pattern (check_domains, get_domain_profile, register_domain, set_primary_domain, resolve_address). No camelCase mixing or inconsistent verb styles.
10 tools is well-scoped for a domain registration/exploration server, with each tool covering a distinct capability (discovery, lookup, ownership, transaction/order status, registration links). Nothing feels padded or redundant.
Core lifecycle is covered: availability, recommendation, profile, portfolio, reverse resolution, registration, primary-setting, plus order and tx status. However, get_pending_offers references accept/cancel/continue-mint actions that have no corresponding tools, and there is no transfer or subname-management tool, leaving minor gaps.
Maintenance
Related MCP Connectors
Domain search, registration, DNS, marketplace, and checkout with your AI agent.
Register, transfer and manage domain names and DNS from your AI agent.
Find, register, and manage domains from any AI chat or agent
Custom domains for SaaS and AI agents: search, register, connect DNS, and issue HTTPS over MCP.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to perform WHOIS lookups to retrieve domain registration details, including ownership, registration dates, and availability status without requiring browser searches.430 npm21MIT
- AlicenseAqualityDmaintenanceEnables AI agents to check domain availability, perform batch domain lookups, and generate intelligent domain name suggestions across multiple TLDs using WHOIS integration.3MIT
- AlicenseAqualityDmaintenanceEnables AI agents to perform real-time WHOIS and RDAP lookups, domain availability checks, and TLD infrastructure exploration using native protocols without API keys.8MIT
- AlicenseBqualityBmaintenanceEnables AI agents to obtain signed quotes and buy one-year domain registrations on fixed-markup seller rails, paying per-order in USDC via x402, then manage DNS records and order status through signed capabilities. It also exposes a buyer-side connector that attaches an owned domain to a pinned Vercel project.7MIT