# Agent content

Most "AI visibility" tools sample prompts against assistants and record citations. Punchline sees the other side: every request agents make to your site, and who arrives afterwards. The **Agent content** report turns that into a funnel and a list of things to try.

## The funnel

| Stage | Means | From |
|---|---|---|
| **Fetched** | An agent requested the page, split into *live reads* (an assistant fetching for someone right now) and *crawls* (training and search indexing) | Your edge install, classified by agent and purpose |
| **Delivered** | The agent got a usable response | Status codes and response size; needs the [Cloudflare install](https://punchlineanalytics.com/docs/install-cloudflare) |
| **Cited** | An AI assistant sent a person to the page | People arriving from ChatGPT, Perplexity, Claude, Gemini or Copilot on that page |

**Cited per 100 live** compares pages fairly: how many people arrive for every hundred times assistants read the page live. Group the funnel by page, content type or topic.

**Delivery data needs an install that sees the response.** The Next.js package runs before your page is built, so it can't see status codes; the Cloudflare Worker can. Without it, *Delivered* shows "–" and delivery findings don't appear.

**Thin** counts successful responses under 2 KB on pages without a file extension, which usually means the content only appears after JavaScript runs. Agents generally don't run it.

## Content types and topics

Pages are tagged by URL, never by visitor data. Built-in conventions cover `/pricing`, `/docs`, `/blog`, `/compare`, `/customers`, `/legal` and more. Add your own rules in **Site settings → Page rules**, one per line:

```
/learn, docs, Guides
=/pricing, pricing
/customers, case_study, Customers
```

A path matches everything under it; `=` matches one page exactly. The most specific rule wins.

## Things to try

Recommendations are rules over the funnel, each with its evidence and the previous period's numbers, so you can tell whether a change worked. They're things to test, never ranking guarantees.

| Rule | When it fires | Try |
|---|---|---|
| C1 | 20%+ of agent requests with a known status were blocked or failed (5+ requests) | Check firewall, bot-protection and robots rules; fix errors |
| C2 | Agents requested a missing page 3+ times | Publish a page there, or redirect to the closest one |
| C3 | Half or more of successful agent responses were thin (5+) | Server-render the content, or offer a markdown version |
| C4 | 10+ live reads and nobody sent | A concise answer up top, structured data, or a markdown version |
| C5 | One content type earns citations at 2× the rate of another (10+ live reads each) | Apply the better type's structure to the weaker one |
| C6 | A pricing or comparison page gets 10+ live reads | Keep it current and readable without JavaScript |

## From the API or your AI tools

`GET /v1/content/funnel` and `GET /v1/content/recommendations` ([reference](https://punchlineanalytics.com/docs/api-reference)), or the `get_content_funnel` and `get_recommendations` [MCP tools](https://punchlineanalytics.com/docs/mcp). Ask your assistant: *"What are agents reading on our site that never gets cited?"*

Group the funnel by content type in a query of your own:

```json query
{
  "date_range": { "from": "2026-09-01", "to": "2026-09-30" },
  "metrics": ["pageviews", "thin_pageviews"],
  "dimensions": ["content_type", "agent_purpose", "delivery"],
  "filters": [["visitor_type", "in", ["agent", "crawler"]]]
}
```
