- brand.json says who your brand is, and which parent company it belongs to.
- trust.json names the agents you operate and the agents you’ve hired: the agencies and platforms allowed to act for you, for which brands, in which countries, and until when.
trust.json is experimental in AdCP 3.3. It protects you only with sellers that check it, and SDK and seller support varies today. Publishing it is optional. Existing 3.x integrations keep their documented rules until they adopt it. The file name, path and schema may change before it graduates. See trust.json (experimental).
See where you stand
Enter your domain at trustjson.org. The lookup follows your verified parent company and shows what a seller can find today:
Agents can run the same check through the AgenticAdvertising.org MCP server’s
lookup_brand_authorization tool, or GET https://trustjson.org/api/trust/lookup?domain=yourbrand.com.
The lookup shows public declarations. It doesn’t authenticate a request, test a seller’s enforcement, or see the approvals a seller keeps privately.
Step 1: Prove you control your domain
Everything rests on your domain. Only whoever controlsyourbrand.com can publish files at https://yourbrand.com/.well-known/.
- Self-publish
brand.jsonat/.well-known/brand.jsonover HTTPS, or publish anauthoritative_locationpointer to a provider you control. No signup is required. - Claim your brand in the AgenticAdvertising.org registry with its DNS TXT check if you want a hosted, editable entry.
Step 2: Connect every brand to its parent company
If you own several brands, you publish the list of who can act for them once, from your parent company’s domain. For that to work, each brand and the parent have to vouch for each other:- the brand’s brand.json names the parent in
house_domain; - the parent’s brand.json lists the brand in
brand_refs.
https://nova-motors.example/.well-known/brand.json:
https://nova-brands.example/.well-known/brand.json:
house_domain and publishes its own trust.json. The full rules are in the mutual-assertion trust model.
Step 3: Publish who can act for you
Publishtrust.json at https://{your-registrable-domain}/.well-known/trust.json. For a portfolio, that’s the parent company’s domain.
Agents you operate go in agents, one per origin, each with its role. Your own agents can act for your brands without a grant.
Agents you’ve hired go in grants. Each grant names an organization by its registrable domain and sets its limits:
At
https://nova-brands.example/.well-known/trust.json:
exclusive_grants: true, your grants are the whole list: a seller that checks turns away any agency or platform not on it, for every activity, whatever they claim. In this example, no one could measure for Nova Brands, because no grant covers measurement. Your own agents still act for you. Without exclusivity, a claim your grants don’t cover is up to each seller, and a grant that almost matches doesn’t change that.
Move everything over before you publish. Once your trust.json exists, sellers stop reading the older authorized_operators list in your brand.json. Copy every entry into grants first.
Step 4: Make sure your partners list their agents
A grant authorizes an organization. The seller still has to confirm that the agent making the call really belongs to it. Each agency or platform you hire lists the agents it runs in its own trust.json, and each agent serves its signing keys from its own origin. Athttps://pinnacle-agency.example/.well-known/trust.json:
agents. If an agency works through a hosted platform, leave your grant to the agency unnarrowed and have the agency grant the platform in its own trust.json. Grants in trust records has the full chain rules.
Step 5: Test it with each seller
Ask every seller you work with one question: “Do you check trust.json before you accept a buy for our brand?” Then ask them to show you one request they approved and one they turned down, checking the agent, brand, account operator, activity, country and dates. Seller account approval, billing and credit checks still apply on top of your list.What sellers do when something is missing
Change partners, revoke access
- Add a partner: add a grant.
- Pull access: delete or narrow the grant. To retire one of your own agents, remove it from
agents. Sellers that check pick the change up on their next refresh, within their cache lifetime rather than instantly. Revoking an agent doesn’t by itself cancel live buys or suspend an account. - Hand off hosting: your agency or platform can host the file. Publish an
authoritative_locationpointer at your own well-known location, and you stay the authority.
Beyond advertising
trust.json’s core is protocol-neutral: agents you operate, partners you’ve hired, and the limits on each. Roles and scopes are namespaced, and AdCP’sadcp: tokens are the first profile. Commerce, customer care, travel, data access and other protocols can define their own, and verifiers ignore namespaces they don’t implement. Advertising is the only profile defined today.
Related
trustjson.org
Check any brand’s published authority, with a link to claim it.
trust.json reference
Schemas, fields and the experimental status contract.
Grants in trust records
How a seller evaluates grants, chains and exclusivity.
Agent identity migration
Moving from brand.json operator lists to trust.json grants.