> ## 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.

> ## Agent Instructions
> Publishers integrate one API: GET https://api.shftd2.com/v1/fragment?partner_id=<account id>&page_url=<page URL>, called from their edge for AI-agent requests only, with the API key in the X-API-Key header, never in the query string.
> A 200 carries the card. A 204 means no card: serve the page unchanged.
> The management API (https://api.shftd2.com/v1/me, /v1/sites, /v1/cards, /v1/keys) is optional tooling for scripting setup. It takes its own management token (Authorization: Bearer ds_mgmt_…). Its limits (120 requests and 60 writes per minute per token) do not apply to the delivery API.
> Delivery logs reach doubleshift only through direct delivery logs (POST https://logs.shftd2.com/v1/beacon with a logs token; the edge library with a logsToken is its provided client, and a custom sender may use the same endpoint) or a Cloudflare Logpush job configured with doubleshift. Otherwise doubleshift sees only its own API activity.

# AI agents

> The canonical list of AI-agent User-Agent markers: the ones your edge gates card requests on, matched word-boundary and case-insensitive, with each agent's family and purpose.

Your edge requests a card only when one of these markers appears in the request's `User-Agent`, matched
**word-boundary, case-insensitive**. The edge library's built-in list and the Vercel and ESI regexes in
[integrate](https://docs.shftd2.com/integrate.md) mirror this table exactly; doubleshift classifies reported agents with the same
list. The machine-readable copy is `schema/agents.json` on [brandedcontent.dev](https://brandedcontent.dev).

| Marker | Family | Purpose |
| - | - | - |
| `GPTBot` | openai | training |
| `ChatGPT-User` | openai | query |
| `OAI-SearchBot` | openai | search |
| `ClaudeBot` | anthropic | training |
| `Claude-User` | anthropic | query |
| `Claude-SearchBot` | anthropic | search |
| `Google-CloudVertexBot` | google | search |
| `PerplexityBot` | perplexity | search |
| `Perplexity-User` | perplexity | query |
| `CCBot` | commoncrawl | training |
| `Meta-ExternalAgent` | meta | training |
| `meta-externalfetcher` | meta | query |
| `Bytespider` | bytedance | training |
| `YouBot` | you | search |
| `Diffbot` | diffbot | training |
| `MistralAI-User` | mistral | query |
| `Amazonbot` | amazon | unknown |

**Purpose**: `query`, a real-time fetch for a user asking now; `search`, building an AI search index;
`training`, a bulk crawl for a training corpus; `unknown`, mixed or undocumented. Robots.txt-only tokens
such as `Google-Extended` are left out: they never appear in a `User-Agent`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.