# StableDomains (remote · stabledomains.net)

USDC/USDT domain registrar on 7 chains, card checkout for people, expiring drops, WHOIS/DNS tools.

- Trust score: 65/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

> **Recent critical change**: Authorization (2026-10-30). See the changelog below before you install this server.

## Components

- remote · `stabledomains.net`: 65/100 (this document), [markdown](https://verifymcp.io/servers/net-stabledomains-registrar/api-mcp.md), [page](https://verifymcp.io/servers/net-stabledomains-registrar/api-mcp)

## Channel facts

- Endpoint: `https://stabledomains.net/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `2.5.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (create_order).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4204 tokens (~110/item across 38 items; 38 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability check failed: schema churn in the 8 days we've observed: 2 tool removals, 1 breaking changes, 0 auth/transport breaks, 15 additions.
- **Tool Coverage**: 76/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 28% of tool parameters carry a description.
- **Tool Safety**: 92/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 2 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "drop_radar" implies "drop" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the StableDomains MCP server?

StableDomains is a hosted endpoint at https://stabledomains.net/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http net-stabledomains-registrar 'https://stabledomains.net/api/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "net-stabledomains-registrar": {
      "url": "https://stabledomains.net/api/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "net-stabledomains-registrar": {
      "type": "http",
      "url": "https://stabledomains.net/api/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.net-stabledomains-registrar]
url = "https://stabledomains.net/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "net-stabledomains-registrar": {
      "type": "remote",
      "url": "https://stabledomains.net/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add net-stabledomains-registrar --url 'https://stabledomains.net/api/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  net-stabledomains-registrar:
    url: "https://stabledomains.net/api/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "net-stabledomains-registrar": {
      "Transport": "http",
      "Url": "https://stabledomains.net/api/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add net-stabledomains-registrar -t streamable-http -u 'https://stabledomains.net/api/mcp'
```

### Other

```json
{
  "mcpServers": {
    "net-stabledomains-registrar": {
      "type": "http",
      "url": "https://stabledomains.net/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 65, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “create_order” rewrote its description, which is the text the model reads
- [security] Tool “renew_domain” rewrote its description, which is the text the model reads
- [security] Tool “set_dns” rewrote its description, which is the text the model reads
- [security] Tool “set_notification_webhook” rewrote its description, which is the text the model reads
- [security] Tool “buy_with_balance” is now declared destructive
- [security] Tool “create_cart” is now declared destructive
- [security] Tool “create_order” is now declared destructive
- [security] Tool “pay_order” is now declared destructive
- [security] Tool “renew_domain” is now declared destructive
- [security] Tool “set_auto_renew” is now declared destructive
- [security] Tool “topup_balance” is now declared destructive
- [security] Tool “transfer_domain” is now declared destructive
- [cosmetic] “create_order” added an optional parameter “dry_run”
- [cosmetic] “renew_domain” added an optional parameter “dry_run”
- [cosmetic] Tool “contact_support” changed its title: Contact support

### 2026-11-04 (score 64, 0)

- [security] Tool “topup_balance” rewrote its description, which is the text the model reads
- [functional] New tool “contact_support”
- [cosmetic] “create_order” added an optional parameter “showcase_category”

### 2026-11-03 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10.

### 2026-11-01 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 0 to 3.

### 2026-10-30 (score 62, +1)

- [critical regression] Authorization: unverified → fail
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “apply_dns_template”, which the server declares destructive
- [security] New tool “set_url_forward”, which the server declares destructive
- [security] Tool “create_cart” rewrote its description, which is the text the model reads
- [security] Tool “create_order” rewrote its description, which is the text the model reads
- [security] Tool “get_balance” rewrote its description, which is the text the model reads
- [security] Tool “list_domains” rewrote its description, which is the text the model reads
- [security] Tool “search_domains” rewrote its description, which is the text the model reads
- [security] Tool “set_dns” rewrote its description, which is the text the model reads
- [security] Tool “suggest_domains” rewrote its description, which is the text the model reads
- [security] Tool “set_dns” is now declared destructive
- [security] Tool “set_notification_webhook” is now declared destructive
- [security] Tool “set_payout_address” is now declared destructive
- [functional regression] Schema quality: pass → fail
- [functional improvement] Destructive annotations: 0% → 67%
- [functional] Server version: 2.4.0 → 2.5.0
- [functional] New tool “list_url_forwards”
- [cosmetic] “create_order” added an optional parameter “showcase”
- [cosmetic] “create_order” added an optional parameter “showcase_description”
- [cosmetic] “create_order” added an optional parameter “showcase_title”
- [cosmetic] “set_dns” added an optional parameter “mode”
- [cosmetic] “set_dns” added an optional parameter “remove”
- [cosmetic] “suggest_domains” added an optional parameter “domain”
- [cosmetic] “suggest_domains” made “idea” optional
- [cosmetic] Tool “agent_signup” changed its title: Get a guest API key
- [cosmetic] Tool “pay_order” changed its title: Pay an order
- [cosmetic] Tool “buy_with_balance” changed its title: Buy a domain with balance
- [cosmetic] Tool “check_order” changed its title: Check order status
- [cosmetic] Tool “create_cart” changed its title: Create a multi-domain cart
- [cosmetic] Tool “create_order” changed its title: Create a domain order
- [cosmetic] Tool “dns_email_check” changed its title: DNS and email security check
- [cosmetic] Tool “drop_radar” changed its title: Domain Drop Radar search
- [cosmetic] Tool “estimate_domain_value” changed its title: Estimate domain value
- [cosmetic] Tool “find_dropping_domains” changed its title: Find expiring domains
- [cosmetic] Tool “get_agent” changed its title: Get agent profile
- [cosmetic] Tool “get_balance” changed its title: Get prepaid balance
- [cosmetic] Tool “get_dns” changed its title: Get DNS records
- [cosmetic] Tool “get_referral_link” changed its title: Get referral link
- [cosmetic] Tool “get_referral_stats” changed its title: Get referral stats
- [cosmetic] Tool “get_renewal_balance” changed its title: Get renewal balance
- [cosmetic] Tool “is_domain_dropping” changed its title: Check if a domain is dropping
- [cosmetic] Tool “list_domains” changed its title: List my domains
- [cosmetic] Tool “list_my_agent” changed its title: List my agent profiles
- [cosmetic] Tool “quote_domain” changed its title: Quote a domain price
- [cosmetic] Tool “radar_alert” changed its title: Save a Drop Radar alert
- [cosmetic] Tool “renew_domain” changed its title: Renew a domain
- [cosmetic] Tool “search_aftermarket” changed its title: Aftermarket links for a taken name
- [cosmetic] Tool “search_agents” changed its title: Search agent directory
- [cosmetic] Tool “search_domains” changed its title: Search domain availability
- [cosmetic] Tool “set_auto_renew” changed its title: Set auto-renew / fund renewal vault
- [cosmetic] Tool “set_dns” changed its title: Set DNS records / nameservers
- [cosmetic] Tool “set_notification_webhook” changed its title: Set notification webhook
- [cosmetic] Tool “set_payout_address” changed its title: Set referral payout address
- [cosmetic] Tool “suggest_domains” changed its title: Suggest available domains
- [cosmetic] Tool “topup_balance” changed its title: Create a balance top-up order
- [cosmetic] Tool “transfer_domain” changed its title: Transfer a domain in
- [cosmetic] Tool “watch_domain” changed its title: Watch a domain for drops
- [cosmetic] Tool “whois_lookup” changed its title: WHOIS / RDAP lookup

### 2026-10-29 (score 61, 0)

- [security regression] Stability: unverified → fail
- [security regression] Tool “referral_stats” was removed
- [security regression] Tool “request_referral_payout” was removed
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “drop_radar” rewrote its description, which is the text the model reads
- [security] Tool “quote_domain” rewrote its description, which is the text the model reads
- [security] Tool “search_domains” rewrote its description, which is the text the model reads
- [security] Tool “find_dropping_domains” rewrote its description, which is the text the model reads
- [security] Tool “set_auto_renew” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 74 → 90
- [functional regression] Schema quality: 74 → 86
- [functional regression] “set_auto_renew” dropped the required parameter “auto_renew”
- [functional] Schema quality: fair → good
- [functional] Server version: 2.2.0 → 2.4.0
- [functional] New tool “agent_signup”
- [functional] New tool “search_aftermarket”
- [functional] New tool “drop_radar”
- [functional] New tool “get_agent”
- [functional] New tool “get_referral_link”
- [functional] New tool “get_referral_stats”
- [functional] New tool “get_renewal_balance”
- [functional] New tool “list_my_agent”
- [functional] New tool “radar_alert”
- [functional] New tool “search_agents”
- [functional] New tool “set_payout_address”
- [cosmetic] “drop_radar” added an optional parameter “available_only”
- [cosmetic] “drop_radar” added an optional parameter “cursor”
- [cosmetic] “drop_radar” added an optional parameter “order”
- [cosmetic] “find_dropping_domains” added an optional parameter “available_only”
- [cosmetic] “find_dropping_domains” added an optional parameter “cursor”
- [cosmetic] “find_dropping_domains” added an optional parameter “drops_within_days”
- [cosmetic] “find_dropping_domains” added an optional parameter “limit”
- [cosmetic] “find_dropping_domains” added an optional parameter “order”
- [cosmetic] “find_dropping_domains” added an optional parameter “min_quality”
- [cosmetic] “find_dropping_domains” added an optional parameter “show_parked”
- [cosmetic] “set_auto_renew” added an optional parameter “deposit_usd”
- [cosmetic] “set_auto_renew” added an optional parameter “enabled”
- [cosmetic] “set_auto_renew” added an optional parameter “withdraw_usd”
- [cosmetic] “drop_radar” reworded the description of “drops_within_days”
- [cosmetic] “drop_radar” reworded the description of “limit”

### 2026-10-28 (score 61)

First indexed and scored.

## MCP tools (38)

### `search_domains` (~71 tokens)

Search domain availability

Check availability and USD price for a name across TLDs. Each result has premium (boolean; premium = registry price + 12%) and renewal_price (USD/yr). If the name is taken, suggestions[] lists close AVAILABLE alternatives (live-checked, cheapest first).

Input parameters:

- `q` (string, required)

### `search_aftermarket` (~72 tokens)

Aftermarket links for a taken name

For a taken name: affiliate links to Atom.com, an OUTSIDE aftermarket (not StableDomains), to find premium alternatives for the keyword. Exact-name listing on Atom is not verified (no public API). Atom handles payment/transfer.

Input parameters:

- `q` (string, required): name or domain, e.g. cloud.com

### `agent_signup` (~54 tokens)

Get a guest API key

Instant signup: returns an API key immediately (no form, no email). Guest tier (30 req/min) until claimed by email or wallet. Rate limited per IP (3/hour). Store the key; it is shown once.

### `quote_domain` (~55 tokens)

Quote a domain price

Live price quote for one domain. Returns premium (boolean) and renewal_price (USD/yr). Premium orders are refused if they exceed what we can currently fund.

Input parameters:

- `domain` (string, required)
- `years` (integer)

### `create_order` (~367 tokens)

Create a domain order

Create a registration order (a price-locked quote). Returns quote{price_usd, locked_until}, payment requirements (exact amount, address, x402 accepts) and checkout_url: a prefilled /order/{id} page a human can pay from. Policy: check availability right before buying, show the quote to the human and get confirmation before paying; pass idempotency_key (retries with the same key never create a second order; if omitted, identical calls within 15 min are de-duplicated). pay_with=balance pays instantly from prepaid balance. Card: the 402 response also carries stripe_link (Stripe Link via MPP, the human approves the spend in Link) and stripe_card (card checkout); to pay by card, hand the human checkout_url and they approve the card payment themselves. dry_run=true previews quote, renewal price and blockers without creating an order.

Input parameters:

- `chain` (string): payment network (default base). hyperevm = HyperEVM (chain 999, USDC/USDT0), bsc = BNB Chain (56, 18-decimal USDC/USDT)
- `domain` (string, required)
- `dry_run` (boolean): preview only, nothing created or charged
- `idempotency_key` (string)
- `nameservers` (array)
- `pay_with` (string)
- `ref` (string): referrer code
- `showcase` (boolean): Opt in to the public /showcase listing (only if the user asked)
- `showcase_category` (string): Required when showcase is true
- `showcase_description` (string)
- `showcase_title` (string)
- `token` (string): stablecoin (default USDC)
- `years` (integer)

### `buy_with_balance` (~45 tokens)

Buy a domain with balance

Register a domain and pay from prepaid balance in one call.

Input parameters:

- `domain` (string, required)
- `idempotency_key` (string)
- `years` (integer)

### `check_order` (~23 tokens)

Check order status

Get order status and next actions.

Input parameters:

- `order_id` (string, required)

### `pay_order` (~68 tokens)

Pay an order

Submit payment: tx_hash (EVM hash or Solana signature) of your transfer, or x_payment (base64 x402 EIP-3009 payload, gasless).

Input parameters:

- `order_id` (string, required)
- `tx_hash` (string)
- `x_payment` (string)

### `get_balance` (~22 tokens)

Get prepaid balance

Get your prepaid USD balance and its ledger of top-ups and spends.

### `topup_balance` (~110 tokens)

Create a balance top-up order

Create a top-up order (USD 1–5000); pay it like any order.

Input parameters:

- `amount_usd` (number, required)
- `chain` (string): payment network (default base). hyperevm = HyperEVM (chain 999, USDC/USDT0), bsc = BNB Chain (56, 18-decimal USDC/USDT)
- `idempotency_key` (string)
- `token` (string): stablecoin (default USDC)

### `find_dropping_domains` (~351 tokens)

Find expiring domains

Find expiring, pending-delete and just-dropped domains ranked by a verified quality score (0-100) built from sampled Wayback snapshots (real site vs parked/for-sale), Common Crawl presence, dictionary/brandability and spam heuristics; Majestic referring subnets only count when the archive shows a real site. Parked and spam names are hidden by default; each item includes quality_reasons. Free tier returns top 25; status=available names can be bought immediately with create_order. For presets, estimated value, multi-TLD and keyword filters use drop_radar.

Input parameters:

- `available_only` (boolean): only names registrable now
- `cursor` (string): next_cursor from the previous call
- `drops_within_days` (integer): pending-delete names dropping within N days
- `include_spam` (boolean): include spammy names (hidden by default)
- `limit` (integer): max 25 on the free tier
- `max_len` (integer)
- `max_price` (number)
- `min_age` (integer): min years of archive history
- `min_backlinks` (integer)
- `min_brand` (integer)
- `min_len` (integer)
- `min_quality` (integer)
- `no_digits` (boolean)
- `no_hyphen` (boolean)
- `order` (string): sort direction; default depends on sort
- `q` (string)
- `show_parked` (boolean): include names whose archive shows only parked/for-sale pages (hidden by default)
- `sort` (string)
- `status` (string)
- `tld` (string)

### `drop_radar` (~363 tokens)

Domain Drop Radar search

Domain Drop Radar: expiring, pending-delete and just-dropped domains filtered by TLD(s), length, keywords, value, quality and drop date, with presets (short-brandable, ai-names, dictionary-com, real-history, cheap-good, dropping-this-week). Returns a summary plus the top 25 with quality reasons, est. value, price, and a ready create_order body for available names or a watch body for others. For up to 500 rows call GET /api/v1/drops/full via x402 ($0.01). Page with limit + cursor (next_cursor in the response); sort with sort + order. To be alerted on future matches call radar_alert.

Input parameters:

- `available_only` (boolean): only names registrable now
- `cursor` (string): next_cursor from the previous call
- `dictionary` (boolean)
- `drops_within_days` (integer): pending-delete names dropping within N days
- `ends_with` (string)
- `keywords` (array)
- `limit` (integer): max 25 on the free tier
- `max_len` (integer)
- `max_price` (number)
- `max_value` (integer)
- `min_age` (integer)
- `min_len` (integer)
- `min_quality` (integer)
- `min_value` (integer)
- `new_within_hours` (integer)
- `no_digits` (boolean)
- `no_hyphen` (boolean)
- `order` (string): sort direction; default depends on sort
- `preset` (string)
- `sort` (string)
- `starts_with` (string)
- `status` (string)
- `tlds` (array)

### `radar_alert` (~146 tokens)

Save a Drop Radar alert

Save a Drop Radar search and get a signed webhook (event radar.match, header X-StableDomains-Signature = sha256 HMAC of the body with the returned secret) and/or email (double opt-in) when new names match or a pending-delete name drops. Free: 3 alerts per IP, 25 with an API key, max 20 events per alert per day. filters takes the same fields as drop_radar.

Input parameters:

- `email` (string)
- `filters` (object, required): same fields as drop_radar (preset, tlds, keywords, max_len, min_quality, ...)
- `name` (string)
- `webhook_url` (string)

### `suggest_domains` (~125 tokens)

Suggest available domains

Free. Pass domain (e.g. a taken name like agent.com) to get close AVAILABLE alternatives (other extensions, get/try/hq/app variants), live-checked and ranked by price. Or pass idea to generate brandable names for a product idea. Returns only names available right now with USD price and checkout_url.

Input parameters:

- `domain` (string): a (taken) domain to find alternatives for
- `idea` (string): plain-words idea, e.g. ai bookkeeping for plumbers
- `max_price` (number)
- `tlds` (array)

### `estimate_domain_value` (~48 tokens)

Estimate domain value

Heuristic USD value estimate for any domain (length, TLD, dictionary words, brandability, Wayback age, backlinks) with factor breakdown and availability.

Input parameters:

- `domain` (string, required)

### `whois_lookup` (~44 tokens)

WHOIS / RDAP lookup

RDAP (modern WHOIS) lookup for any domain: registrar, created/expires dates, status codes, nameservers, DNSSEC.

Input parameters:

- `domain` (string, required)

### `dns_email_check` (~70 tokens)

DNS and email security check

DNS + email security audit via DNS-over-HTTPS: A/AAAA/MX/NS/CAA, SPF, DKIM (common or given selectors), DMARC policy, grade A-F and concrete fixes.

Input parameters:

- `dkim_selectors` (string): comma-separated
- `domain` (string, required)

### `is_domain_dropping` (~54 tokens)

Check if a domain is dropping

Is an expired domain about to become available? Returns lifecycle (grace, redemption, pending delete, available, registered), estimated drop date and backlink data if in our drop feed.

Input parameters:

- `domain` (string, required)

### `watch_domain` (~84 tokens)

Watch a domain for drops

Get notified when an expiring domain changes status or drops (becomes registrable). Pass webhook_url (active immediately, POSTs JSON events domain.status_changed / domain.available with a ready order_api body) and/or email (double opt-in). Free.

Input parameters:

- `domain` (string, required)
- `email` (string)
- `webhook_url` (string): public https URL

### `set_url_forward` (~108 tokens)

Set URL forwarding

FREE 301 URL forwarding for a domain you registered with us: forward the whole domain (subdomain '@', also covers www) or a subdomain to any https URL. Points DNS at our redirect service. preserve_path keeps /path?query.

Input parameters:

- `code` (integer)
- `domain` (string, required)
- `preserve_path` (boolean)
- `subdomain` (string): @ (default) or e.g. blog
- `target` (string, required): https://destination

### `list_url_forwards` (~26 tokens)

List URL forwards

URL forwards configured on a domain you own.

Input parameters:

- `domain` (string, required)

### `apply_dns_template` (~96 tokens)

Apply a DNS template

FREE one-call DNS setup for a domain you own. template: vercel | netlify (params.site) | github-pages (params.user) | google-workspace | microsoft-365 | zoho-mail (params.region: com|eu|in|com.au). Replaces only the conflicting web or MX/SPF records.

Input parameters:

- `domain` (string, required)
- `params` (object)
- `template` (string, required)

### `get_dns` (~37 tokens)

Get DNS records

Nameservers and DNS records (A/AAAA/CNAME/MX/TXT) of a domain you own.

Input parameters:

- `domain` (string, required)

### `set_dns` (~161 tokens)

Set DNS records / nameservers

Set DNS records and/or nameservers of a domain you own. records: [{type: A|AAAA|CNAME|MX|TXT|NS (SRV/CAA/ALIAS not supported on hosted DNS: use custom nameservers), name: '@'|sub, value, ttl?, priority? (MX)}]. mode 'replace' (default) replaces the FULL record set; mode 'merge' adds/updates the given records, deletes any in remove [{type,name,value?}], and keeps everything else (safer for adding MX/TXT next to a website).

Input parameters:

- `domain` (string, required)
- `mode` (string)
- `nameservers` (array)
- `records` (array)
- `remove` (array)

### `renew_domain` (~155 tokens)

Renew a domain

Renew a domain you own. Returns USDC payment requirements (402), or pay_with=balance to renew instantly from prepaid balance. dry_run=true previews quote, new expiry and blockers without charging.

Input parameters:

- `chain` (string): payment network (default base). hyperevm = HyperEVM (chain 999, USDC/USDT0), bsc = BNB Chain (56, 18-decimal USDC/USDT)
- `domain` (string, required)
- `dry_run` (boolean): preview only, nothing charged
- `idempotency_key` (string)
- `pay_with` (string)
- `token` (string): stablecoin (default USDC)
- `years` (integer)

### `set_notification_webhook` (~101 tokens)

Set notification webhook

Signed account webhook (returns secret). Events: domain.registered, domain.registration_pending, domain.registration_completed, domain.transfer_started, domain.transfer_completed, domain.renewed, domain.expiring, dns.changed. Verify X-StableDomains-Signature = sha256 HMAC of the raw body with the secret; retries for 24h, dedupe on X-StableDomains-Delivery. null to remove.

Input parameters:

- `webhook_url` (string|null, required)

### `transfer_domain` (~159 tokens)

Transfer a domain in

Transfer a domain in from another registrar using its auth/EPP code; paid in USDC (adds 1 year). Unlock it at the current registrar first. Completes in ~5-7 days.

Input parameters:

- `auth_code` (string, required)
- `chain` (string): payment network (default base). hyperevm = HyperEVM (chain 999, USDC/USDT0), bsc = BNB Chain (56, 18-decimal USDC/USDT)
- `domain` (string, required)
- `idempotency_key` (string)
- `pay_with` (string)
- `ref` (string)
- `token` (string): stablecoin (default USDC)
- `years` (integer)

### `create_cart` (~161 tokens)

Create a multi-domain cart

Register up to 20 available domains with ONE payment (exact total in the 402). Returns a price-locked quote, checkout_url for a human to pay, and is idempotent via idempotency_key. After payment each is registered; any failure is refunded to prepaid balance.

Input parameters:

- `chain` (string): payment network (default base). hyperevm = HyperEVM (chain 999, USDC/USDT0), bsc = BNB Chain (56, 18-decimal USDC/USDT)
- `domains` (array, required)
- `idempotency_key` (string)
- `nameservers` (array)
- `ref` (string)
- `token` (string): stablecoin (default USDC)

### `get_referral_link` (~63 tokens)

Get referral link

Your referral code and shareable link (?ref=<code>, 30-day attribution). Referrers earn 10% of our margin on paid orders by people/agents they refer; agents pass ref=<code> on create_order, create_cart or transfer_domain.

### `get_referral_stats` (~61 tokens)

Get referral stats

Referral dashboard: clicks, referred users, sales, earned / unpaid / pending / paid USD, recent sales and payouts. Payouts are USDC on Base, batched weekly (min $5, capped, admin-approved) to your payout address.

### `set_payout_address` (~36 tokens)

Set referral payout address

Set the Base USDC address that receives your weekly referral payouts (null to clear).

Input parameters:

- `payout_address` (string|null, required)

### `set_auto_renew` (~125 tokens)

Set auto-renew / fund renewal vault

Turn auto-renew on/off for a domain you own and/or fund its renewal balance (vault). deposit_usd moves USDC from your prepaid balance (topup_balance) into the domain's vault; withdraw_usd moves it back. The daily job renews 1 year when ≤30 days from expiry if the vault covers the price, otherwise emails reminders at 30/14/7/1 days.

Input parameters:

- `deposit_usd` (number)
- `domain` (string, required)
- `enabled` (boolean)
- `withdraw_usd` (number)

### `get_renewal_balance` (~61 tokens)

Get renewal balance

Auto-renew vault for a domain: renewal balance, 1-year renewal price, whether it is covered, shortfall, days to expiry and ledger. Omit domain to list all your domains' renewal balances.

Input parameters:

- `domain` (string)

### `search_agents` (~71 tokens)

Search agent directory

Search the StableDomains.net agent directory (approved AI agents and MCP servers) by keyword or capability. Returns name, description, url, endpoint_url, mcp_url, capabilities, payment_methods and profile_url.

Input parameters:

- `capability` (string)
- `limit` (integer)
- `q` (string)

### `get_agent` (~23 tokens)

Get agent profile

Get one agent directory profile by slug.

Input parameters:

- `slug` (string, required)

### `list_my_agent` (~45 tokens)

List my agent profiles

Agent profiles you submitted (any status: pending, approved, rejected) with review notes. Submit a new one with POST /api/v1/agents (auth required, moderated).

### `list_domains` (~22 tokens)

List my domains

List the domains owned by the caller, with expiry dates and status.

### `contact_support` (~129 tokens)

Contact support

Open a support ticket with a person at StableDomains (order, payment, DNS, transfer, account or abuse issues). Pass the order_id or its SD- ref if there is one. A person replies by email to the given address; the response is a ticket ref (T-XXXXXX). Do not include secrets, API keys or wallet keys in the message.

Input parameters:

- `email` (string, required): address the reply goes to
- `message` (string, required): 10-4000 chars
- `order` (string): order id or SD- ref (optional)
- `topic` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/net-stabledomains-registrar/api-mcp#diagnostics

## Score history

- 2026-11-05: 65
- 2026-11-04: 64
- 2026-11-03: 64
- 2026-11-02: 63
- 2026-11-01: 63
- 2026-10-31: 62
- 2026-10-30: 62
- 2026-10-29: 61
- 2026-10-28: 61

## Common questions

### What is the StableDomains MCP server?

StableDomains is an MCP server listed in the public MCP registry as net.stabledomains/registrar. USDC/USDT domain registrar on 7 chains, card checkout for people, expiring drops, WHOIS/DNS tools. This page covers its hosted endpoint (https://stabledomains.net/api/mcp).

### Is the StableDomains MCP server safe to use?

StableDomains scores 65 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the StableDomains MCP server expose?

StableDomains exposes 38 tools: search_domains, search_aftermarket, agent_signup, quote_domain, create_order, and 33 more. Their descriptions and schemas cost roughly 3,812 tokens of context every time the server is loaded.

### Does the StableDomains MCP server require authentication?

No. We connected to StableDomains without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the StableDomains MCP server still maintained?

StableDomains is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://stabledomains.net/api/mcp
- Website: https://stabledomains.net/
- Changelog RSS feed: https://verifymcp.io/servers/net-stabledomains-registrar/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/net-stabledomains-registrar/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/net-stabledomains-registrar/api-mcp
