tldx checks and registers domains from your terminal or from inside Claude, Cursor and any other MCP client, using the Spaceship registrar API. Nothing is bought until you say yes.
npx tldx check example.com
$ npx tldx check google.com ❌ taken $ npx tldx check pickaname.dev ✅ available $ npx tldx register pickaname.dev --years 2 🛒 not registered yet: pickaname.dev for 2 years, contacts copied from mybrand.com Re-run with --yes to buy it. $ npx tldx register pickaname.dev --years 2 --yes ✅ registered for 2 years $
Use whichever fits where you work. All three call the same Spaceship API and give the same answers.
tldx check and tldx register. Add --json for scripts. Exit codes tell you the result, so it works in shell pipelines.
check and register tools for Claude, Cursor and other MCP clients. Results come back as text and as structured JSON.
A SKILL.md that tells your agent how to check and register domains. It uses the MCP tools if they're connected, falls back to the CLI, and asks before buying.
Registering a domain spends real money, so tldx shows you a preview first and only buys after you confirm.
Without --yes (CLI) or confirm: true (MCP), register only shows what it would buy: the domain, the number of years and which contacts it will use.
Run it again with confirmation and tldx registers the domain for 1 to 10 years. It's charged to your Spaceship balance or saved payment method.
You get registered, or pending with an operation ID if Spaceship takes longer than 60 seconds to finish.
You need Node 18+ and a Spaceship API key from the Spaceship API Manager. Checking needs the domains:read permission. To register domains, also add domains:billing and asyncoperations:read.
claude mcp add tldx -e SPACESHIP_API_KEY=xxx -e SPACESHIP_API_SECRET=yyy -- npx -y tldx
{
"mcpServers": {
"tldx": {
"command": "npx",
"args": ["-y", "tldx"],
"env": {
"SPACESHIP_API_KEY": "xxx",
"SPACESHIP_API_SECRET": "yyy"
}
}
}
}
Put this in claude_desktop_config.json, .cursor/mcp.json or your client's MCP config file.
export SPACESHIP_API_KEY=xxx export SPACESHIP_API_SECRET=yyy npx tldx check example.com # or just: npx tldx example.com npx tldx check example.com --json npx tldx register example.com --years 2 # preview npx tldx register example.com --years 2 --yes # buy
check exits with 0 available · 2 taken · 1 invalid or error.register exits with 0 registered · 3 not confirmed or pending · 2 taken · 1 invalid or error.
Errors go to stderr.
mkdir -p ~/.claude/skills/tldx cp skills/tldx/SKILL.md ~/.claude/skills/tldx/
The skill ships in the package at skills/tldx/SKILL.md. For one project only, put it in .claude/skills/.
Each MCP tool returns a short text result plus structured content. The CLI's --json flag prints the same object.
check { "domain": "example.com" }| Text | Structured content |
|---|---|
| ✅ available | { "domain": "pickaname.dev", "valid": true, "available": true } |
| ❌ taken | { "domain": "google.com", "valid": true, "available": false } |
| ⚠️ invalid | { "domain": "notadomain", "valid": false, "available": false } |
register { "domain": "example.com", "years": 1, "confirm": true }| Text | status |
|---|---|
| 🛒 not registered yet: pickaname.dev for 1 year, contacts copied from mybrand.com | unconfirmed |
| ✅ registered for 1 year | registered |
| ⏳ pending (operation …) | pending |
| ❌ taken | taken |
| ⚠️ invalid | invalid |
Structured content: { domain, status, years?, contactsFrom?, operationId? }. years is 1–10 and defaults to 1.
https://, www. and paths are stripped before the check.café.fr work, and results always show the readable form.isError: true, so they're never mistaken for "taken".