# Domainee Mcp Server

> Custom domains API for SaaS as MCP tools. Connect domains, SSL, DNS from any MCP client. 50 domains free.

- **Type:** MCP server
- **Install:** `agentstack add mcp-commonninja-domainee-mcp-server`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [CommonNinja](https://agentstack.voostack.com/s/commonninja)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [CommonNinja](https://github.com/CommonNinja)
- **Source:** https://github.com/CommonNinja/domainee-mcp-server
- **Website:** https://domainee.dev/mcp

## Install

```sh
agentstack add mcp-commonninja-domainee-mcp-server
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Domainee MCP Server

> Custom domains API for SaaS, exposed as Model Context Protocol tools. Connect,
> verify, and manage **your customers'** domains, SSL, and DNS from any MCP client.
> 50 domains free.

[](https://registry.modelcontextprotocol.io)
[](https://glama.ai/mcp/connectors/dev.domainee/domainee)
[](https://smithery.ai/server/admin-cl6n/domainee)
[](https://domainee.dev/mcp)
[](LICENSE)

Domainee is a custom domains API for SaaS with a native MCP server — 50 domains and
100 GB free. This is the hosted, stateless [Model Context Protocol](https://modelcontextprotocol.io)
server that lets AI agents (Claude, Cursor, Windsurf, and any MCP-aware client) drive
the Domainee API directly: onboard a customer's hostname and get back the CNAME target,
force DNS and SSL probes, debug "my domain isn't working" tickets, and manage webhook
endpoints. Same Bearer key, rate limits, and workspace as the REST API. Nothing to deploy.

## This is not a registrar MCP server

Most domain MCP servers wrap a registrar's API so an agent can manage **domains you
own** — search, buy, renew, edit nameservers at GoDaddy / Namecheap / Dynadot / NameSilo.

Domainee solves the other problem: letting **your customers point their own domains at
your app**. You're a SaaS, your customer owns `shop.acme.com`, and you need it serving
their storefront over HTTPS in a minute without them touching your infrastructure. That
means custom-hostname routing, automatic certificate issuance and renewal, DNS
verification, and a webhook when it goes live — the "Cloudflare for SaaS" shape, not the
registrar shape.

If you want an agent to buy you a domain, use a registrar server. If you want an agent
to onboard a customer's domain into your product, this is the one.

## Endpoint

```
https://mcp.domainee.dev/mcp
```

Remote, streamable HTTP, stateless. No install, no local process, nothing to deploy.

**Auth is optional for discovery.** `initialize`, `tools/list`, and all 16 free
diagnostic tools answer anonymously. A Domainee API key (`sk_live_…`, minted at
) unlocks the 11 workspace tools; calling one without a
key returns `401` plus a `WWW-Authenticate` header pointing at our OAuth metadata, which
is what starts the OAuth flow in MCP clients. OAuth is also supported end to end
(RFC 9728 protected-resource metadata + RFC 8414 authorization-server metadata).

## Install

Claude Code / CLI:

```bash
claude mcp add --transport http domainee https://mcp.domainee.dev/mcp \
  --header "Authorization: Bearer sk_live_YOUR_KEY"
```

Claude Desktop / Cursor / Windsurf (any HTTP-transport client):

```json
{
  "mcpServers": {
    "domainee": {
      "url": "https://mcp.domainee.dev/mcp",
      "headers": { "Authorization": "Bearer sk_live_YOUR_KEY" }
    }
  }
}
```

Try it with no key at all — this returns the 16 free tools as a `text/event-stream`
response:

```bash
curl -s https://mcp.domainee.dev/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
  | grep '^data: ' | sed 's/^data: //' | jq '.result.tools | length'
# 16
```

## Tools

27 tools in two tiers. The **16 free diagnostic tools need no key**; the **11 workspace
tools require a Bearer** and are only registered when a token is present, so an
unauthenticated `tools/list` returns 16 and an authenticated one returns 27.

### Workspace tools (11 — Bearer API key required)

| Tool | What it does | Key arguments |
|---|---|---|
| `list_domains` | List custom domains in the workspace. Cursor-paginated. | `status` (`pending`/`verified`/`failed`/`expired`), `hostname` (exact match), `limit`, `cursor` |
| `get_domain` | Full Domain object: hostname, originUrl, status, monitorStatus, dnsRecords. | `id` |
| `create_domain` | Register a customer hostname for proxy or redirect through the edge. Returns preflight warnings (CAA, unreachable origin). | `hostname`, `originUrl`, `mode` (`proxy`/`redirect`), `keepHost`, `redirectWww`, `redirectStatus`, `metadata` |
| `update_domain` | Edit a domain. Hostname is immutable — delete and recreate to change it. | `id` + any of `originUrl`, `mode`, `keepHost`, `redirectWww`, `redirectStatus`, `metadata` |
| `delete_domain` | Stop routing a hostname; the edge stops serving within ~60s. | `id` |
| `check_domain` | Force an immediate DNS/SSL probe instead of waiting for the next monitor tick. Flips `pending` → `verified`. | `id` |
| `list_webhook_endpoints` | List webhook endpoints. Signing secrets are never included — they are revealed once, at create time. | — |
| `create_webhook_endpoint` | Register an HTTPS URL that Domainee POSTs domain events to. Returns the signing secret once. | `url`, `events[]` (empty = all) |
| `delete_webhook_endpoint` | Stop sending events; in-flight retries are dropped. | `id` |
| `dns_check_records_exist` | Per record, `match: true` if **at least one** DNS value equals the expected one. Tolerates extra records alongside the CNAME. Up to 50 per call. | `records[]` of `{ address, type, match_against }` |
| `dns_check_records_match_exactly` | Stricter: `match: true` only if **every** returned value matches. Use when the customer must point only at you. | `records[]` |

`type` accepts `a`, `aaaa`, `cname`, `mx`, `txt`, `ns`, `caa`. Comparison is
case-insensitive and trailing dots are stripped. Webhook events are
`domain.created`, `domain.verified`, `domain.failed`, `domain.expired`,
`domain.deleted`, `domain.monitor_updated`.

### Free diagnostic tools (16 — no key, no signup)

Read-only SSL / DNS / WHOIS lookups, usable by any agent against any domain:

`tools_ssl_check`, `tools_dns_record_lookup`, `tools_whois_lookup`,
`tools_cname_lookup`, `tools_http_header_checker`, `tools_dns_propagation_checker`,
`tools_redirect_checker`, `tools_spf_record_checker`, `tools_dkim_record_checker`,
`tools_dmarc_record_checker`, `tools_txt_record_lookup`, `tools_domain_age_checker`,
`tools_domain_availability_checker`, `tools_subdomain_finder`,
`tools_reverse_ip_lookup`, `tools_website_status_checker`.

The same 16 are available as keyless REST endpoints at
`https://api.domainee.dev/v1/tools/` — see .

## What agents do with it

**Onboard a customer domain.** "Connect `shop.acme.com` to `https://acme.myapp.com`."
The agent calls `create_domain`, reads the returned CNAME target out of `dnsRecords`,
and tells the customer exactly what to publish. Once they say they've done it, it calls
`check_domain` to verify immediately rather than waiting for the monitor.

**Debug a broken domain.** "Why is `shop.acme.com` showing a certificate error?" The
agent calls `get_domain` for our view of the status, then `tools_cname_lookup` and
`tools_ssl_check` for ground truth from public DNS, and can tell the difference between
"the customer never published the record", "it's published but not propagated yet", and
"there's a CAA record blocking issuance".

**Audit the fleet.** "Which customer domains are failing?" — `list_domains` with
`status: "failed"`, then `dns_check_records_exist` across the results in one batched
call of up to 50 records.

## Pricing

Free tier: 50 custom domains + 100 GB bandwidth/month, no credit card. Usage pricing
beyond that at . The 16 diagnostic tools are free and
keyless regardless.

## Listings

- MCP Registry — `dev.domainee/domainee` on 
- Glama — 
- Smithery — 
- Claude connector directory — listed as a community connector; find it in Claude under
  Settings → Connectors

## Links

- Product: 
- MCP docs:  · 
- API docs: 
- Free keyless APIs: 
- For agents:  · 

## About this repo

Discovery and documentation only — the server is hosted, so there is nothing to clone
or run. It holds the `server.json` that the MCP Registry reads and this README. The
implementation lives in the Domainee monorepo.

Issues and questions are welcome here.

## License

MIT — see [LICENSE](LICENSE).

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [CommonNinja](https://github.com/CommonNinja)
- **Source:** [CommonNinja/domainee-mcp-server](https://github.com/CommonNinja/domainee-mcp-server)
- **License:** MIT
- **Homepage:** https://domainee.dev/mcp

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-commonninja-domainee-mcp-server
- Seller: https://agentstack.voostack.com/s/commonninja
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
