{
 "id": "whoami",
 "endpoint": "https://www.pathwren.workers.dev/tools/whoami",
 "title": "Who is calling? — the one endpoint that needs nothing from you",
 "what": "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.",
 "auth": "none — no account, no key, no handshake, no session",
 "method": "GET",
 "cors": "*",
 "cache_seconds": 0,
 "parameters": [],
 "example": {
  "url": "https://www.pathwren.workers.dev/tools/whoami?&s=client-dossiers",
  "curl": "curl -s 'https://www.pathwren.workers.dev/tools/whoami?&s=client-dossiers'",
  "what_it_answers": "Your own dossier: what this host can see about the client making the request, with no argument given."
 },
 "same_answer_over_mcp": {
  "server": "ai-crawler-index",
  "endpoint": "https://www.pathwren.workers.dev/mcp",
  "method": "tools/call",
  "tool": "whoami",
  "note": "The GET endpoint calls this tool in-process through the MCP server's own JSON-RPC envelope. One implementation, two doors."
 },
 "caveats": [
  "The answer depends on your request headers, so it is not cached and carries no ETag comparison across callers.",
  "Nothing is stored. The published file it reads, /data/observed-clients.json, is built from this host's own access log and is already public.",
  "The same answer over MCP: tools/call whoami with arguments {} on any of the five servers here."
 ],
 "docs": "https://www.pathwren.workers.dev/tools/whoami.html?s=client-dossiers",
 "catalogue": "https://www.pathwren.workers.dev/tools/index.json?s=client-dossiers",
 "license": "CC0-1.0",
 "independent": true
}