Status
Agent support matrix.
Which AI agents send Accept: text/markdown (or otherwise
advertise a Markdown preference) when their built-in browse or fetch
tools hit a URL.
Follows <link rel="alternate" type="text/markdown" href="https://example.com/page.md"> Fetches only HTML Fetches only HTML Fetches only HTML Fetches only HTML Fetches only HTML Fetches only HTML Fetches only HTML Fetches only HTML Last updated .
Verify an agent yourself
We test the matrix ourselves, but agent behavior shifts across versions, plans, and newly-added tools. You can corroborate any row — or catch a regression — by triggering an agent against your own server and reading the request from your access logs.
1. Capture the Accept header in your logs
Default log formats usually drop it. Add it once:
log_format with_accept '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'accept="$http_accept"';
access_log /var/log/nginx/access.log with_accept; LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" accept=\"%{Accept}i\"" with_accept example.com {
log {
output file /var/log/caddy/access.log
format json
}
}
# JSON access logs include request.headers.Accept by default. 2. Trigger a known agent against a specific URL
Pick a URL on your site — ideally a unique or freshly-published one so the request isn't masked by background traffic. Then ask the agent to fetch or summarize it:
- ChatGPT — "Summarize https://yoursite.com/article-xyz" (with the browse tool enabled)
- Claude — "What does https://yoursite.com/article-xyz say?" (requires web_fetch / web_search)
- Perplexity — paste the URL directly into a query
- …and so on for whichever agent you're testing.
3. Report what you saw
Grep for the URL in your access log and send the line(s) to
feedback, along with the agent you used
and the prompt you sent. The accept= field tells us
whether text/markdown was advertised.