ClaudeAtlasBot

ClaudeAtlasBot/1.0 (+https://claudeatlas.com/bot)

If you found this page from a User-Agent string in your server logs: that was us, and this page explains exactly what we did, why, and how to opt out.

Who we are

ClaudeAtlas is an independently maintained, open-source index of Claude ecosystem skills, plugins and MCP servers. Most of our own traffic is automated — crawlers, SEO tools and AI agents — so we run a small research crawler to measure the reciprocal question: how does the public web treat a polite, self-declared bot? To be precise about what we are: ClaudeAtlasBot is a plain crawler with a fixed probe list — no language model decides what it fetches. Servers can't see whether a model sits behind a request; they see the declaration, and that is what we measure. The rationale and scope are public: docs/reciprocal-agent-pass-scope.md.

What the bot does

How to identify it

The exact User-Agent string on every request:

ClaudeAtlasBot/1.0 (+https://claudeatlas.com/bot)

In this first version requests are not cryptographically signed, so anyone can spoof the string above. A later version will sign every request per RFC 9421 / Web Bot Auth, with a public key directory at https://claudeatlas.com/.well-known/http-message-signatures-directory — the same mechanism ClaudeAtlas already verifies on inbound traffic. Until then, a request claiming to be ClaudeAtlasBot that ignores the limits above is not us.

What we fetch

Per site, in this order, each step gated by robots.txt:

  1. /robots.txt
  2. / — three times: with our User-Agent and an HTML Accept; with our User-Agent and Accept: text/markdown, text/html;q=0.9 (does the site offer a markdown rendition to agents?); and once with a standard desktop-browser User-Agent for a lightweight cloaking comparison — status and size only.
  3. /llms.txt
  4. /llms-full.txt
  5. /.well-known/agents.json
  6. /.well-known/mcp/server-card.json
  7. /.well-known/http-message-signatures-directory
  8. /ai.txt

That is 10 requests per site at most, spread over roughly 27 seconds.

What we record — and what we don't

Recorded

  • HTTP status codes
  • Headers: server, content-type, x-robots-tag, content-signal, cf-mitigated, presence of cf-ray
  • Byte counts and redirect counts
  • robots.txt directives (which bots are named, what is disallowed, Sitemap, Content-Signal)
  • Number of JSON-LD blocks on the homepage
  • Whether a markdown rendition is offered
  • Whether each well-known path exists and looks plausible

Not recorded

  • Page text or HTML
  • Images, scripts, stylesheets (never requested)
  • Forms, cookies, session state
  • Anything behind authentication
  • Any personal data

How to block it

Add this to your robots.txt:

User-agent: ClaudeAtlasBot
Disallow: /

The resulting dataset

Every pass writes one small JSON file and one report, both public: data/reciprocal-pass.json and docs/reciprocal-pass-report.md. Methodology in one sentence: a fixed target list of operators whose bots appear in our own request log, a fixed probe set, one pass, and aggregate block / challenge / toll rates alongside robots.txt posture, markdown negotiation and agent-web standards adoption. Being blocked is a data point, not a complaint.

Contact

Open an issue at github.com/dwalshx/ClaudeAtlas/issues and mention ClaudeAtlasBot in the title. We respond within a few days and will add your domain to an exclusion list on request.

Source for the crawler: scripts/reciprocal-pass.js (scheduling) and scripts/lib/reciprocal-probe.js (the policy constants this page is rendered from).