You registered a domain on StableDomains (paid in USDC or USDT on 7 chains) and your app lives on Vercel. This guide links the two in three ways: the free Vercel DNS template, records you set yourself, or your AI agent through the 37-tool MCP server.
Step 1: Add the domain in Vercel
In your Vercel project open Settings → Domains and add example.com (and www.example.com if you want it). Vercel then shows the exact DNS records it expects:
- Apex (
example.com): an A record. Vercel's docs give76.76.21.21, or the value shown on your domain card. - Subdomain (
www): a CNAME. Vercel says each project has a unique CNAME target, for exampled1d4fc829fe7bc7c.vercel-dns-017.com. Older setups usecname.vercel-dns.com.
Copy the exact values Vercel shows you. Don't reuse an example from a guide, including this one.
Source: Vercel docs: Adding a domain
Step 2 (option A): One-call Vercel DNS template
StableDomains has free DNS templates: vercel, netlify, github-pages, google-workspace, microsoft-365 and zoho-mail. A template merges its records into your zone and keeps unrelated records such as MX.
curl -X POST "/api/v1/domains/example.com/dns/template" \
-H "Authorization: Bearer $KEY" -H "content-type: application/json" \
-d '{"template":"vercel"}'
MCP: call apply_dns_template with template vercel. The template writes 76.76.21.21 and cname.vercel-dns.com. If Vercel shows a project-specific CNAME (*.vercel-dns-017.com), swap it in with the PATCH below.
Step 2 (option B): Set records yourself with PATCH (merge)
PATCH /api/v1/domains/{domain}/dns adds or updates the records you send and keeps everything else. Sending a CNAME replaces the existing CNAME at that name. Your email MX and TXT records stay untouched.
curl -X PATCH "/api/v1/domains/example.com/dns" \
-H "Authorization: Bearer $KEY" -H "content-type: application/json" \
-d '{"records":[
{"type":"A","name":"@","value":"76.76.21.21"},
{"type":"CNAME","name":"www","value":"<the CNAME value Vercel shows you>"}
]}'
To delete records in the same call, add "remove":[{"type":"A","name":"@","value":"1.2.3.4"}]. Leave out value to remove every record of that type at that name.
MCP: set_dns with mode: "merge" (and optional remove).
PUT /api/v1/domains/{domain}/dns (set_dns default mode: "replace") still replaces the full record set. Use it when you send every record you want to keep; read the current set beforehand with GET or MCP get_dns.
Supported record types: A, AAAA, CNAME, MX, TXT.
Step 2 (option C): Use Vercel nameservers
PUT .../dns also accepts a nameservers field (MCP set_dns). If you prefer Vercel to manage DNS, set the nameservers Vercel gives you. Before switching, copy any MX and TXT records you rely on into Vercel. Once the nameservers point elsewhere, StableDomains DNS records and templates stop applying.
Step 3: Verify
Wait for Vercel to show the domain as valid. Check propagation with the free DNS checker or the MCP tool dns_email_check.
Doing it from an AI agent
Add /api/mcp as an MCP server (OAuth in Claude, ChatGPT or Cursor, or an API key). A full flow: search_domains → create_order → pay_order → check_order → apply_dns_template → set_dns (mode merge). See Buy a domain from an AI agent.
FAQ
Does the Vercel DNS template cost anything? No. DNS templates are free for domains you registered with StableDomains.
Will adding Vercel records delete my email records?
Not with PATCH, set_dns mode merge, or a template: they keep unrelated records. PUT replaces the full set, so with PUT, include your MX and TXT records.
Where do I find the CNAME value?
In Vercel → Project → Settings → Domains. It can be unique per project, such as something.vercel-dns-017.com. Copy it exactly.
Can I use both www and the apex? Yes. Add both in Vercel, then set the apex A record and the www CNAME.
Can I forward the domain instead of hosting it?
Yes, with free 301 URL forwarding: PUT /api/v1/domains/{domain}/forward or MCP set_url_forward.
How do I pay for the domain? USDC or USDT on 7 chains. See pay with crypto.
Get started
Search for a domain on StableDomains → · API docs · Email DNS guide