loading…
Search for a command to run...
loading…
Enables checking domain availability, WHOIS lookup, domain registration, and bio syncing through the Headless Domains API.
Enables checking domain availability, WHOIS lookup, domain registration, and bio syncing through the Headless Domains API.
Official Model Context Protocol (MCP) server for Headless Domains. This server exposes Headless Domains API operations to MCP-compatible clients such as Claude Desktop, Cursor, and Windsurf.
search_domain: check whether a domain is availablelookup_whois: inspect a registered identityregister_domain: register a domain with an API keysync_bio: sync agent/profile bio content with an API keystdio for local MCP clientssse when PORT is present for hosted deploymentspython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
| Variable | Required | Default | Purpose |
|---|---|---|---|
HEADLESSDOMAINS_API_KEY |
No | unset | Sends X-API-Key for authenticated endpoints |
HEADLESSDOMAINS_API_BASE_URL |
No | https://headlessdomains.com/api/v1 |
Overrides the API base URL |
HEADLESSDOMAINS_TIMEOUT |
No | 20 |
HTTP timeout in seconds |
HEADLESSDOMAINS_REGISTER_PATH |
No | /domains/register |
Override register endpoint path if the API changes |
HEADLESSDOMAINS_SYNC_BIO_PATH |
No | /domains/{domain}/bio |
Override sync-bio endpoint path if the API changes |
MCP_TRANSPORT |
No | auto | Force a transport such as stdio or sse |
HOST |
No | 0.0.0.0 |
Bind host for SSE mode |
PORT |
No | unset | When present, starts the server in sse mode |
For a local MCP client, the server uses stdio by default:
python server.py
You can also run it through the MCP CLI:
mcp run server.py
Add a server entry to claude_desktop_config.json:
{
"mcpServers": {
"headlessdomains": {
"command": "mcp",
"args": [
"run",
"/absolute/path/to/headlessdomains-mcp/server.py"
],
"env": {
"HEADLESSDOMAINS_API_KEY": "your-api-key-here"
}
}
}
}
If you do not need authenticated tools yet, you can omit HEADLESSDOMAINS_API_KEY.
When PORT is present, server.py starts an SSE transport automatically:
PORT=8080 python server.py
Typical Railway-style launch:
HOST=0.0.0.0 PORT=8080 python server.py
register_domainHEADLESSDOMAINS_API_KEYdomain, namespace, years, agreed_to_terms (true), and payment_method ("gems")extra_payload_json for API fields not hard-coded into the toolExample:
{
"domain": "myagent.agent",
"years": 1,
"extra_payload_json": "{\"owner_email\":\"[email protected]\"}"
}
sync_bioHEADLESSDOMAINS_API_KEY/domains/<domain>/bio endpointdomain, bio, and bio_markdownextra_payload_json for any additional API fields (like name, x, github, etc.)Example:
{
"domain": "myagent.agent",
"bio_markdown": "# About Me",
"extra_payload_json": "{\"name\":\"My Agent Name\", \"x\":\"twitter_handle\"}"
}
Build:
docker build -t headlessdomains-mcp .
Run:
docker run --rm -p 8080:8080 \
-e PORT=8080 \
-e HEADLESSDOMAINS_API_KEY=your-api-key-here \
headlessdomains-mcp
After installing dependencies:
python -m py_compile server.py
python - <<'PY'
import server
print(server.search_domain("example.agent"))
print(server.lookup_whois("test.agent"))
PY
/temp-specs is ignored in .gitignore so local planning docs stay out of version control.Run in your terminal:
claude mcp add headless-domains-mcp-server -- npx Yes, Headless Domains Server MCP is free — one-click install via Unyly at no cost.
No, Headless Domains Server runs without API keys or environment variables.
Self-hosted: the server runs locally on your machine via the install command above.
Open Headless Domains Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
CSA PROJECT - FZCO © 2026 IFZA Business Park, DDP, Premises Number 31174 - 001
Security
Low riskAutomated heuristic from public metadata — not a security guarantee.