---
name: stabledomains
description: Search, price and register domain names and pay in USDC/USDT (Base, Ethereum, Arbitrum, Polygon, HyperEVM, BNB Chain, Solana) or gasless via x402. Also expiring/just-dropped domain radar, drop feeds and alerts. Use when an agent needs to find, buy, renew or manage a domain, or watch domains that are dropping.
---

# StableDomains

Real domains. Paid in stablecoins. Bought by agents. ICANN domains, premium names and live drop alerts, paid in USDC or USDT on any major chain. Agents sign up, pay per call via x402, and register in one request. No card, no account forms. Site: https://stabledomains.net. Chains: Base, Ethereum, Arbitrum, Polygon, HyperEVM, BNB Chain, Solana (1 USDC/USDT = 1 USD). Free WHOIS privacy.

- MCP server: https://stabledomains.net/api/mcp (streamable HTTP, JSON-RPC)
- OpenAPI 3.1: https://stabledomains.net/api/openapi.json
- llms.txt: https://stabledomains.net/llms.txt (full: https://stabledomains.net/llms-full.txt)
- Human docs: https://stabledomains.net/docs

**Topic skills** (load only what you need):
- [Search and register a domain](https://stabledomains.net/skill_register.md)
- [Manage DNS](https://stabledomains.net/skill_dns.md)
- [Renew, auto-renew and transfer in](https://stabledomains.net/skill_renew.md)
- [Expiring and dropped domains](https://stabledomains.net/skill_drops.md)
- [Payments: USDC/USDT, x402, balance](https://stabledomains.net/skill_payments.md)
- [Name taken? Aftermarket alternatives](https://stabledomains.net/skill_aftermarket.md)

## 1. MCP setup

**Claude Code**
```
claude mcp add --transport http stabledomains https://stabledomains.net/api/mcp
```
**Claude (desktop / claude.ai):** Settings → Connectors → Add custom connector → URL `https://stabledomains.net/api/mcp`. Sign in with OAuth when asked (only needed for account tools).

**Cursor** (`~/.cursor/mcp.json` or `.cursor/mcp.json`):
```json
{ "mcpServers": { "stabledomains": { "url": "https://stabledomains.net/api/mcp" } } }
```
**ChatGPT:** Settings → Apps & Connectors → Advanced → enable Developer mode → Create connector → MCP server URL `https://stabledomains.net/api/mcp`, authentication OAuth.

**Any MCP client with an API key:** add header `Authorization: Bearer sd_live_…`.

Key tools: search_domains, quote_domain, create_order, pay_order, check_order, buy_with_balance, list_domains, get_dns, set_dns, renew_domain, transfer_domain, drop_radar, find_dropping_domains, radar_alert, watch_domain, is_domain_dropping. Search, quotes, tools and x402 payments need no auth.

## 2. REST quickstart: search → price → register → pay

```
GET  https://stabledomains.net/api/v1/search?q=myagent            # availability + price across TLDs (premium, renewal_price)
GET  https://stabledomains.net/api/v1/quote?domain=myagent.com&years=1
POST https://stabledomains.net/api/v1/orders
     Idempotency-Key: <unique>
     {"domain":"myagent.com","years":1,"chain":"base","token":"USDC"}
```
`POST /orders` answers **402** with the payment requirements: exact amount (a unique sub-cent suffix), `pay_to` address and token contract. Then either:

1. Send exactly that amount of USDC/USDT on the chosen chain, then `POST https://stabledomains.net/api/v1/orders/{id}/pay` with header `X-PAYMENT-TX: <tx hash>` (or just poll; payments are auto-detected), or
2. Gasless x402 (USDC on Base): retry with an `X-PAYMENT` header signed per the 402 body.

Poll `GET https://stabledomains.net/api/v1/orders/{id}` until `status` is `completed`. Chains: base, ethereum, arbitrum, polygon, hyperevm (USDT0), bsc (18 decimals), solana. Tokens: USDC, USDT.
Prepaid alternative: top up via `POST /api/v1/balance/topup`, then `POST /api/v1/orders {"pay_with":"balance",...}`.

Premium names: `premium: true` in search/quote; price = registry premium + 12%, `renewal_price` shows the premium renewal. Large premium orders may be refused before payment (clear error, nothing charged).

Manage owned domains (auth): `GET /api/v1/domains`, `PUT /api/v1/domains/{domain}/dns`, `POST /api/v1/domains/{domain}/renew`, `POST /api/v1/domains/{domain}/autorenew`, transfers via `POST /api/v1/transfers`.

### Name taken? Aftermarket alternatives
`GET /api/v1/aftermarket?q=cloud.com` (MCP `search_aftermarket`) returns affiliate links to Atom.com, an outside marketplace (not StableDomains; Atom handles payment and transfer). Tell the user it is a third-party marketplace.

### Showcase your project
- Showcase (opt-in, free): list your project on https://stabledomains.net/showcase. At order time pass showcase:true, showcase_title, showcase_description to POST /api/v1/orders or MCP create_order; later PUT /api/v1/domains/{domain}/showcase {title, description} to add or edit, DELETE to remove. Public list: GET /api/v1/showcase.

### Referrals: earn as an agent
The affiliate programme is open to agents (https://stabledomains.net/affiliates): 10% of our margin on paid orders you refer, paid weekly in USDC on Base ($5 minimum).
1. Get your code: MCP `get_referral_link` (or `GET /api/v1/referrals/link`, auth).
2. Set a payout address: MCP `set_payout_address {payout_address: "0x…"}` (or `PUT /api/v1/referrals/payout-address`).
3. Pass `"ref": "<code>"` on `create_order`, `create_cart` and `transfer_domain` (REST: /api/v1/orders, /cart, /transfers). Track with `get_referral_stats`.

## 3. x402 paid endpoints

No account; pay per call in USDC on Base. Call without payment to get a 402 with requirements, then retry with `X-PAYMENT`.
- `GET https://stabledomains.net/api/v1/availability/bulk?domains=a.com,b.ai`: availability + USDC price for up to 100 names ($0.10)
- `GET https://stabledomains.net/api/v1/valuation?domain=acme.ai`: valuation range, availability and register price ($0.02)
- `GET https://stabledomains.net/api/v1/alerts?domain=x.com&webhook_url=https://…`: drop alert for one domain, webhook or email, no account ($0.01)
- `GET https://stabledomains.net/api/v1/drops/full`: up to 500 expiring/dropped rows with all metrics ($0.01)
- `GET https://stabledomains.net/api/v1/radar/full`: up to 1000 radar rows with quality and all signals ($0.02)
- Domain orders themselves can also be paid via x402 (see above).

## 4. Drop radar and feeds (free)

- `GET https://stabledomains.net/api/v1/radar` (page https://stabledomains.net/radar, presets e.g. https://stabledomains.net/radar/short-brandable)
- `GET https://stabledomains.net/api/v1/drops` (page https://stabledomains.net/expiring)
- Params: sort=quality|value|price|length|drops|new|brand|backlinks|domain, order=asc|desc, tld, status, min_quality, max_price, min_len, max_len, drops_within_days, available_only=1, limit, cursor (use `next_cursor`).
- Feeds: https://stabledomains.net/radar/feed.json (JSON Feed), https://stabledomains.net/radar/rss.xml (RSS) for any filter.
- Alerts: `POST https://stabledomains.net/api/v1/radar/alerts {filters, webhook_url?|email?}`; per-domain: `POST https://stabledomains.net/api/v1/watch {domain, webhook_url?, email?}`.
- Lifecycle check: `GET https://stabledomains.net/api/v1/tools/dropping?domain=example.com`.

## 5. Auth

Instant agent signup (no form): `curl -X POST https://stabledomains.net/api/v1/agents/signup` → `{api_key}` (MCP `agent_signup`). Guest tier, 30 req/min, until claimed: email via `POST /api/v1/auth/email-start {email}` with the key as Bearer (a human clicks the link), or wallet via SIWE `POST /api/v1/auth/verify {message,signature,claim:true}` with the key as Bearer.


- None: search, quotes, tools, feeds, keyless orders (402 / x402).
- API key: `Authorization: Bearer sd_live_…`. Create one in the dashboard (https://stabledomains.net/dashboard), via `POST /api/v1/keys`, or by signing in with a wallet (SIWE: `POST /api/v1/auth/verify` with `issue_api_key: true`).
- OAuth 2.1 (MCP connectors): authorization code + PKCE, dynamic client registration. Metadata: https://stabledomains.net/.well-known/oauth-authorization-server and https://stabledomains.net/.well-known/oauth-protected-resource.

## Quotas and limits

- GET /api/v1/search, /api/v1/quote: 60/min per IP anonymous; per API key: the key's limit (default 600/min, guest-tier signup keys 30/min)
- POST /api/v1/orders: min(key limit, 60)/min per key or account
- POST /api/v1/cart: 10/min per key or account
- POST /api/v1/transfers: 10/min per key or account
- /api/v1/suggest (free tier): 10/min per IP, 24 checks, top 10 results
- /api/v1/radar (free): 30/min per IP
- /api/v1/drops (free): 30/min per IP
- POST /api/v1/radar/alerts, /api/v1/watch: 10/min per IP
- /api/v1/aftermarket: 60/min per IP
- /api/v1/agents (registry read): 120/min per IP; submissions 5/hour per account
- POST /api/v1/agents/signup: 3/hour and 10/day per IP
- POST /api/v1/auth/guest: 10/min per IP
- GET /api/v1/auth/nonce (SIWE): 30/min per IP
- POST /api/v1/auth/email-start: 5 per 10 min per IP, 3 per 10 min per email address
- OAuth dynamic client registration: 30 per 10 min per IP
- API keys: max 10 active per account
- x402 paid endpoints: no rate limit beyond payment; each call is paid
- Exceeding a limit returns 429 with error.code rate_limited and details.retry_after_seconds; responses carry X-RateLimit-Limit / -Remaining / -Reset.

## Errors

JSON `{error:{code,message,...}}`. Common codes: invalid_request, domain_taken, availability_unknown, payment_required (402), checkout_unavailable, rate_limited (429). Always send `Idempotency-Key` on POST /orders; retries with the same key return the same order.
