{
 "tool": "robots-lint",
 "endpoint": "https://www.pathwren.workers.dev/tools/robots-lint",
 "title": "Lint a robots.txt",
 "what": "Paste a robots.txt and get every fault that makes it do something other than what it looks like: misspelled directives, a whole User-Agent string where a product token belongs, rules before any User-agent line, duplicate groups, noindex (unsupported since 2019), relative Sitemap URLs, a byte-order mark. Each finding carries the line number and the fix.",
 "auth": "none — no account, no key, no handshake, no session. CORS is open and the answer is cacheable.",
 "method": "GET, or POST with the file as the raw body",
 "parameters": [
  {
   "name": "robots_txt",
   "aliases": [
    "robots",
    "text"
   ],
   "required": true,
   "repeatable": false,
   "what": "The contents of the robots.txt file, URL-encoded. Or POST the file as the raw request body, which is what a file larger than a URL wants.",
   "becomes": "robots_txt"
  }
 ],
 "example": {
  "curl": "curl -s 'https://www.pathwren.workers.dev/tools/robots-lint?robots_txt=User-agent%3A%20GPTBot%0ADisallow%3A%20%2F%0ANoindex%3A%20%2Fprivate%0A&s=client-dossiers'",
  "url": "https://www.pathwren.workers.dev/tools/robots-lint?robots_txt=User-agent%3A%20GPTBot%0ADisallow%3A%20%2F%0ANoindex%3A%20%2Fprivate%0A&s=client-dossiers",
  "what_it_answers": "Three lines with one real fault: Noindex has not been supported since 2019 and stops nothing. The answer names the line and the fix.",
  "also": {
   "curl": "curl -s --data-binary @robots.txt 'https://www.pathwren.workers.dev/tools/robots-lint?s=client-dossiers'",
   "what": "The same lint on a file too big for a query string. POST is accepted here for exactly this reason; it is still keyless and still not JSON-RPC."
  }
 },
 "same_answer_over_mcp": {
  "note": "This endpoint does not reimplement the tool: it calls the MCP server below in-process, through that server's own JSON-RPC envelope. One implementation, two doors.",
  "server": "robots-policy-lint",
  "endpoint": "https://www.pathwren.workers.dev/mcp/robots",
  "method": "tools/call",
  "tool": "lint_robots_txt",
  "curl": "curl -s https://www.pathwren.workers.dev/mcp/robots -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"lint_robots_txt\",\"arguments\":{}}}'"
 },
 "caveats": [
  "Nothing is fetched. There is no argument that takes a URL, on this endpoint or on the MCP tool behind it, so it cannot be aimed at a host."
 ],
 "docs": "https://www.pathwren.workers.dev/tools/robots-lint.html?s=client-dossiers",
 "catalogue": "https://www.pathwren.workers.dev/tools/index.json?s=client-dossiers",
 "about_the_s_parameter": "?s=client-dossiers is how this host attributes which document sent you. It changes nothing in the answer and is not required; we publish it on our own links so we can tell what these endpoints earned.",
 "license": "CC0-1.0",
 "independent": true,
 "_about": {
  "page": "https://www.pathwren.workers.dev/bot/claudebot.html?s=client-dossiers",
  "what": "What this host recorded about the client that made this request — the requests, the status codes and the user-agent string, from its own log. Nothing else: no address is published, nothing is looked up anywhere, and there is no account to close.",
  "matched_on": "the User-Agent header you sent. If we have no page for it yet this points at the index of all of them.",
  "index": "https://www.pathwren.workers.dev/bot/index.html?s=client-dossiers"
 }
}
