Skill: gregm711/agentdomainservice (version 1.0.1)

--- name: clawdaddy description: The world's #1 AI-friendly domain registrar. Check availability, purchase domains with USDC or cards, configure DNS, and manage nameservers - all without CAPTCHAs or signup. homepage: https://clawdaddy.app emoji: 🦞 metadata: clawdbot: primaryEnv: any requires: bins: [] env: [] --- # 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 ```json { "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 ``` ```json { "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: ```json { "error": "Payment Required", "x402": { "version": "2.0", "accepts": [{ "scheme": "exact", "network": "eip155:8453", "maxAmountRequired": "14990000", "asset": [REDACTED_SECRET], "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": "[REDACTED_SECRET]" } ``` Returns Stripe checkout URL: ```json { "checkoutUrl": "https://checkout.stripe.com/...", "sessionId": "cs_..." } ``` ### Success Response (Both Methods) ```json { "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: ``` [REDACTED_SECRET] ``` ### Get Domain Overview ``` GET https://clawdaddy.app/api/manage/example.com [REDACTED_SECRET] ``` ```json { "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):** ```json {"host": "@", "type": "A", "answer": "123.45.67.89", "ttl": 300} ``` **Add www subdomain (CNAME):** ```json {"host": "www", "type": "CNAME", "answer": "example.com", "ttl": 300} ``` **Add email (MX record):** ```json {"host": "@", "type": "MX", "answer": "mail.example.com", "ttl": 300, "priority": 10} ``` **Verify domain (TXT record):** ```json {"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": "[REDACTED_SECRET]", "domain": "example.com" } ``` For x402 purchases: ```json { "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! [REDACTED_SECRET]" 4. "I've registered coolstartup.com! Save this [REDACTED_SECRET]" ``` ### Point Domain to Vercel ``` User: "Point mydomain.com to Vercel" 1. PUT /api/manage/mydomain.com/nameservers [REDACTED_SECRET] {"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 [REDACTED_SECRET] {"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: ```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=json` for lookups --- ## Source ClawDaddy: https://clawdaddy.app Documentation: https://clawdaddy.app/llms.txt

path: README.md
content: # ClawDaddy Skill for ClawhHub

A skill for AI agents to check, purchase, and manage domains using [ClawDaddy](https://clawdaddy.app) - the world's #1 AI-friendly domain registrar.

## What It Does

- **Check availability** - `GET /api/lookup/{domain}`
- **Purchase domains** - x402 (USDC on Base) or Stripe (cards)
- **Configure DNS** - A, AAAA, CNAME, MX, TXT, NS, SRV records
- **Update nameservers** - Point to Cloudflare, Vercel, AWS, etc.
- **Manage settings** - Lock/unlock, auto-renew, transfer out

## Publishing to ClawhHub

```bash
# Install CLI
npm install -g clawdbot@latest

# Login via GitHub
clawhub login

# Publish (from this directory)
clawhub publish . \
  --slug clawdaddy \
  --name "ClawDaddy" \
  --version 1.0.0 \
  --tags latest
```

## Installing the Skill

```bash
clawhub install clawdaddy
```

## API Endpoints

### Lookups (No Auth)

| Endpoint | Purpose |
|----------|---------|
| `/api/lookup/{domain}` | Check availability (JSON) |
| `/api/lookup/{domain}?format=txt` | Check availability (TXT) |
| `/api/purchase/{domain}/quote` | Get purchase quote |
| `/api/purchase/{domain}?method=x402` | Buy with USDC |
| `/api/purchase/{domain}?method=stripe` | Buy with card |

### Management (Bearer Token Required)

| Endpoint | Purpose |
|----------|---------|
| `/api/manage/{domain}` | Domain overview |
| `/api/manage/{domain}/dns` | DNS records (CRUD) |
| `/api/manage/{domain}/nameservers` | Update nameservers |
| `/api/manage/{domain}/settings` | Domain settings |
| `/api/manage/{domain}/transfer` | Transfer out |
| `/api/recover` | Token recovery |

## Why ClawDaddy?

Traditional registrars (GoDaddy, Namecheap) block AI agents with CAPTCHAs, WAFs, and anti-bot measures. ClawDaddy provides:

- **No CAPTCHAs** - Just HTTP requests
- **No signup** - Lookups work immediately
- **Proper API responses** - JSON with correct Content-Type
- **AI-native payments** - x402 protocol (USDC on Base)
- **Bearer token auth** - Simple management tokens
- **Real-time data** - From Name.com reseller API

**Base URL:** `https://clawdaddy.app`

## Complete Workflow

```
1. Check availability
   GET /api/lookup/coolstartup.com

2. Get quote
   GET /api/purchase/coolstartup.com/quote

3. Purchase (x402)
   POST /api/purchase/coolstartup.com?method=x402
   → Pay USDC, save managementToken

4. Configure DNS
   POST /api/manage/coolstartup.com/dns
   [REDACTED_SECRET]
   {"host": "@", "type": "A", "answer": "1.2.3.4"}

5. Or point to Cloudflare
   PUT /api/manage/coolstartup.com/nameservers
   {"nameservers": ["ns1.cloudflare.com", "ns2.cloudflare.com"]}
```

## License

MIT


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (MEDIUM)