> ## Documentation Index
> Fetch the complete documentation index at: https://docs.semicola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Identity documents

> Who publishes adagents.json, brand.json and agent capabilities, where each lives, and how Semicola reads them.

Semicola doesn't own your identity. You publish it on your own domain and we read it. Three
documents matter, each owned by a different party.

| Document               | Owner                 | Where it lives                                     | What Semicola reads from it                                                   |
| ---------------------- | --------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------- |
| **`adagents.json`**    | The publisher         | `https://<publisher>/.well-known/adagents.json`    | Which sales agents the publisher authorizes to sell its inventory.            |
| **`brand.json`**       | The brand or operator | `https://<domain>/.well-known/brand.json`          | Name, logo and colors; `authorized_operators`; the house brand it belongs to. |
| **Agent capabilities** | The agent             | The agent's own endpoint (`get_adcp_capabilities`) | What the agent says it can do.                                                |

Buyer-agent credentials and API keys identify an automation to Semicola. They don't publish or replace
any of these documents; see [Buyer-agent credentials](/v2/setup/buyer-agent-credentials).

## Storefront operator versus publisher domains

A storefront has one **brand domain** (the operator running it) and any number of **publisher
domains** (the sites and apps it sells). Publisher domains never replace the brand domain. See
[Which domain is which](/concepts/domains).

## How each document is used

### `brand.json`

When you add an advertiser or set a storefront's brand domain, Semicola resolves the domain's brand:
first from its own brand registry, then by fetching `/.well-known/brand.json` over HTTPS. The brand
card fills in the name and logo. An unknown domain isn't an error: the card says no brand is
registered yet and one is created from the domain when you save.

`authorized_operators` and a shared house brand are the evidence that links a storefront's brand domain
to a different registered domain.

### `adagents.json`

The seller directory lists real companies. A publisher can be added through Semicola only when its
`adagents.json` authorizes an agent this platform operates. A publisher whose sales agent hasn't
authorized us is listed but can't transact; one with no agent at all hasn't published supply here. A
daily check re-reads each directory publisher's `adagents.json`.

### Agent capabilities

Before an agent is used, Semicola probes it with read-only discovery calls
(`get_adcp_capabilities`, `list_creative_formats`, `get_products`). A probe never creates, reserves or
spends anything. Only agents the publisher operates itself are probed; an agent run by another platform
is recorded, never called.

Every fetch goes through an egress guard: HTTPS only, and never a private address.

## Gates and signals

* **Brand domain verification** gates a storefront's company identity step.
* **`adagents.json` authorization** gates whether a real publisher in the directory can transact.
* **Agent capabilities** inform what a connection can do; they don't grant access.

## Not available yet

* `ads.txt` `managerdomain` delegation and `authoritative_location` pointer files.
* Compliance grades for agents (`passing`, `degraded`…), and community mirrors of `adagents.json`.
* Brand hierarchy from an external registry; the house brand comes from Semicola's own registry.
* Publishing identity documents on your behalf.
* Per-publisher-domain `adagents.json` checks for your own storefront (see
  [Which domain is which](/concepts/domains#not-available-yet)).
