Skip to main content
Agents read your marketing site the way curl does: one GET, raw text, no JavaScript. Browser HTML spends their attention on navigation menus, cookie banners, and image grids — and a client-rendered app serves them nothing at all. Agentify converts any public page of your site into a clean markdown document built for an agent, with your agent storefront inlined so the reading agent can buy from you without leaving the page. One endpoint does the work: GET /v1/agentify/markdown?url=… returns text/markdown. Call it directly over REST, or mount the SDK middleware so your own site detects agent traffic and answers it with markdown automatically. If your site is a single-page app on a CDN with no server to mount middleware in, front it with an edge function.

The document

Every conversion has the same three-part shape: front matter, your storefront, then the page.
  1. Front matter. The page title, canonical URL, and fetch time, taken mechanically from the fetch itself — trustworthy metadata, never generated.
  2. Your storefront, inlined. What you sell, honest price one-liners, and the exact steps to buy and call, rendered from the same catalog that prices your storefront’s 402 challenges — so the inline copy cannot drift from what an agent is actually charged. It links your storefront’s llms-full.txt for the complete instructions.
  3. The page. The rest of the page as markdown, converted and cleaned as described next.

How conversion works

Agentify fetches the page and converts its HTML to markdown mechanically. A cleanup pass then removes what conversion leaves behind — dead image references, navigation debris, cookie banners, blocks duplicated for mobile and desktop layouts — while keeping every fact, number, price, and link. The cleanup is a quality pass, never a dependency: if it fails or prunes real content, the request serves the mechanical conversion instead of an error. Two page types get special handling:
  • Pages that already serve markdown. If a URL answers with text/markdown — your own content negotiation, for example — the document passes through unchanged. You wrote it for agents; Agentify does not rewrite it.
  • JavaScript-rendered pages. When a direct fetch yields an empty shell, Agentify renders the page in a headless browser and converts the rendered result. A page that still yields too little readable content answers 422 content_too_thin; the SPA setup page explains that case.

Caching

The first conversion of a page runs the full pipeline and takes a few seconds. After that, conversions cache for about a day at every layer: in the API, at its edge, and — because the response carries Cache-Control: public, max-age=86400, stale-while-revalidate=604800 plus an ETag — in any cache between the agent and the API, including your own CDN when the middleware forwards the header. After a day, a stale conversion keeps serving instantly while one refresh runs in the background, so no agent waits on a reconversion. The storefront section is composed fresh on every request and is never cached with the page. A price change shows up in the document within minutes; a page edit shows up within a day.

The Agentify key scope

Agentify calls authenticate with an API key carrying the agentify:convert scope. Mint one in the dashboard under Settings → API keys: create a key and enable the Agentify group’s Convert toggle. The scope grants GET /v1/agentify/markdown and nothing else, so the key can live on your marketing site’s server without exposing your catalog or usage APIs. Conversions are limited to 60 requests per minute per organization; the caches above keep real traffic far below that.

How detection works

The SDK middleware decides per request with one predicate over two headers, held identical across all four SDKs by shared conformance vectors:
  • Accept negotiation. Agent fetchers ask for Accept: text/markdown, text/html, */*; browsers never list text/markdown. The middleware serves markdown when it outranks text/html by q-value, or by position on a tie.
  • AI user agents. A versioned list of substrings matches the AI assistant fetchers, crawlers, and browser agents (claude, gptbot, perplexity, and kin), updated in SDK releases.
Classic search crawlers — googlebot, bingbot — are deliberately absent from the list: serving them different content than browsers is cloaking. Search engines always see exactly what your human visitors see; agents that ask for markdown, or announce themselves as AI agents, get the machine representation of the same page.

Next steps

REST quickstart

Mint a key and convert your first page with curl.

SDK middleware

Serve agent traffic markdown from your own site, in four languages.

SPA setup

Front a CDN-hosted single-page app with an edge function.

Enable agent traffic

The website markup that points agents at your storefront.