deed.page

For AI agents: the documentation index is at /llms.txt, and this page as markdown is at /attach-custom-domain.md.

Guides · Guide · custom domain

Attach your own domain to a deed.page site

A custom domain on deed.page is a hostname you already own, such as example.com, serving the same site as https://<slug>.deed.page/. Free includes 1 custom hostname. Hobby ($3/mo) includes 3, so example.com and www.example.com both fit. The agent calls POST /v1/sites/<slug>/domains and reads dns_records from the response. deed.page does not sell domains.

One command
$ curl -T index.html "https://deed.page/v1/sites?slug=domain-site-<random>&ref=custom-domain" -H "X-Client: <your agent name>"
{"ok":true,"url":"https://domain-site-<random>.deed.page/","version":"v1","permanent":true,"token":"deed_tok_…"}

Replace <random> with your own suffix, for example domain-site-7k2q. Send your agent's name in X-Client. The ref is recorded and does not change the publish.

Step by step

  1. Publish the site first and keep the token. The command below is that publish.
  2. POST the hostname with Authorization: Bearer <token>. The 201 body lists every DNS record to create. Create those records where you bought the domain. Record shapes, status values, and error codes are in the API walkthrough at /blog/custom-domains-via-api.
  3. Check GET /v1/sites/<slug>/domains/<hostname> until status is active, or wait for a domain.active webhook if you registered one.
  4. Free allows 1 hostname. Adding www after the apex returns quota_domains, with the price and an upgrade link in the error. Show that link to the person paying. whoami returns domain_retry once after Stripe confirms the paid plan. Call add_domain then, with that slug and hostname. A canceled, unpaid, or not-yet-confirmed checkout does not. The agent does not open checkout itself.

Or ask your agent

Attach my domain to my deed.page site. First publish with PUT https://deed.page/v1/sites?slug=domain-site-<random>&ref=custom-domain and header X-Client: <your agent name>, unless I already gave you a slug and token. Then POST https://deed.page/v1/sites/<slug>/domains with Authorization: Bearer <token> and JSON {"domain":"docs.example.com"} using my real hostname. Give me every dns_records entry. Poll domain status until it is active. If the response is quota_domains, show me message_for_user including the upgrade link. Do not call add_domain again until whoami returns domain_retry, which happens once after Stripe confirms the paid plan. Do not open checkout yourself. DNS details: https://deed.page/blog/custom-domains-via-api

From an MCP client

Add the server once, then call publish_site with a files map:

claude mcp add --transport http deed-page https://deed.page/mcp?ref=custom-domain
{
  "tool": "publish_site",
  "arguments": {
    "slug": "domain-site-<random>",
    "ref": "custom-domain",
    "files": {
      "index.html": "<!doctype html><h1>Hello</h1>"
    }
  }
}

Apex and www

Free sites can attach 1 hostname. Visitors who type www need a second hostname, which fits on Hobby ($3/mo or $30/year, 3 hostnames) along with removal of the "Published with deed.page" badge.

The response is the source of the DNS values. Do not copy targets from this page. A subdomain gets a CNAME. An apex gets an A record or an ALIAS record, one of the two, plus every TXT record in the list.

FAQ

Do I need an account, an email, or an API key?

No. The first publish needs no account, no emailed code, and no claim link. The response includes a token. Keep it to update or delete the site later. A recovery email is optional and never required.

Does deed.page sell the domain?

No. Buy the hostname from any registrar, then create the DNS records your agent lists.

What happens when Free already has a hostname?

The next attach returns 403 quota_domains. The error names Hobby at $3/mo and includes the upgrade link and domain_retry for that slug and hostname. whoami returns that retry once after the paid webhook confirms the plan. It does not return it for a canceled, unpaid, or not-yet-confirmed checkout.

How do I update the page later?

Publish to the same slug again with the header Authorization: Bearer <token>. The URL stays the same and the version number goes up. Agents should save the token to ~/.config/deed-page/token (mode 600) and reuse it.

More

Last checked October 31, 2026. deed.page is run by Avatar 8 LLC. Questions or corrections: ops@avatar33.com.

By Avatar 8 · Published · Updated · Markdown copy