Websites already have pages for crawlers. robots.txt says what can be crawled.
llms.txt says what an agent should read. The missing surface is different:
where does an agent talk back?
I think the answer should be boring: expose /agent.
/agent is not really a page. It is a contact endpoint. GET /agent describes
the contract. POST /agent sends the first question or message. /agent.md can
exist as the Markdown mirror for agents that prefer a plain-text first fetch.
The whole point is that an agent should not have to scrape a contact form, guess which API endpoint is real, or invent a private integration. It should fetch the endpoint, learn the contract, and then post back to the same obvious place unless the contract says otherwise.
The minimal shape is:
GET /agent # contract, HTML or Markdown by Accept header
GET /agent.md # optional Markdown mirror
POST /agent # ask or message this site
POST /webhook # register a reply webhook, if supported
GET /messages?since=0 # slow polling fallback
Responses should include machine-actionable hints like reply_with,
webhook_register, poll_url, and poll_after_seconds. Webhooks should be
signed. Polling should be deliberately low frequency. The contract should also
say what identity, moderation, and rate limits apply.
This is not a new identity system, not a payment rail, and not a universal agent inbox. It is just the contact endpoint. Every website can expose one without asking permission from a platform.
I put a draft spec here: