OpenClaw · Skill
ClawDaddy
The world's #1 AI-friendly domain registrar. Check availability, purchase domains, configure DNS, and manage nameservers.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install gregm711/agentdomainserviceClawHub installer
npx clawhub@latest install gregm711/agentdomainserviceOpenClaw CLI
openclaw skills install gregm711/agentdomainserviceDirect OpenClaw install
openclaw install gregm711/agentdomainserviceWhat this skill does
The world's #1 AI-friendly domain registrar. Check availability, purchase domains, configure DNS, and manage nameservers.
Why it matters
No account creation or CAPTCHA means AI agents can complete the full domain registration flow autonomously without human intervention.
Typical use cases
- Checking if a domain name is available before committing to a project
- Buying a domain with a crypto wallet from inside an AI agent workflow
- Pointing a newly registered domain to a Vercel or Cloudflare deployment
- Adding MX and SPF records to enable Google Workspace email on a domain
- Recovering a lost management token using the original purchase email or wallet address
Source instructions
ClawDaddy - AI-Friendly Domain Registrar
The world's #1 AI-friendly domain registrar. Check availability, purchase domains, configure DNS, and manage nameservers.
Base URL: https://clawdaddy.app
No CAPTCHAs. No signup required for lookups. Bearer tokens for management.
Quick Reference
| Task | Endpoint | Auth |
|---|---|---|
| Check availability | GET /api/lookup/{domain} | None |
| Get purchase quote | GET /api/purchase/{domain}/quote | None |
| Purchase domain | POST /api/purchase/{domain}?method=x402|stripe | None |
| Manage domain | GET /api/manage/{domain} | Bearer token |
| Configure DNS | POST /api/manage/{domain}/dns | Bearer token |
| Update nameservers | PUT /api/manage/{domain}/nameservers | Bearer token |
| Recover token | POST /api/recover | None |
1. Check Domain Availability
When: User asks "Is example.com available?" or "Check if mycoolapp.io is taken"
GET https://clawdaddy.app/api/lookup/example.com
JSON Response
{
"fqdn": "example.com",
"available": true,
"status": "available",
"premium": false,
"price": {
"amount": 12.99,
"currency": "USD",
"period": "year"
},
"checked_at": "2026-01-15T10:30:00.000Z",
"source": "namecom",
"cache": { "hit": false, "ttl_seconds": 120 }
}
TXT Response
GET https://clawdaddy.app/api/lookup/example.com?format=txt
fqdn=example.com
available=true
status=available
premium=false
price_amount=12.99
price_currency=USD
checked_at=2026-01-15T10:30:00Z
Status Values
| Status | available | Meaning |
|---|---|---|
available | true | Can be registered |
registered | false | Already taken |
unknown | false | Error/timeout |
Key: The available field is ALWAYS boolean (true/false), never undefined.
2. Purchase a Domain
Step 1: Get Quote
When: User wants to buy a domain, get the price first.
GET https://clawdaddy.app/api/purchase/example.com/quote
{
"domain": "example.com",
"available": true,
"priceUsd": 12.99,
"marginUsd": 2.00,
"totalUsd": 14.99,
"validUntil": "2026-01-15T10:35:00.000Z",
"paymentMethods": {
"x402": { "enabled": true, "currency": "USDC", "network": "base" },
"stripe": { "enabled": true, "currency": "USD" }
}
}
Step 2a: Purchase via x402 (USDC on Base)
Best for: AI agents with crypto wallets
POST https://clawdaddy.app/api/purchase/example.com?method=x402
First request returns HTTP 402 with payment requirements:
{
"error": "Payment Required",
"x402": {
"version": "2.0",
"accepts": [{
"scheme": "exact",
"network": "eip155:8453",
"maxAmountRequired": "14990000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x..."
}]
}
}
After paying USDC on Base, retry with payment proof:
POST https://clawdaddy.app/api/purchase/example.com?method=x402
x-payment: <payment_proof_from_x402>
Step 2b: Purchase via Stripe (Cards)
Best for: Human users or agents without crypto
POST https://clawdaddy.app/api/purchase/example.com?method=stripe
Content-Type: application/json
{
"email": "user@example.com"
}
Returns Stripe checkout URL:
{
"checkoutUrl": "https://checkout.stripe.com/...",
"sessionId": "cs_..."
}
Success Response (Both Methods)
{
"success": true,
"domain": "example.com",
"registrationId": "12345",
"expiresAt": "2027-01-15T10:30:00.000Z",
"nameservers": ["ns1.name.com", "ns2.name.com"],
"managementToken": "clwd_abc123xyz...",
"manageUrl": "https://clawdaddy.app/api/manage/example.com"
}
CRITICAL: Save the managementToken immediately! It's required for all management operations and cannot be retrieved without recovery.
3. Domain Management
All management endpoints require the Authorization header:
Authorization: Bearer clwd_your_management_token
Get Domain Overview
GET https://clawdaddy.app/api/manage/example.com
Authorization: Bearer clwd_abc123...
{
"domain": "example.com",
"purchasedAt": "2026-01-15T10:30:00.000Z",
"expiresAt": "2027-01-15T10:30:00.000Z",
"nameservers": ["ns1.name.com", "ns2.name.com"],
"settings": {
"locked": true,
"autorenewEnabled": false,
"privacyEnabled": true
}
}
DNS Records
List all records:
GET /api/manage/{domain}/dns
Create a record:
POST /api/manage/{domain}/dns
Content-Type: application/json
{
"host": "@",
"type": "A",
"answer": "1.2.3.4",
"ttl": 300
}
Update a record:
PUT /api/manage/{domain}/dns?id=123
Content-Type: application/json
{
"answer": "5.6.7.8",
"ttl": 600
}
Delete a record:
DELETE /api/manage/{domain}/dns?id=123
Supported record types: A, AAAA, CNAME, MX, TXT, NS, SRV
Common DNS Configurations
Point to a server (A record):
{"host": "@", "type": "A", "answer": "123.45.67.89", "ttl": 300}
Add www subdomain (CNAME):
{"host": "www", "type": "CNAME", "answer": "example.com", "ttl": 300}
Add email (MX record):
{"host": "@", "type": "MX", "answer": "mail.example.com", "ttl": 300, "priority": 10}
Verify domain (TXT record):
{"host": "@", "type": "TXT", "answer": "google-site-verification=abc123", "ttl": 300}
Update Nameservers
When: User wants to use Cloudflare, Vercel, or another DNS provider
PUT /api/manage/{domain}/nameservers
Content-Type: application/json
{
"nameservers": [
"ns1.cloudflare.com",
"ns2.cloudflare.com"
]
}
Common nameserver configurations:
| Provider | Nameservers |
|---|---|
| Cloudflare | ns1.cloudflare.com, ns2.cloudflare.com |
| Vercel | ns1.vercel-dns.com, ns2.vercel-dns.com |
| AWS Route53 | Check your hosted zone |
| Google Cloud | ns-cloud-X.googledomains.com |
Domain Settings
Get settings:
GET /api/manage/{domain}/settings
Update settings:
PATCH /api/manage/{domain}/settings
Content-Type: application/json
{
"locked": false,
"autorenewEnabled": true
}
Transfer Domain Out
Get auth code:
GET /api/manage/{domain}/transfer
Prepare for transfer (unlock + get code):
POST /api/manage/{domain}/transfer
Note: Domains cannot be transferred within 60 days of registration (ICANN policy).
4. Token Recovery
When: User lost their management token
POST https://clawdaddy.app/api/recover
Content-Type: application/json
{
"email": "user@example.com",
"domain": "example.com"
}
For x402 purchases:
{
"wallet": "0x123...",
"domain": "example.com"
}
IMPORTANT: Recovery generates a NEW token. Old tokens are invalidated.
Rate limit: 5 requests per 5 minutes per IP.
Workflow Examples
Check and Buy Domain
User: "Buy coolstartup.com for me"
1. GET /api/lookup/coolstartup.com
→ available: true, price: $12.99
2. GET /api/purchase/coolstartup.com/quote
→ totalUsd: $14.99
3. POST /api/purchase/coolstartup.com?method=x402
→ 402 Payment Required
→ Pay USDC on Base
→ Retry with x-payment header
→ Success! Token: "clwd_abc123..."
4. "I've registered coolstartup.com! Save this token: clwd_abc123..."
Point Domain to Vercel
User: "Point mydomain.com to Vercel"
1. PUT /api/manage/mydomain.com/nameservers
Authorization: Bearer clwd_abc123...
{"nameservers": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"]}
2. "Done! mydomain.com now uses Vercel's nameservers. Add the domain in your Vercel dashboard."
Set Up Basic DNS
User: "Point example.com to my server at 1.2.3.4"
1. POST /api/manage/example.com/dns
Authorization: Bearer clwd_token...
{"host": "@", "type": "A", "answer": "1.2.3.4", "ttl": 300}
2. POST /api/manage/example.com/dns
{"host": "www", "type": "CNAME", "answer": "example.com", "ttl": 300}
3. "Done! example.com and www.example.com now point to 1.2.3.4"
Add Email Records
User: "Set up Google Workspace email for mydomain.com"
1. POST /api/manage/mydomain.com/dns
{"host": "@", "type": "MX", "answer": "aspmx.l.google.com", "ttl": 300, "priority": 1}
2. POST /api/manage/mydomain.com/dns
{"host": "@", "type": "MX", "answer": "alt1.aspmx.l.google.com", "ttl": 300, "priority": 5}
3. POST /api/manage/mydomain.com/dns
{"host": "@", "type": "TXT", "answer": "v=spf1 include:_spf.google.com ~all", "ttl": 300}
4. "Email records configured for Google Workspace!"
Error Handling
All errors return JSON:
{
"error": "Description of what went wrong",
"details": "Additional context if available"
}
| Status | Meaning |
|---|---|
400 | Bad request (invalid input) |
401 | Unauthorized (missing/invalid token) |
402 | Payment required (x402 flow) |
404 | Domain not found |
500 | Server error |
Key Points
- No signup required for lookups and purchases
- Two payment methods: x402 (USDC on Base) for agents, Stripe for humans
- Save your management token - it's the only way to manage your domain
- Bearer auth for management - include
Authorization: Bearer clwd_...header - JSON responses - use
?format=jsonfor lookups
Source
ClawDaddy: https://clawdaddy.app Documentation: https://clawdaddy.app/llms.txt