What it does
Top User-Agent strings with their traffic_class. Default analytics queries hide everything except real visitors; this tool surfaces the rest so you can see who is actually fetching the site. Pass traffic_class to filter to one bucket. The 8 classes (Phase 2 Cloudflare-compatible taxonomy): - user: real human visitor with their own browser - ai_user_action: live AI browse — a human is chatting with ChatGPT/Claude/Perplexity/Copilot and the assistant fetched the page on their behalf (counts as human attention, just AI-mediated) - ai_search: AI search-engine indexers (PerplexityBot, OAI-SearchBot, ...) — your page is a candidate answer in their index - ai_training: AI training crawlers (GPTBot, ClaudeBot, CCBot, Bytespider, ...) — your content lands in training data, no human is actively reading right now - search_index: classic search engines (Googlebot, Bingbot, Yandex, DuckDuckBot, ...) - social_unfurl: link-preview / social-card bots (Slackbot, facebookexternalhit, Twitterbot, LinkedInBot, ...) - scanner: security/uptime/perf monitoring (Censys, Pingdom, Lighthouse, headless Chrome from a cloud range, ...) - bot_other: recognized as a bot but not in any specific bucket, OR a UA we caught spoofing (e.g. a fake "GPTBot" coming from a random EC2 IP) The `humans` filter alias expands to (user, ai_user_action) — useful for "real human attention including AI-mediated".
Example prompts
Ask:
"Which bots are hitting mysite.com? Show me the top 20 user agents."
"Show me only ai_crawler user agents for the last 7 days."
"What's the user-agent breakdown for unverified_bot traffic?"
A typical response (filtered to ai_crawler):
Top user agents, ai_crawler class (last 30 days):
Mozilla/5.0 (compatible; GPTBot/1.2; +https://openai.com/gptbot)
2,847 hits
Mozilla/5.0 (compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
1,612 hits
PerplexityBot/1.0 (+https://www.perplexity.ai/bot)
802 hits
Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)
412 hits
Mozilla/5.0 (compatible; CCBot/2.0; +https://commoncrawl.org/...)
148 hits
Anthropic/Claude-Web (+https://www.anthropic.com/claude/web)
92 hits
Mozilla/5.0 (compatible; Bytespider; +https://www.bytedance.com/spider)
71 hits
Mozilla/5.0 (compatible; Applebot-Extended/1.0; +http://www.apple.com/go/applebot)
48 hits
Default analytics queries hide everything except the
user traffic class. This tool surfaces the rest. Pass
traffic_class to filter to one bucket
(user, ai_user_action, ai_crawler,
verified_search_bot, unverified_bot,
cloud_egress, headless_browser, unknown),
or omit it to see everything.
One of the more popular tools. AI crawler activity changed
substantially through 2025 and 2026, and most analytics products silently
filter it. Seeing the actual UAs lets you decide whether to
Allow: or Disallow: them in your
robots.txt, and whether AI crawler hits are a meaningful
share of your origin load.
Common follow-up: cross-reference unfamiliar UAs against Cloudflare's AI crawler taxonomy or our own AI crawler index.
Arguments
| Name | Type | Required | Description / Default |
|---|---|---|---|
site_id |
string | required | Site identifier from list_sites (8-character base32, e.g. 'wjxayhdd'). |
period |
string | optional |
Time window. Keywords: today, yesterday, last_7_days, last_30_days, last_90_days, last_12_months. Or a custom date range YYYY-MM-DD..YYYY-MM-DD (inclusive).
default: last_7_days
|
limit |
integer | optional |
Maximum number of user-agent rows to return. Capped at 1000 server-side.
default: 25
|
traffic_class |
string enum: user, ai_user_action, ai_search, ai_training, search_index, social_unfurl, scanner, bot_other, humans |
optional | Optional filter to a single class. Pass 'humans' as an alias for the union (user, ai_user_action) to see real human attention including AI-mediated browsing. |
How to call it directly
If you're integrating from your own code rather than a chat client, this is the JSON-RPC payload:
curl -X POST https://mcp-analytics.com/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "top_user_agents",
"arguments": {
"site_id": "abc12345"
}
}
}'
Token comes from /settings after you sign up. Replace any required arguments above.
Related tools
remove_site: Soft-delete a site.top_referrers: Top referring hosts.get_started_guide: Markdown walkthrough of the mcp-analytics workflow: adding sites, installing the tracker, querying analytics, custom events.get_tracking_snippet: Return the HTML <script> snippet for a given site_id.regenerate_api_token: Invalidate the current API token and issue a new one.