Step-by-step instructions for configuring each supported provider.
Best for: New projects. Clean JSON API, free keys, no IP whitelist, sandbox available.
- Log in to porkbun.com and go to Account → API Access
- Enable API access and create an API key
- Copy your
PORKBUN_API_KEY(starts withpk1_) andPORKBUN_SECRET_API_KEY(starts withsk1_)
PORKBUN_API_KEY=pk1_...
PORKBUN_SECRET_API_KEY=sk1_...- Rate limits are strict: ~1 domain availability check per 10 seconds, ~60 DNS requests/minute. The server handles backoff automatically.
- Registration prerequisites: Your Porkbun account must have (1) at least one previously registered domain, (2) a verified email address, (3) a verified phone number, and (4) sufficient account credit. Registration will fail without these.
- No WHOIS contact management via API: Porkbun v3 API does not expose contact management endpoints. Manage WHOIS contacts at porkbun.com.
Best for: Users who already have a Namecheap account with existing domains.
- Log in to Namecheap and go to Profile → Tools → API Access
- Enable API access
- Copy your API key and note your account username
NAMECHEAP_API_KEY=your_api_key
NAMECHEAP_API_USER=your_usernameCritical: Namecheap requires your server's IP address to be whitelisted before any API call works.
- Go to Profile → Tools → API Access → Whitelisted IPs
- Add your server's IP address (must be IPv4)
- If running locally, add your public IP (check
curl https://api.ipify.org)
If you don't whitelist your IP, every API call will fail with an authentication error regardless of key validity.
# Optional: set explicitly if auto-detection fails
NAMECHEAP_CLIENT_IP=1.2.3.4NAMECHEAP_SANDBOX=trueSandbox URL: api.sandbox.namecheap.com
- IP whitelist required (see above)
- DNS write pattern: Namecheap's DNS API is set-all-records-at-once. Every
create_dns_record,update_dns_record, ordelete_dns_recordcall costs 2 API calls (read existing + write all). This counts against your rate limit (20/min, 700/hr, 8,000/day). - Rate limits: 20 requests/minute, 700/hour, 8,000/day. The server handles backoff automatically.
Best for: Users who already have 10+ domains on GoDaddy, or pay for Domain Pro.
- Go to developer.godaddy.com/keys
- Create a production API key
- Copy your
GODADDY_API_KEYandGODADDY_API_SECRET
GODADDY_API_KEY=your_api_key
GODADDY_API_SECRET=your_api_secretGODADDY_SANDBOX=trueOTE URL: api.ote-godaddy.com
- DNS management requires: Either 10+ active domains in your account, OR an active Domain Pro plan (~$240/yr). New accounts with fewer domains are effectively read-only for DNS writes. You will receive a clear error if your account doesn't qualify.
- Not recommended for new users: Unless you already have a qualifying account, use Porkbun or Namecheap instead.
Best for: DNS management layer. Pair with Porkbun/Namecheap for registration.
- Go to dash.cloudflare.com/profile/api-tokens
- Click Create Token
- Use the Edit zone DNS template, or create a custom token with:
- Zone → Zone: Read (all zones)
- Zone → DNS: Edit (all zones)
- Zone → SSL and Certificates: Edit (all zones)
- Copy the generated token
CLOUDFLARE_API_TOKEN=your_api_token
# Optional: restrict to a specific account
CLOUDFLARE_ACCOUNT_ID=your_account_idCloudflare's DNS API is the best in class. The recommended setup:
- Register domains on Porkbun or Namecheap
- Point nameservers to Cloudflare (get nameservers from Cloudflare dashboard)
- Use
create_dns_record/update_dns_recordwithprovider: "cloudflare"for all DNS management
- No domain registration via API — Registration is Enterprise-tier only. Use
supports()to check: the server will return an actionable error if you attempt to register via Cloudflare. - No pricing API — Cloudflare doesn't expose domain pricing via API.
- No WHOIS contact management — Also Enterprise-only.
- Most generous rate limits: 1,200 requests per 5 minutes (~240/min). Rarely an issue in practice.
You can configure multiple providers simultaneously. The server will:
- Use the specified provider if
provideris given in a tool call - Auto-detect the provider from domain ownership (via
listDomainsfan-out) if not specified - Return a clear error if the domain is not found in any configured provider
Example: Register on Porkbun, manage DNS on Cloudflare:
PORKBUN_API_KEY=pk1_...
PORKBUN_SECRET_API_KEY=sk1_...
CLOUDFLARE_API_TOKEN=...# Register on Porkbun
register_domain { domain: "myapp.com", provider: "porkbun", ... }
# Then set nameservers to Cloudflare (done in Cloudflare dashboard)
# Then manage DNS via Cloudflare
create_dns_record { domain: "myapp.com", provider: "cloudflare", type: "A", ... }