Agentic Brand Content
A spec for publishers to serve AI agents sponsored brand content matched to the page — and get paid for bot traffic.
Spec v0.1 · 2026-05-28
Early public draft. The format is usable today and open to feedback; details may change before v1.0.
The problem
AI agents (GPTBot, ClaudeBot, PerplexityBot…) read publisher pages to answer user questions. The publisher serves its content and gets nothing back.
Agentic Brand Content (ABC) adds a paid layer on top. For AI-agent requests only, the publisher serves a compact brand card: sponsored brand content matched to the page's topic — a skincare brand on a beauty article, a carmaker on an auto review. Humans see the page unchanged. The publisher gets paid for the bot visit; the agent gets relevant, structured context.
How it works
sequenceDiagram
autonumber
participant V as Visitor
participant E as Publisher edge
participant P as Provider
V->>E: request page
E->>P: fragment request (forwards User-Agent)
alt request is an AI agent
P-->>E: 200 · brand card
E-->>V: page + brand card
else request is human
P-->>E: 204 · empty
E-->>V: page unchanged
end
The provider decides per request: a brand card for AI agents, nothing for humans. The publisher's edge inlines whatever comes back — so humans are never affected.
The fragment
The core of ABC is the brand fragment: a provider exposes an endpoint that
returns a brand card for AI-agent traffic and nothing for humans. The publisher
inlines it on its existing CDN — a single <esi:include> tag (Akamai, Fastly,
Varnish), or a small edge function (Cloudflare Worker, Lambda@Edge). No platform
lock-in.
The mechanism is simple: classify the request, and for AI agents only, add a small block of brand context — usually sponsored — alongside the page. Everything else is convention around it.
The card
A card is a single self-contained <article role="complementary"> — a brand label,
a short factual summary, a bullet block built for LLM ingestion, and source links.
~2 KB, under 1 000 tokens, designed to fit an agent's context window. It carries its
own inline styling so it renders without the host stylesheet. See the full
card schema.
<article class="abc-card" role="complementary">
<div>Brand · Renault</div>
<div>Nouvelle Clio E-Tech full hybrid — 160 hp, up to 1,000 km range</div>
<p>Renault renews its flagship city car with a 160 hp full-hybrid E-Tech
powertrain, no plug-in needed. Up to 1,000 km on one tank…</p>
<pre>• Brand: Renault
• Source: renault.fr
• Date: 2026-04-15
• Event: Launch of the Clio E-Tech full hybrid
• Relevance: most accessible hybrid city car in its segment
• Keywords: Clio, E-Tech, full hybrid, city car</pre>
<div>Source: <a href="…">Nouvelle Clio E-Tech</a> · <a href="…">newsroom</a></div>
</article>
Endpoint behavior
A fragment endpoint is an HTTP GET that receives the page context — at minimum the
page URL and the visitor's User-Agent — and returns:
| Status | When | Body |
|---|---|---|
200 |
AI-agent traffic, brand eligible | the card (text/html) |
204 |
human traffic, or no eligible brand | empty |
Responses are cacheable, and MUST carry Vary: User-Agent when the endpoint
classifies agents itself — so a CDN never serves an agent card to a human, or the
reverse. The exact request parameters and selection logic are provider-defined; only
this behavior is part of the spec. Machine-readable contract:
fragment.openapi.yaml.
The provider
A provider is the service a publisher authorizes to supply brand content for its AI-agent traffic. A provider:
- runs the fragment endpoint and decides which brand is relevant to the page;
- renders the card and keeps it within the token budget;
- manages the brand relationships and the reporting behind it.
The spec is provider-neutral: any service implementing a compatible fragment endpoint
is a provider. A publisher authorizes its providers in abc.txt (next).
The declaration — abc.txt
Once a site serves fragments, it can declare participation publicly with a small file
at the site root, /abc.txt. It lists which providers are authorized to supply
brand content for AI agents on that site — the same transparency model as ads.txt /
sellers.json, applied to the agentic web.
# abc.txt - Agentic Brand Content
# Declares which providers may serve AI-agent brand context on this site.
# Spec: https://brandcontent.dev
# provider_domain, relationship
shftd2.com, RESELLER
The file is optional — fragments are delivered without it.
Fields
| Field | Required | Meaning |
|---|---|---|
provider_domain |
yes | Root domain of an authorized brand-content provider's system (e.g. shftd2.com). |
relationship |
yes | DIRECT — the publisher controls the account directly; or RESELLER — the provider is authorized to resell brand content it sources on the publisher's behalf. |
Optional key=value lines a publisher may add: endpoint= (a discovery URL for the
fragment endpoint), contact=, updated=.
Format rules
- Served at
/abc.txtastext/plain, ASCII only. - One entry per line. Lines starting with
#are comments; blank lines are ignored. - Provider entry:
provider_domain, relationship— comma-separated, surrounding whitespace trimmed.relationshipis case-insensitive (DIRECT|RESELLER). - Multiple providers: one per line; order is not significant.
- Directive: a
key=valueline (e.g.endpoint=…). Keys are case-insensitive. - Forward compatibility: a conformant parser ignores lines and fields it doesn't recognise, so the format can grow without breaking older readers.
ABC is an open spec. Anyone may implement abc.txt and a compatible fragment
endpoint; reference implementations are open-source.