Skip to main content
Glama
XRPDomains

XRPName MCP Server

Official
by XRPDomains

XRPName MCP Server

npm MCP Registry MCP Sentinel M8ven Score PulseMCP GitHub stars license

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

check_domains

read

Availability, price, and owner for up to 25 domains at once

recommend_domain

read

AI name suggestions for a keyword, with availability + price

get_domain_profile

read

Full profile for a registered domain (owner, records, history)

get_portfolio

read

All domains held by an XRPL address

resolve_address

read

Reverse lookup: address → primary XRPName + all owned names

get_pending_offers

read

Pending buy/sell offers and mints for an address

check_tx_status

read

Status of an XRPL transaction by hash

check_order_status

read

Status of a registration order by domain

register_domain

link

Returns an xrpdomains.xyz link to register an available domain

set_primary_domain

link

Returns a link to set a domain as the address's primary

Related MCP server: Domain Checker MCP Server

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/mcp

Claude 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-mcp

Wire 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

XRPDOMAINS_API_BASE

https://xrpdomains.xyz

Backend REST API base

XRPL_WSS_URL

wss://xrplcluster.com

XRPL node for tx status

REDIS_URL

(in-memory)

Optional cache/rate-limit backend

PORT

3000

HTTP port (remote transport only)

LOG_LEVEL

info

Pino log level

See .env.example for the full list (rate limiting, analytics).

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 tools
check_domainsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
domainsYesList of domains to check. Each may include or omit the TLD; defaults to .xrp.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_statusA
Read-onlyIdempotent
Inspect

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).

NameRequiredDescriptionDefault
domainYesThe domain whose order to check, e.g. "alice.xrp".

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_statusA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
tx_hashYes64-character hex XRPL transaction hash

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_profileA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
domainYesDomain to look up, e.g. "alice.xrp"
include_historyNoInclude the on-chain ownership timeline (transfers, marketplace sales).

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_offersA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
addressYesXRPL r... address of the wallet to query (e.g. "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe").

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_portfolioA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
sortNoSort order. "recent" keeps the backend order.recent
limitNoMax domains to return.
addressYesXRPL r... address whose domains to list.
filter_tldNoFilter by TLD, e.g. ".xrp", ".xrpfi", ".rlusd", or "all".all

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_domainA
Read-only
Inspect

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

NameRequiredDescriptionDefault
tldsNoTLDs to include (without dots), e.g. ["xrp","xrpfi"]. Omit for all.
limitNoHow many suggestions to return.
queryYesKeyword or theme to base suggestions on, e.g. "tom" or "crypto".

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_domainA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
domainYesThe domain to register, e.g. "coolname.xrpfi".
refcodeNoOptional referral code to embed in the registration link.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_addressA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNoMaximum number of domains to return (cap 200).
addressYesXRPL classic address, e.g. "rLhi87eXFZNueP4Kg1jUuHmm7pWZBoT3Yn".
include_historyNoIf true, include per-domain nftoken_id and mint date.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_domainA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
domainYesThe domain to set as primary, e.g. "alice.xrp".

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. 1 tool updatev0.1.5
    • Addedresolve_address
  2. 9 tool updatesv0.1.3
    • First observedcheck_domains
    • First observedcheck_order_status
    • First observedcheck_tx_status
    • First observedget_domain_profile
    • First observedget_pending_offers
    • First observedget_portfolio
    • First observedrecommend_domain
    • First observedregister_domain
    • First observedset_primary_domain

TDQS

A4.3/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to perform WHOIS lookups to retrieve domain registration details, including ownership, registration dates, and availability status without requiring browser searches.
    4
    30 npm
    21
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to check domain availability, perform batch domain lookups, and generate intelligent domain name suggestions across multiple TLDs using WHOIS integration.
    3
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    7
    MIT