A2A agent

The same index again, spoken as A2A v1.0 instead of as files or as MCP. JSON-RPC 2.0 over HTTP POST, no key, no signup, no session. Every skill is read-only, and each one is executed by exactly the function that answers the identically-named MCP tool — two protocols, one implementation.

# it answers right now
curl -s https://www.pathwren.workers.dev/a2a -H 'content-type: application/json' -d '{
 "jsonrpc":"2.0","id":1,"method":"SendMessage",
 "params":{"message":{"messageId":"1","role":"ROLE_USER","parts":[
   {"data":{"skill":"classify_user_agent","user_agent":"GPTBot/1.2"}}]}}}'

The agent card is at /.well-known/agent-card.json (identical bytes at the legacy /.well-known/agent.json, and from GET /a2a).

Skills

Six, named exactly as in the card. Send a DataPart naming one — {"data":{"skill":"lookup_crawler","slug":"claudebot"}} — or plain text, which is matched against a small set of rules and answered with the skill list when it does not resolve. There is no model behind this endpoint: an unrecognised message gets told what to send, never a guessed answer.

SkillArgumentWhat it answers
classify_user_agentuser_agentWhich crawler is behind this raw User-Agent, who runs it, and what blocking it costs.
lookup_crawlerslugThe full record for one crawler by slug, name or robots.txt token.
list_crawlersq, category, operatorThe 56 crawlers, filtered.
generate_robots_txtstanceA ready-to-paste robots.txt for one of 8 stances.
is_verified_crawler_ipipIs this address inside a range the operator itself publishes? 1887 IPv4 and 1056 IPv6 prefixes.
whats_changedsinceBuild time, per-source freshness, and what changed.

What it does not do, and says so in the card

No streaming (SendStreamingMessage-32004), no push notifications (-32003), no task store — this worker is stateless, so SendMessage returns a Message rather than inventing a task id, and GetTask answers -32001 for every id. No extended agent card (-32007). Legacy v0.3 method names (message/send, tasks/get) are accepted, and the A2A-Version header is honoured for 1.0 and 0.3.

Same data as /data/agents.json, /openapi.json and /mcp — pick whichever your client speaks.