whydot

Three surfaces, one contract.

The API is the product. The CLI and the MCP server are generated from the same route table, so every operation exists on all three or on none of them — this page is generated from it too.

curl -fsSL https://whydot.com/install.sh | sh then whydot login. The service describes itself at api.whydot.com/v1/openapi.json.

Authentication

One bearer token, issued by whydot login and stored by the CLI. It is shown once and never retrievable afterwards. There is no password and no web login form.

Authorization: Bearer wd_… Keys carry scopes, so a key that only reads cannot spend.

Spending money is explicit

Every call that can spend requires an idempotency key you choose. Send the same key twice and you get the first answer back, not a second domain and a second charge. The registrar's own API accepts no such token, so this is the only thing standing between a retry and a double purchase — which is why it is required rather than optional.

POST /v1/domains/:id/register with idempotencyKey. A 402 means the balance is short; top up and send the same key again.

Operations

RouteWhat it doesScope
POST /v1/tenants Create an account and its first API key. writes any key
GET /v1/keys List the API keys on this account, by prefix. keys:manage
POST /v1/keys Issue a new API key. writes keys:manage
DELETE /v1/keys/:id Revoke an API key immediately. writes keys:manage
GET /v1/domains List the domains in this account. domains:read
GET /v1/domains/:id Fetch one domain by id or by name. domains:read
POST /v1/domains Track a domain in this account. Spends nothing; registration is a separate call. writes domains:write
POST /v1/registrant-contacts Create a registrant contact for this account. writes domains:write
GET /v1/availability Is a domain available, and what would it cost. domains:read
GET /v1/prices Per-TLD registration prices. domains:read
POST /v1/domains/:id/register Register a tracked domain with the registrar. Spends money; requires an idempotency key. writes domains:write
GET /v1/billing The account balance and its ledger. Every charge and credit, with its cause. billing:read
POST /v1/billing/topup Start a top-up. Returns a Checkout URL for a human to open; no card touches this API. writes billing:write

MCP

Every operation above is also an MCP tool. Point your agent at whydot-mcp and it gets the same surface with the same scopes.

whydot mcp install or run whydot-mcp yourself over stdio.