> For the complete documentation index, see [llms.txt](https://docs.doma.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.doma.xyz/agentic-commerce/agentroot/publish-your-own.md).

# Publish Your Own

Publishing AgentRoot for a domain you own is three steps: host a zone file, add a DNS TXT record, verify resolution. After that, your domain's AI capabilities are discoverable by any tool that speaks the protocol.

## Prerequisites

* You own a domain.
* You can publish a static file at `https://<your-domain>/.well-known/agentroot.json` (any web host).
* You can edit DNS records at your registrar / DNS provider (e.g. Cloudflare, Route 53, Squarespace, GoDaddy).

## The three steps

{% stepper %}
{% step %}

#### Step 1: Host a zone file

Create `agentroot.json` declaring whatever capabilities your domain offers. Refer to the [Zone File Reference](/agentic-commerce/agentroot/zone-file-reference.md) for the full schema.

A minimum viable zone with one skill record:

```json
{
  "domain": "<your-domain>",
  "records": [
    {
      "type": "skill",
      "id": "my-skill",
      "name": "My First Skill",
      "description": "What this skill does in one sentence.",
      "skill_md": "https://<your-domain>/.well-known/skills/my-skill/SKILL.md"
    }
  ]
}
```

Save the file at:

```
<your-web-root>/.well-known/agentroot.json
```

Confirm it's reachable:

```bash
curl -sf https://<your-domain>/.well-known/agentroot.json | head
```

It must return HTTP 200 and `Content-Type: application/json`.
{% endstep %}

{% step %}

#### Step 2: Add a DNS TXT record

At your DNS provider, create a TXT record:

| Field       | Value                                                         |
| ----------- | ------------------------------------------------------------- |
| Name / Host | `_agentroot`                                                  |
| Type        | `TXT`                                                         |
| Value       | `v=ar1 zone=https://<your-domain>/.well-known/agentroot.json` |
| TTL         | `3600` (default is fine)                                      |

The full record is `_agentroot.<your-domain>`.

{% hint style="info" %}
Some DNS UIs append the apex automatically (you enter `_agentroot`); others require the FQDN (`_agentroot.your-domain.com`). Check what your provider expects: getting this wrong is the most common publishing error.
{% endhint %}

Wait for DNS propagation (usually under a minute, occasionally up to your TTL).
{% endstep %}

{% step %}

#### Step 3: Verify resolution

Confirm the TXT record is published:

```bash
dig +short TXT _agentroot.<your-domain>
```

Expected output:

```
"v=ar1 zone=https://<your-domain>/.well-known/agentroot.json"
```

Then run the AgentRoot resolver end-to-end:

```bash
npx agent-root resolve <your-domain>
```

Expected: a JSON object containing your declared records. If the command errors with "no TXT record found" or "zone fetch failed", recheck the TXT value and the zone URL.

That's it. **Done.** Your domain's capabilities are now discoverable.
{% endstep %}
{% endstepper %}

## Alternative: inline mode (no zone file)

For domains with one or two capabilities, the entire record can live in the DNS TXT value (no web hosting needed). This is the pattern tokenized domains use to advertise a single skill plus a payment endpoint.

```dns
; Single capability inline
_agentroot.<your-domain>  IN  TXT  "v=ar1 type=mcp name=My\ Tools endpoint=https://<your-domain>/mcp transport=sse"

; Multiple capabilities = multiple TXT records on the same name
_agentroot.<your-domain>  IN  TXT  "v=ar1 skill=https://<your-domain>/.well-known/skills/my-skill/SKILL.md"
_agentroot.<your-domain>  IN  TXT  "v=ar1 type=payment id=my-pay endpoint=https://pay.<your-domain> protocols=mpp methods=tempo assets=USDC"
```

Inline records skip Step 1 (no zone file) and replace Step 2 (the TXT value carries the full record). See [Zone File Reference → Inline mode](/agentic-commerce/agentroot/zone-file-reference.md#inline-mode) for the full wire format and parsing rules.

## Optional: submit to the agentroot.io directory

Submission is **not required**. Your zone resolves for any agent that knows your domain whether or not it appears in any directory. Submitting to [agentroot.io](https://agentroot.io) only adds discoverability for agents browsing the catalog.

To submit, visit [agentroot.io](https://agentroot.io) and use the submit flow to provide:

* Your domain (apex)
* Optional: a category / tags
* Optional: contact email for verification follow-ups

The directory verifies your zone and indexes its records. Updates propagate hourly.

## Optional: host `SKILL.md` files alongside your zone

If you advertised a `skill` record with `skill_md`, you also need to publish that file. The convention is:

```
<your-web-root>/.well-known/skills/<skill-id>/SKILL.md
<your-web-root>/.well-known/skills/<skill-id>/examples/...
<your-web-root>/.well-known/skills/<skill-id>/reference/...
```

For the `SKILL.md` format itself, see the [Skills overview](/agentic-commerce/skills.md). Doma's published skills are good reference implementations:

* [Secondary Sales](https://doma.xyz/.well-known/skills/secondary-sales/SKILL.md)
* [Trade Tokens](https://doma.xyz/.well-known/skills/trade-tokens/SKILL.md)

## Updating your zone

Resolvers cache zone fetches for the TXT record's TTL (default 3600s = 1 hour). To force a refresh:

* Update the file at `.well-known/agentroot.json`.
* Bump the TXT record TTL to a low value (e.g. 60s) before edits if you need fast iteration; restore to 3600 once stable.

{% hint style="warning" %}
Removing or renaming a skill `id` is a breaking change for anyone with the skill installed. Prefer adding new IDs over mutating existing ones.
{% endhint %}

## What's next

* [Zone File Reference](/agentic-commerce/agentroot/zone-file-reference.md): full schema for everything you can publish.
* [Skills overview](/agentic-commerce/skills.md): `SKILL.md` format and how to author your own skills.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.doma.xyz/agentic-commerce/agentroot/publish-your-own.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
