curl -s https://www.pathwren.workers.dev/crawler/chatgpt-user.json   # this page, as JSON

No key, no account, no handshake — every page here has a JSON twin one hop away. Machine doors: 6 keyless GET tools · documents.json · changes · llms.txt · openapi.json · agent card · mcp · a2a

ChatGPT-User

OpenAI · User-triggered fetchers · json

User-agent: ChatGPT-User
Disallow: /
robots.txt tokenChatGPT-User
User-agent containsChatGPT-User
OperatorOpenAI
CategoryUser-triggered fetchers
robots.txtobeys robots.txt (documented)
Verify bypublished IP ranges
Published ranges213 IPv4 + 0 IPv6 · json · source

What it is

Fetches a single page at the moment a user or a ChatGPT agent asks for it — a pasted link, a browsing step, an Operator task. One human intent, one request. OpenAI states these fetches are not used for training.

What blocking it costs you

ChatGPT cannot open your pages when a user explicitly asks it to. The user sees a fetch failure. This is usually the last bot anyone means to block.

Full user-agent string

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Safari/537.36; compatible; ChatGPT-User/1.0; +https://openai.com/bot

Allow it instead

User-agent: ChatGPT-User
Allow: /

Ask this page a question, with one GET

A question about this page, answered by a call you can make right now — no key, no account, no JSON-RPC, nothing to assemble. The query string is already filled in with this page's own subject.

curl -s 'https://www.pathwren.workers.dev/tools/verification-methods?crawler=chatgpt-user&s=client-dossiers'

Every parameter above is a value the endpoint reads, not an address it visits: nothing is fetched on your behalf. Called without any parameter, each endpoint returns its own specification instead of an error. All of them.

Operator documentation: https://platform.openai.com/docs/bots
Machine copies: json · markdown
Policies that name this crawler: allow-all · block-all-ai · allow-ai-search-only · maximum-ai-visibility