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

# Serve AI agents branded content, and get paid for bot traffic

> doubleshift is an ABC (Agentic Branded Content) provider: your site serves a sponsored brand card to AI agents only, and humans see the page unchanged.

export const Pill = ({variant = "alpha", children}) => <span className={`ds-pill ${variant}`}>{children}</span>;

AI agents read your pages to answer their users' questions, and today you get nothing back. ABC adds a
paid layer on top of that traffic. For AI-agent requests only, your edge fetches a **brand card** matched
to what the page is about and inlines it: a carmaker on an auto review, a skincare brand on a beauty
article. You are paid for the agent visit, the agent gets clean structured context, and a human is served
the page unchanged.

## How it works

Your CDN edge classifies every incoming request by its `User-Agent`:

1. A visitor, human or AI agent, requests a page.
2. For an **AI agent**, your edge calls the doubleshift **fragment endpoint** to fetch a card and inlines it just before `</body>`.
3. doubleshift returns the card (<Pill variant="code-200">200</Pill>) or, when no brand is eligible, a no-fill (<Pill variant="code-204">204</Pill>).
4. A **human** is served the page unchanged, and doubleshift is never called.
5. If the call is slow, fails, or returns a no-fill, your edge serves the page without a card. Nothing breaks.

<Frame caption="The publisher edge classifies each request by User-Agent. Only AI agents trigger a card from GET /fragment; humans get the page unchanged.">
  <img src="https://mintcdn.com/doubleshift/snaBZNZYPEBgZPe2/images/diagrams/abc-flow.svg?fit=max&auto=format&n=snaBZNZYPEBgZPe2&q=85&s=58333a056d92eaab663b8f34e2dca035" alt="ABC request flow: visitor to publisher edge to doubleshift, branching on User-Agent" width="720" height="400" data-path="images/diagrams/abc-flow.svg" />
</Frame>

## What ABC is not

Being precise about the boundaries is faster than describing them:

* **Not a paywall, and not a licensing deal.** ABC never blocks, gates or licenses your editorial content. The agent still reads the page in full; the card sits alongside it.
* **Not a change to the human page.** Humans never receive a card, and your edge never calls doubleshift for them.
* **Not client-side.** The card is inlined at your edge, server-side. No script runs in a browser.
* **Not a guarantee of citation.** Serving a card puts branded context in front of an agent. What the agent does with it afterwards is not something any provider can promise.

## Sites, fragments and cards

Three objects. You own the first two and the rules the third has to satisfy:

| Object       | What it is                                                                      | Who handles it                                                                                               |
| ------------ | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Site**     | A domain you publish, e.g. `sillage-mag.fr`.                                    | You register it.                                                                                             |
| **Fragment** | One card slot on a site: the unit your edge calls. Its id is the `fragment_id`. | You define it, and its targeting.                                                                            |
| **Card**     | The branded-content article served to an agent.                                 | Created in the console today. doubleshift picks an eligible one per request; you never map a card to a page. |

## What you control

* **Where the slots are.** One fragment per distinct slot, on the sites you choose. See [Fragments](/fragments).
* **What you accept into them.** Per-fragment key-values and a `match_mode` policy decide which cards are eligible at all. See [Targeting](/targeting).
* **When it stops.** Pausing a fragment in the console makes the endpoint return a no-fill for new requests, with no edge change on your side. A card already cached against a URL stays available for the rest of its cache window.

## Next steps

<CardGroup cols={2}>
  <Card title="Integrate your edge" icon="server" href="/get-started">
    The shortest path from an account to a card on a live page, with a way to prove it works.
  </Card>

  <Card title="See what an agent receives" icon="file-code" href="/cards">
    The actual card markup, its size, and how cards are built.
  </Card>
</CardGroup>
