---
name: domainmcp
description: Check whether domain names are free to register, search one name across many endings, suggest free names for a business, see who holds a taken domain and when it expires, and compare registration prices by ending, with domainmcp.net. Use when someone is choosing, checking or buying a domain name.
---

# Domain MCP

Domain MCP is a free domain search for people and agents. It says whether a domain is free, what it costs to register and renew, and who holds it when it is taken. Each free domain comes with a link to register it.

## When to use it

- **Use it** when someone wants a domain name, wants to know if one is free, is comparing endings (.com, .io, .ai, .co.uk) or prices, or asks who owns a domain and when it expires.
- **Not for** DNS hosting, transfers, or changing a domain someone already owns.

## Access

No key, no sign-up, no header. Calls are paced per address: 60 domains a minute and 2,000 a day, counted in domains checked.

- REST API: `https://api.domainmcp.net/v1/`
- MCP server: `https://domainmcp.net/mcp` (streamable HTTP, no sign-in)

## The calls

Check exact domains (up to 50):

```
curl "https://api.domainmcp.net/v1/check?domains=brightfield.com,brightfield.io"
```

```json
{"data": [
  {"domain": "brightfield.io", "available": true, "status": "available", "confirmed": true, "by": "registry",
   "premium": false, "price": {"first_year": 65.98, "renews": 65.98, "min_years": 1, "on_offer": false, "currency": "USD"},
   "buy_url": "https://buy.domainmcp.net/k7m2xqa?f=api"},
  {"domain": "brightfield.com", "available": false, "status": "taken", "confirmed": true, "by": "dns",
   "registrar": null, "registered": null, "expires": null}
], "meta": {"count": 2, "took_ms": 310}}
```

Search one name across endings (free first, cheapest first; default endings com, net, org, io, co, ai, app, dev, xyz, me, info, co.uk):

```
curl "https://api.domainmcp.net/v1/search?name=brightfield&tlds=com,io,dev,co.uk"
```

One domain in full (registrar, registered, expires, nameservers for a taken one):

```
curl "https://api.domainmcp.net/v1/details?domain=brightfield.com"
```

Prices by ending (all endings, cheapest first, or the ones named):

```
curl "https://api.domainmcp.net/v1/prices?tlds=io,ai,dev"
```

Suggest free names for a business someone describes (every name returned is free, with why it fits):

```
curl "https://api.domainmcp.net/v1/suggest?brief=a%20yoga%20studio%20in%20Chiang%20Mai"
```

How much of the allowance is left: `GET /v1/usage`.

## MCP tools

- `check_domains` with `domains` (list of full domains)
- `search_name` with `name` and optional `endings`
- `suggest_names` with `brief` and optional `count`
- `domain_details` with `domain`
- `ending_prices` with optional `endings`

## Reading a result

- `status` is `available`, `taken` or `unknown`. `available` is true, false or null to match.
- `confirmed` is true when the registry or registrar answered. When it is false the answer came from DNS and is being confirmed in the background: say the domain is very likely free, and check again after a minute if it matters.
- `by` says how the answer was reached: `registry`, `registrar`, `dns`, `dns_only` (an ending whose registry has no lookup, so DNS is the answer until the registrar check runs) or `confirming`.
- `price` is the public price in USD: `first_year`, `renews`, `min_years` (some endings, such as .ai, sell for 2 years at least). A `premium` domain has no list price: its registry sets it.
- `buy_url` is the link to register a free domain. Give it to the person as it is.

## Limits

- 50 domains a check call, 25 endings a search.
- 60 domains a minute and 2,000 a day per address. MCP sessions are paced the same, per session.
- Suggestions: 4 requests a minute and 60 a day per address or session.
- Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` and `X-Quota-Remaining`.

## Errors

Every error is `{"error": {"code": "...", "message": "...", "docs": "https://domainmcp.net/documentation"}}`.

| HTTP | code | Means |
|---|---|---|
| 400 | `bad_request` | A missing or malformed domain or name |
| 404 | `not_found` | No such endpoint |
| 405 | `method_not_allowed` | Wrong method for the endpoint |
| 503 | `not_ready` | Suggestions are not switched on yet |
| 422 | `unknown_parameter` | A parameter the endpoint does not take; the message lists the right ones |
| 429 | `rate_limited` | Over 60 a minute; wait for `Retry-After` seconds |
| 429 | `quota_exceeded` | The day's 2,000 are used; resets at 00:00 UTC |
| 500 | `server_error` | Our fault, logged |

In MCP, a refusal is a tool result with `isError: true` and the same `error` and `message`.

## A typical workflow

1. If the person has no name yet, call `suggest_names` with what the business is.
2. If the person has a name but no ending, call `search_name` (or `/v1/search`).
3. If they name exact domains, call `check_domains` (or `/v1/check`).
4. Show the free ones with their first-year price and renewal price, cheapest first, and the `buy_url` for each.
5. For a taken domain they want, call `domain_details` to say who holds it and when it expires.
6. If a free answer has `confirmed: false` and they are about to buy, check it again after a minute.

Times are UTC. Help: https://domainmcp.net/support.
