Which AI agents support Markdown content negotiation?

2 min read Original article ↗

Status

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

Agent

Status

Mechanism

Verified

Claude Code Anthropic

Supports

Accept: text/markdown, text/html, */*

Cursor Anysphere

Supports

Accept: text/markdown, text/plain;q=0.9, */*;q=0.8

OpenClaw OpenClaw

Supports

Accept: text/markdown, text/html;q=0.9, */*;q=0.1

OpenCode SST

Supports

Accept: text/markdown;q=1.0, text/x-markdown;q=0.9, text/plain;q=0.8, text/html;q=0.7, */*;q=0.1

Codex CLI OpenAI

Partial

Follows <link rel="alternate" type="text/markdown" href="https://example.com/page.md">

Aider Aider

No

Fetches only HTML

ChatGPT (browse) OpenAI

No

Fetches only HTML

Claude.ai (web app) Anthropic

No

Fetches only HTML

Cline Cline

No

Fetches only HTML

Copilot Chat (VS Code) GitHub / Microsoft

No

Fetches only HTML

Copilot CLI GitHub / Microsoft

No

Fetches only HTML

Devin Cognition

No

Fetches only HTML

Gemini (web app) Google

No

Fetches only HTML

Gemini CLI Google

No

Fetches only HTML

Grok xAI

No

Fetches only HTML

Microsoft Copilot Microsoft

No

Fetches only HTML

Perplexity Perplexity

No

Fetches only HTML

v0 Vercel

No

Fetches only HTML

Windsurf Cognition

No

Fetches only HTML

Zed Zed Industries

No

Fetches only HTML

Last updated .

Verify an AI agent yourself

We test the matrix ourselves, but AI 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;

2. Trigger a known AI 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.