Guide — make your domain AI-discoverable

There is nothing to register with NessGate, and no account to create. You make your domain discoverable by publishing a few standard, machine-readable files on your own domain. AI agents read those files directly, and so does the NessGate resolver — live, over the public web.

You don't need all of them. Pick the ones that fit what you have: a plain description of your site, an agent, or public APIs. Each file below is optional and independent.

Is this safe?

Yes. NessGate is a read-only resolver. When someone looks up your domain, NessGate:

The files described here are meant to be public — they hold only the information you choose to make discoverable. Publishing them exposes nothing that isn't already public on your website.

1. llms.txt — a plain-language pointer for AI

The simplest thing you can publish. llms.txt is a small Markdown file at the root of your site that tells AI systems who you are and points to your most useful pages. It is text, so anyone can write it by hand.

Host it at:

https://yourdomain.com/llms.txt

A tiny example:

# Acme Pumps

> Industrial pump manufacturer serving 40 countries.

## Docs
- [Product catalog](https://yourdomain.com/products): our full range
- [Support](https://yourdomain.com/support): contact and help

2. An ARD catalog at /.well-known/ard.json

Agentic Resource Discovery (ARD) is the open standard — backed by Google, Microsoft, AWS, and others — for listing the resources on your domain that AI agents can use: APIs, agents, documentation, feeds. You publish a single JSON file with an entries array, one entry per resource.

Host it at:

https://yourdomain.com/.well-known/ard.json

A minimal example:

{
  "version": "1",
  "entries": [
    {
      "identifier": "orders-api",
      "displayName": "Orders API",
      "type": "application/vnd.oai.openapi+json",
      "url": "https://yourdomain.com/openapi.json"
    },
    {
      "identifier": "support-agent",
      "displayName": "Support agent",
      "type": "application/json",
      "url": "https://yourdomain.com/.well-known/agent-card.json"
    }
  ]
}

Add as many entries as you like. Each points at a resource that lives on your own domain. AI agents and registries read this file straight from your site — that is what makes you discoverable.

3. An A2A agent card at /.well-known/agent-card.json

Only if you actually run an agent. Skip this otherwise.

If your domain hosts an agent that speaks the A2A protocol, publish its agent card so other agents know how to reach it and what it can do.

Host it at:

https://yourdomain.com/.well-known/agent-card.json

A minimal example:

{
  "name": "Acme Support Agent",
  "description": "Answers order and shipping questions.",
  "version": "1.0.0",
  "protocolVersion": "1.0",
  "supportedInterfaces": [
    { "url": "https://yourdomain.com/a2a", "transport": "JSONRPC" }
  ],
  "skills": [
    { "id": "order-status", "name": "Check order status" }
  ]
}

4. An API catalog and/or OpenAPI description

Only if you offer public APIs.

If you have one or more public APIs, there are two standard, complementary ways to make them discoverable — publish whichever you can.

An RFC 9727 API catalog lists all your APIs from one well-known location:

https://yourdomain.com/.well-known/api-catalog

It is served as a link set (JSON), pointing to each API's description:

{
  "linkset": [
    {
      "anchor": "https://yourdomain.com",
      "service-desc": [
        { "href": "https://yourdomain.com/openapi.json" }
      ]
    }
  ]
}

An OpenAPI description describes a single API in detail. Most API frameworks can generate one for you. Host it somewhere predictable, e.g.:

https://yourdomain.com/openapi.json

5. ai-info.json — a simple company/product file

If you'd rather just describe your business in JSON, publish an ai-info.json. There is no required schema — the structure and field names are entirely yours. Describe who you are, what you offer, and how to reach you, then host it at a predictable URL such as https://yourdomain.com/ai-info.json.

Here are three optional starter examples. Copy one, replace the values with your own, delete what doesn't apply, and add whatever is missing. You may also reuse schema.org vocabulary if you prefer.

Example: corporate profile
{
  "name": "Acme GmbH",
  "legal_name": "Acme Industries GmbH",
  "description": "Industrial pump manufacturer serving 40 countries.",
  "founded": 1985,
  "headquarters": "Stuttgart, Germany",
  "industries": ["manufacturing", "industrial equipment"],
  "products": [
    {
      "name": "AquaFlow 300",
      "category": "centrifugal pumps",
      "url": "https://acme.example/products/aquaflow-300"
    }
  ],
  "certifications": ["ISO 9001"],
  "contact": { "sales": "sales@acme.example", "phone": "+49 711 000000" },
  "updated": "2026-09-08"
}
Example: e-commerce
{
  "name": "Sunrise Coffee",
  "description": "Specialty coffee roaster with worldwide shipping.",
  "currency": "EUR",
  "shipping_regions": ["EU", "UK", "US"],
  "catalog_url": "https://sunrise.example/products.json",
  "bestsellers": [
    {
      "name": "Ethiopia Yirgacheffe 250g",
      "price": 12.90,
      "sku": "ETH-250",
      "url": "https://sunrise.example/p/eth-250"
    }
  ],
  "returns_policy": "https://sunrise.example/returns",
  "support": "help@sunrise.example",
  "updated": "2026-09-08"
}
Example: local service
{
  "name": "Fairfax Dental Care",
  "description": "Family dental clinic.",
  "services": ["checkups", "orthodontics", "implants"],
  "address": "123 Main St, Fairfax, VA 22030, USA",
  "hours": { "mon-fri": "08:00-18:00", "sat": "09:00-13:00" },
  "phone": "+1 703 000 0000",
  "booking_url": "https://fairfaxdental.example/book",
  "insurance_accepted": ["Delta Dental", "Cigna"],
  "languages": ["English", "Spanish"],
  "updated": "2026-09-08"
}

Tip: an "updated" date helps AI systems judge freshness, and keeping the file small and factual beats marketing copy — but this is your file and your call.

Where to put the files

Files under /.well-known/ (and root files like llms.txt) must be served from your domain itself. How you add them depends on your hosting:

HostingHow
Own server (Apache, Nginx)Create a folder named .well-known in your web root and put the files inside.
cPanel / PleskUse the File Manager: open your site's public folder (often public_html), create .well-known, add the files. Enable "show hidden files" if the folder is invisible.
WordPressUpload via your host's file manager or SFTP into the site root.
Vercel / Netlify / static hostsAdd the files under your public (or output) folder and redeploy.
GitHub PagesCommit the files at the matching paths in your Pages branch.

Check yourself: open a file's URL in a browser. If you can see it, so can an AI agent and the NessGate resolver.

Check your work

Once your files are live, confirm them with /check — it is free, reads only your public files, and stores no domain data.

After that, no registration is needed. NessGate resolves your domain automatically:

Web:  https://nessgate.com/discover/yourdomain.com
MCP:  the "discover_domain" tool on the NessGate MCP server

Each answer is normalized and links back to the source file on your own domain. Update or remove any file whenever you like — NessGate reads the current version every time, so your domain always reflects exactly what you publish.