MCP server (use Domainee from AI tools)
Connect Claude Desktop, Cursor, or any MCP client to manage your domains in natural language.
Domainee ships a Model Context Protocol
server at https://mcp.domainee.dev/mcp. Once you wire it into your AI
client, prompts like "list my failing domains and tell me which DNS
records are wrong" or "redirect shop.acme.com to https://acme-store.fly.dev"
just work — the model calls the same REST API as your code, scoped to
the same workspace as your API key.
Setup
You need:
- An API key from the Developers page
(
sk_live_…). - An MCP-aware client: Claude Desktop, Cursor, Cline, etc.
Claude Desktop / Cursor
Add to your claude_desktop_config.json (Claude Desktop) or
mcp.json (Cursor):
{
"mcpServers": {
"domainee": {
"url": "https://mcp.domainee.dev/mcp",
"headers": {
"Authorization": "Bearer sk_live_..."
}
}
}
}
Restart the app. Domainee's tools should appear in the MCP tools list, ready to call.
From a script (raw JSON-RPC)
Each tool call is a single HTTP POST. Useful for automation:
curl https://mcp.domainee.dev/mcp \
-H "Authorization: Bearer $DOMAINEE_API_KEY" \
-H "content-type: application/json" \
-H "accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_domains",
"arguments": { "status": "verified" }
}
}'
What the model can do
Eleven tools across three resource groups, all backed by the same REST API documented under API Reference.
Domains
| Tool | What it does |
|---|---|
list_domains | Paginated list with optional status filter |
get_domain | Fetch a single domain by id |
create_domain | Register a new customer hostname |
update_domain | Change originUrl / mode / redirect flags |
delete_domain | Stop routing a hostname |
check_domain | Force an immediate DNS / SSL probe |
Webhook endpoints
| Tool | What it does |
|---|---|
list_webhook_endpoints | List endpoints (secrets stripped) |
create_webhook_endpoint | Register a new HTTPS endpoint, returns the signing secret once |
delete_webhook_endpoint | Stop sending events to an endpoint |
DNS checks
| Tool | What it does |
|---|---|
dns_check_records_exist | "At least one DNS value matches" — for verifying customer CNAMEs |
dns_check_records_match_exactly | Stricter: every returned value must match (no extras) |
Things to try
- "List my domains and tell me which ones have monitor status
dns_incorrect." - "Create a domain
shop.acme.comproxying tohttps://acme-store.fly.devand turn on the www variant." - "For each pending domain, check its DNS and tell me whether the customer published the right CNAME."
- "Delete every domain whose hostname starts with
test-." - "Set up a webhook to
https://my-app.com/webhooks/domaineefor verification + failure events."
The model will pick the right tool, fill in the arguments, and surface the API response back to you — including any errors (e.g. 402 billing_required if the workspace doesn't have a payment method on file, 409 conflict if the hostname is already taken).
Auth model
Every MCP request includes your Authorization: Bearer sk_live_…
header. The MCP server forwards that token verbatim to
api.domainee.dev/v1/*. Auth, rate limits, and the billing gate run on
the API server — the MCP layer keeps no state.
That means:
- Your token = your access. Don't paste it into shared chat threads.
- Rate limits (60 req/min per key by default — see Errors → Rate limits) apply to MCP traffic the same way they apply to direct API calls.
- 402 / 429 / 401 errors surface in the AI client as tool failures, so the model can decide whether to retry, ask you to add a card, etc.
Limitations
- HTTP transport only. No stdio mode — the auth model is "pass a Bearer header per request", not "spawn a process per user".
- Tool results are stringified JSON. Long lists of domains expand
the model's context; if you hit context limits, ask it to filter
server-side (
status: "failed",limit: 20, etc.) instead of fetching everything and slicing client-side. - Read + write parity with the REST API. Anything the API doesn't expose (analytics, per-domain bandwidth) isn't available via MCP yet either. File a feature request if you need it.
Source
The MCP server source is part of the Domainee monorepo at
mcp-server/ —
each tool is a small file under src/tools/. PRs welcome if you want
to add a tool we don't expose yet.