Who is calling? — the one endpoint that needs nothing from you

Takes no arguments at all. It answers about the request you just made: the user-agent you sent, the address you came from, whether the crawler index recognises you, whether any operator publishes a prefix containing your address, the class this host's own instrument books you as, and whether we have seen you here before and what you fetched. Every fact comes from your own request headers or from a file this host already publishes; nothing is fetched and nothing about you is invented.

Copy this

curl -s 'https://www.pathwren.workers.dev/tools/whoami?s=client-dossiers'

Your own dossier: what this host can see about the client making the request, with no argument given.

curl -s 'https://www.pathwren.workers.dev/tools/whoami?spec=1&s=client-dossiers'

The specification of this endpoint instead of the answer: what it returns, which MCP tool answers it, and the caveats.

Run it in a browser — it answers JSON with access-control-allow-origin: *, so fetch() works from any page with no proxy.

No setup at all

Parameters

None. This endpoint takes no arguments at all — that is the point of it. Every other endpoint here needs something you have to supply; this one needs nothing, so it is the one you can call before you know anything about this host.

The same tool over MCP

This endpoint holds no copy of the logic: it calls whoami on the ai-crawler-index MCP server in-process, through that server's own JSON-RPC envelope. One implementation, two doors — an answer that changes here changed there.

curl -s https://www.pathwren.workers.dev/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"whoami","arguments":{}}}'

What it will not do

Also here