{"chart_data":{"bing":{"color":"#737373","company":"Microsoft","first_seen":"2026-09-08 06:16:37.421063+00","last_seen":"2026-10-20 01:43:31.557542+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Bing","requests_30d":32369,"requests_7d":14409,"requests_7d_net_of_self_refresh":14397,"self_refresh_7d":12,"total_requests":34663},"chatgpt":{"color":"#10a37f","company":"OpenAI","first_seen":"2026-02-02 01:05:15.185814+00","last_seen":"2026-10-20 01:45:03.101365+00","mcp_calls_30d":184,"mcp_calls_30d_including_self_traffic":184,"name":"ChatGPT","requests_30d":14953,"requests_7d":3742,"requests_7d_net_of_self_refresh":3711,"self_refresh_7d":31,"total_requests":98102},"claude":{"color":"#7c3aed","company":"Anthropic","first_seen":"2026-02-09 07:35:55.869088+00","last_seen":"2026-10-20 01:51:29.249136+00","mcp_calls_30d":391,"mcp_calls_30d_including_self_traffic":391,"name":"Claude","requests_30d":79691,"requests_7d":3604,"requests_7d_net_of_self_refresh":3111,"self_refresh_7d":493,"total_requests":286159},"cohere":{"color":"#39594d","company":"Cohere","first_seen":"2026-03-08 09:59:25.628522+00","last_seen":"2026-10-19 15:10:06.690994+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Cohere","requests_30d":19,"requests_7d":1,"requests_7d_net_of_self_refresh":0,"self_refresh_7d":1,"total_requests":26},"copilot":{"color":"#0078d4","company":"Microsoft","first_seen":"2026-02-02 01:05:18.915313+00","last_seen":"2026-09-08 05:10:23.601046+00","mcp_calls_30d":25,"mcp_calls_30d_including_self_traffic":25,"name":"Copilot","requests_7d":0,"total_requests":26020},"cursor":{"color":"#00e5a0","company":"Cursor","first_seen":"2026-03-08 09:59:25.402411+00","last_seen":"2026-10-19 13:58:42.024031+00","mcp_calls_30d":41,"mcp_calls_30d_including_self_traffic":41,"name":"Cursor","requests_30d":13,"requests_7d":9,"total_requests":614},"deepseek":{"color":"#0066ff","company":"DeepSeek","first_seen":"2026-02-02 01:05:18.121555+00","last_seen":"2026-10-19 15:13:17.577375+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"DeepSeek","requests_30d":38,"requests_7d":1,"total_requests":3150},"gemini":{"color":"#4285f4","company":"Google","first_seen":"2026-02-02 01:05:15.916894+00","last_seen":"2026-10-19 20:05:57.550886+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Gemini","requests_30d":50,"requests_7d":13,"requests_7d_net_of_self_refresh":8,"self_refresh_7d":5,"total_requests":34758},"grok":{"color":"#1d9bf0","company":"xAI","first_seen":"2026-02-02 01:05:17.531371+00","last_seen":"2026-10-19 22:43:44.967896+00","mcp_calls_30d":5,"mcp_calls_30d_including_self_traffic":6,"name":"Grok","requests_30d":208,"requests_7d":8,"total_requests":6667},"groq":{"color":"#f55036","company":"Groq","first_seen":"2026-06-01 06:26:50.973752+00","last_seen":"2026-06-04 07:31:55.000792+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Groq","requests_7d":0,"total_requests":1},"huggingface":{"color":"#ff9d00","company":"Hugging Face","first_seen":"2026-06-01 06:26:51.049286+00","last_seen":"2026-06-04 07:31:55.803908+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Hugging Face","requests_7d":0,"total_requests":1},"kimi":{"color":"#1e6fff","company":"Moonshot AI","first_seen":"2026-07-18 23:47:24.393478+00","last_seen":"2026-10-19 17:56:49.780283+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Kimi","requests_30d":59,"requests_7d":5,"requests_7d_net_of_self_refresh":4,"self_refresh_7d":1,"total_requests":61},"meta":{"color":"#0668E1","company":"Meta","first_seen":"2026-02-09 07:41:54.288984+00","last_seen":"2026-10-19 17:07:59.787625+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Meta AI","requests_30d":101751,"requests_7d":43559,"total_requests":167784},"minimax":{"color":"#e9455e","company":"MiniMax","first_seen":"2026-07-18 23:47:24.65047+00","last_seen":"2026-07-18 23:47:24.65047+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"MiniMax","requests_7d":0,"total_requests":0},"mistral":{"color":"#ff7000","company":"Mistral AI","first_seen":"2026-06-01 06:26:51.127073+00","last_seen":"2026-10-10 18:05:08.021602+00","mcp_calls_30d":1,"mcp_calls_30d_including_self_traffic":1,"name":"Mistral","requests_30d":79,"requests_7d":0,"total_requests":119},"perplexity":{"color":"#1fb8cd","company":"Perplexity","first_seen":"2026-02-02 01:05:16.604464+00","last_seen":"2026-10-20 01:25:38.054436+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Perplexity","requests_30d":14829,"requests_7d":2402,"requests_7d_net_of_self_refresh":2401,"self_refresh_7d":1,"total_requests":44184},"qwen":{"color":"#615ced","company":"Alibaba","first_seen":"2026-07-18 23:47:24.476302+00","last_seen":"2026-10-19 15:10:06.757866+00","mcp_calls_30d":3,"mcp_calls_30d_including_self_traffic":3,"name":"Qwen","requests_30d":27,"requests_7d":2,"total_requests":29},"smithery":{"color":"#f59e0b","company":"Smithery","first_seen":"2026-03-08 09:59:25.775501+00","last_seen":"2026-04-13 01:07:16.043521+00","mcp_calls_30d":1279,"mcp_calls_30d_including_self_traffic":1279,"name":"Smithery","requests_7d":0,"total_requests":6},"webmcp":{"color":"#f4b400","company":"In-page agents (Chrome origin trial)","first_seen":"2026-07-12 04:38:39.41372+00","last_seen":"2026-10-08 01:40:14.041442+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"WebMCP","requests_30d":3,"requests_7d":0,"total_requests":20},"windsurf":{"color":"#00d4aa","company":"Codeium","first_seen":"2026-03-08 09:59:25.477802+00","last_seen":"2026-03-08 09:59:25.477802+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Windsurf","requests_7d":0,"total_requests":0},"you":{"color":"#6c5ce7","company":"You.com","first_seen":"2026-03-08 09:59:25.70207+00","last_seen":"2026-10-19 17:53:44.606544+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"You.com","requests_30d":2465,"requests_7d":202,"requests_7d_net_of_self_refresh":182,"self_refresh_7d":20,"total_requests":8429},"zai":{"color":"#5f6dff","company":"Zhipu AI","first_seen":"2026-07-18 23:47:24.570656+00","last_seen":"2026-10-19 22:00:37.900189+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Z.ai","requests_30d":24,"requests_7d":1,"total_requests":25}},"crawler_split_7d":{"buckets":{"ambiguous_data_api":{"reason":null,"requests":11293},"instructed_metadata":{"reason":null,"requests":523},"organic_content":{"collector_started":"2026-08-29","covers":"requests the Cloudflare Pages worker ran for (zone cache MISS, EXPIRED, BYPASS, DYNAMIC or REVALIDATED). Zone-cache HITs never reach the worker or its beacon; they are counted from Cloudflare analytics in organic_content_edge_cached.","reason":null,"requests":31133},"unclassified":{"reason":null,"requests":24537}},"never_sum":"organic_content and instructed_metadata answer different questions; summing them rebuilds the figure this split exists to take apart","population":{"buckets":["instructed_metadata","organic_content","ambiguous_data_api","unclassified"],"collector_coverage":{"cloudflare_forward":{"gate":["/api/","/ai/","/mcp"],"note":"a pathname matching none of these prefixes is dropped before it reaches /api/ai/track-request; recorded from the worker source on 2026-08-06 and pinned by tests/test_crawler_externality_split.py. NOTE this names a DECLARED COPY in the backend repo, not the deployed edge \u2014 the live worker is the frontend's _worker.js, which since 2026-08-29 also beacons AI-platform hits on the organic content prefixes","source":"cloudflare/worker-mcp-proxy-v3.8.5.js :: trackRequest()"},"consequence":"organic content crawling was NOT INSTRUMENTED until 2026-08-29, and the bucket IS NOW A NUMBER: the edge beacon has recorded content-page crawls continuously since. \u2605 Two consequences that outlive the fix. (1) There is NO PRE-2026-08-29 BASELINE for this bucket \u2014 any comparison spanning that date measures the instrument turning on, not the crawler. The published reach series showed +1,419.8% WoW on the first full week (34,189 vs 2,250) and that number is an artefact, not growth. (2) A ZERO over a window reaching back before 2026-08-29 still means unknown, not none; the route publishes collector_started / partial_window on the bucket so a ?days=90 read cannot be mistaken for a ?days=7 one.","content_pages_reach_neither":"content surfaces are served by Cloudflare Pages and never reach the Flask app \u2014 verified 2026-08-06: /facilities/ returns no x-dc-hub-backend header while /api/v1/ai/reach returns railway. Still true of these two collectors; see edge_organic_beacon","edge_cache_hits":"since 2026-10-14 a scheduled job pulls Cloudflare zone analytics per hour into ai_edge_crawl_hourly (crawler_edge_hits.py): AI-crawler requests on the organic content prefixes by cacheStatus. The HIT rows are the crawls the beacon cannot see, published as organic_content_edge_cached; the other statuses are a cross-check on the beacon. Sampled estimates, not rows","edge_organic_beacon":"since 2026-08-29 the LIVE Cloudflare worker (the frontend's _worker.js, not the declared copy named above) POSTs AI-platform hits on the organic content prefixes to /api/ai/track-request, which does not apply is_ai_endpoint(). This is the first collector that can see a content-page crawl. \u2605 It fires only when the Pages worker RUNS: a zone-cache HIT (Cache Rules on /facilities/, /markets/, /dcpi/, /locations/ ...) is answered before the worker, so cached crawls never reach it (measured 2026-10-14). See edge_cache_hits","flask_in_process_hook":{"gate":["^/mcp","^/api/v1/","^/api/facilities","^/api/deals","^/api/news","^/api/market","^/api/grid","^/api/site-score","^/api/ai/","^/api/renewable/","^/api/energy/","^/\\.well-known/","^/llms\\.txt","^/ai-agents\\.json","^/openapi\\.json","^/AGENTS\\.md","^/sitemap"],"note":"ai_tracking.AI_ENDPOINT_PATTERNS, imported live \u2014 the regex allowlist is_ai_endpoint() applies before any row is written"},"sitemap_fetches":"instrumented since 2026-09-05 \u2014 ^/sitemap joined the Flask hook's allowlist, and these rows classify as instructed_metadata (a discovery artefact, not a content page). \u2605 COVERAGE IS UNEVEN AND THE COUNTS ARE NOT COMPARABLE: measured that day, /sitemap.xml is edge-cached (cf-cache-status EXPIRED then HIT) so it reaches the origin only on a miss and is UNDER-COUNTED, while /sitemap-ai.xml and its shards answer DYNAMIC on every request and are seen in full. A higher count for the AI family would be a caching artefact, not more interest. If a CF cache rule ever starts caching the AI family this instrument goes blind SILENTLY \u2014 there is no signal at the origin for a request that never arrives."},"excludes":"our own internal/probe buckets (they are not rostered platforms), and rostered rows whose user-agent is a scripting/self UA. external_platform_predicate is not applied: this table's platform column is a detector output from a closed 21-key allowlist, and the roster filter admits only those keys \u2014 strictly stronger than excluding internal families from an open tag space. Proven by a guard test, not asserted. real_ua_predicate IS applied: a probe of ours carrying a platform Referer can be attributed to a real vendor by detect_platform, and its user-agent is what gives it away.","historical_reclassification":"PARTIAL, and it is not a revision. ai_requests retains endpoint + created_at, so the split can be computed over any window that table covers \u2014 this endpoint does exactly that, including for past days. What CANNOT be rebuilt is the published weekly reach series itself: it is served from ai_cumulative.requests_7d and ai_daily_stats, both of which store (platform, count) with no path, so the historical numbers cannot be re-split at their own source and are deliberately left untouched. The split is a parallel view over a different table; it will not reconcile exactly with the published series (see cross_check) and must never be presented as a correction of it.","includes":"the 21 curated vendor keys in ai_tracking.AI_PLATFORMS \u2014 the same allowlist the public /ai roster renders","never_summed":"organic_content and instructed_metadata answer different questions and are never added into one 'reach' figure. ambiguous_data_api is neither and is folded into neither.","not_excluded":"Referer is NOT retained by this channel \u2014 ai_requests has no referer column \u2014 so requests referred from our own surfaces cannot be excluded, retroactively or otherwise. detect_platform() already DISCARDS a dchub.cloud Referer when attributing a platform, so a browser on our own page is never counted as that vendor; that is a different guarantee from excluding the request, and it is the weaker one.","observations":"crawler & citation HTTP requests attributed to a rostered AI platform by User-Agent (+ Referer) \u2014 NOT agent tool calls, which arrive through the MCP gateway and never touch this table","source":"ai_requests","sql_filters":["created_at >= NOW() - INTERVAL '7 days'","LOWER(COALESCE(platform, '')) IN ('bing','chatgpt','claude','cohere','copilot','cursor','deepseek','gemini','grok','groq','huggingface','kimi','meta','minimax','mistral','perplexity','qwen','smithery','webmcp','windsurf','you','zai')","COALESCE(user_agent,'') !~* '(python-httpx|python-urllib|urllib|curl/|wget|libwww|node-fetch|undici|axios|got/|go-http|okhttp|java/|requests/|aiohttp|scrapy|httpie|restsharp|dchub|self.?heal|value-harness|regression|brain-radar|brain-v2-headless|render-verify|uptimerobot|chrome/1[2-9][0-9](\\.0)? safari|chrome/1[2-9][0-9]$|smoke test|attribution-test|-qa/|qa-judge-|acme-siting-agent|reviewer-sim|dc-hub|starterpack-verify/|starterpack-audit/|order-verify/|keyless-audit-probe/|adversarial-verify|\\(verify2\\)|cursor-mcp/1\\.0|cline-mcp/1\\.0|healthcheck/1\\.0|mistral-org-agent|^audit/1\\.0|human-simulated|slackbot|slack-imgproxy|discordbot|telegrambot|twitterbot|facebookexternalhit|facebookcatalog|linkedinbot|skypeuripreview|redditbot|iframely|embedly|quora link preview|vkshare|pinterestbot|whatsapp/|bingpreview|headlesschrome|phantomjs|firstcall-audit)'"],"statistic":"row count per path bucket","why_it_matters":"before 2026-08-06 this channel had NO exclusion of any kind, inside the codebase or out. Same class as the execute_plan p50 (#2252) that turned out to be ~80% our own probes and read 786ms faster than the truth \u2014 bigger surface.","window":"7 days, rolling, ending now"},"read_more":"/api/v1/ai/crawler-split?days=7&by_platform=1","rows_classified":67486,"window_days":7},"mcp_calls_excluded":{"basis":"mcp_calls_30d excludes MCP tool calls whose session_id is declared operator self-traffic in mcp_calls_deloop.self_traffic_session_prefixes, or whose client_name is declared operator self-traffic in mcp_calls_deloop.self_traffic_client_names (e.g. our own Grok Bot connector, hub-grok-bot). These are NOT inferred from the row: the operator's own agent client writes an mcp_client and user_agent byte-identical to a prospect's, so the exclusion is a named fact rather than a behavioural guess. mcp_calls_30d_including_self_traffic is the unfiltered figure, published so the subtraction can be audited or added back.","mcp_calls_removed":{"grok":1},"mcp_calls_removed_total":1,"self_traffic_clients":["claude-code-mpp-check","dchub-growth-audit","hub-grok-bot","mcp-discovery-measurement"],"self_traffic_sessions":["034ab906","1ec4fcee","21742a34","25d408c2","37df5d71","45e1f028","4ff11385","88e20dac","8c8e1d0d","9132f6e1","9902104e","9e6d2607","a83eda95","b20db7cf","b9677a81","c4e52fe6","df70fb8d","diag","e59b23dd","f9608636","f9c501b0","fc01ccc1"]},"platforms":{"bing":{"color":"#737373","company":"Microsoft","first_seen":"2026-09-08 06:16:37.421063+00","last_seen":"2026-10-20 01:43:31.557542+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Bing","requests_30d":32369,"requests_7d":14409,"requests_7d_net_of_self_refresh":14397,"self_refresh_7d":12,"total_requests":34663},"chatgpt":{"color":"#10a37f","company":"OpenAI","first_seen":"2026-02-02 01:05:15.185814+00","last_seen":"2026-10-20 01:45:03.101365+00","mcp_calls_30d":184,"mcp_calls_30d_including_self_traffic":184,"name":"ChatGPT","requests_30d":14953,"requests_7d":3742,"requests_7d_net_of_self_refresh":3711,"self_refresh_7d":31,"total_requests":98102},"claude":{"color":"#7c3aed","company":"Anthropic","first_seen":"2026-02-09 07:35:55.869088+00","last_seen":"2026-10-20 01:51:29.249136+00","mcp_calls_30d":391,"mcp_calls_30d_including_self_traffic":391,"name":"Claude","requests_30d":79691,"requests_7d":3604,"requests_7d_net_of_self_refresh":3111,"self_refresh_7d":493,"total_requests":286159},"cohere":{"color":"#39594d","company":"Cohere","first_seen":"2026-03-08 09:59:25.628522+00","last_seen":"2026-10-19 15:10:06.690994+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Cohere","requests_30d":19,"requests_7d":1,"requests_7d_net_of_self_refresh":0,"self_refresh_7d":1,"total_requests":26},"copilot":{"color":"#0078d4","company":"Microsoft","first_seen":"2026-02-02 01:05:18.915313+00","last_seen":"2026-09-08 05:10:23.601046+00","mcp_calls_30d":25,"mcp_calls_30d_including_self_traffic":25,"name":"Copilot","requests_7d":0,"total_requests":26020},"cursor":{"color":"#00e5a0","company":"Cursor","first_seen":"2026-03-08 09:59:25.402411+00","last_seen":"2026-10-19 13:58:42.024031+00","mcp_calls_30d":41,"mcp_calls_30d_including_self_traffic":41,"name":"Cursor","requests_30d":13,"requests_7d":9,"total_requests":614},"deepseek":{"color":"#0066ff","company":"DeepSeek","first_seen":"2026-02-02 01:05:18.121555+00","last_seen":"2026-10-19 15:13:17.577375+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"DeepSeek","requests_30d":38,"requests_7d":1,"total_requests":3150},"gemini":{"color":"#4285f4","company":"Google","first_seen":"2026-02-02 01:05:15.916894+00","last_seen":"2026-10-19 20:05:57.550886+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Gemini","requests_30d":50,"requests_7d":13,"requests_7d_net_of_self_refresh":8,"self_refresh_7d":5,"total_requests":34758},"grok":{"color":"#1d9bf0","company":"xAI","first_seen":"2026-02-02 01:05:17.531371+00","last_seen":"2026-10-19 22:43:44.967896+00","mcp_calls_30d":5,"mcp_calls_30d_including_self_traffic":6,"name":"Grok","requests_30d":208,"requests_7d":8,"total_requests":6667},"groq":{"color":"#f55036","company":"Groq","first_seen":"2026-06-01 06:26:50.973752+00","last_seen":"2026-06-04 07:31:55.000792+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Groq","requests_7d":0,"total_requests":1},"huggingface":{"color":"#ff9d00","company":"Hugging Face","first_seen":"2026-06-01 06:26:51.049286+00","last_seen":"2026-06-04 07:31:55.803908+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Hugging Face","requests_7d":0,"total_requests":1},"kimi":{"color":"#1e6fff","company":"Moonshot AI","first_seen":"2026-07-18 23:47:24.393478+00","last_seen":"2026-10-19 17:56:49.780283+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Kimi","requests_30d":59,"requests_7d":5,"requests_7d_net_of_self_refresh":4,"self_refresh_7d":1,"total_requests":61},"meta":{"color":"#0668E1","company":"Meta","first_seen":"2026-02-09 07:41:54.288984+00","last_seen":"2026-10-19 17:07:59.787625+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Meta AI","requests_30d":101751,"requests_7d":43559,"total_requests":167784},"minimax":{"color":"#e9455e","company":"MiniMax","first_seen":"2026-07-18 23:47:24.65047+00","last_seen":"2026-07-18 23:47:24.65047+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"MiniMax","requests_7d":0,"total_requests":0},"mistral":{"color":"#ff7000","company":"Mistral AI","first_seen":"2026-06-01 06:26:51.127073+00","last_seen":"2026-10-10 18:05:08.021602+00","mcp_calls_30d":1,"mcp_calls_30d_including_self_traffic":1,"name":"Mistral","requests_30d":79,"requests_7d":0,"total_requests":119},"perplexity":{"color":"#1fb8cd","company":"Perplexity","first_seen":"2026-02-02 01:05:16.604464+00","last_seen":"2026-10-20 01:25:38.054436+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Perplexity","requests_30d":14829,"requests_7d":2402,"requests_7d_net_of_self_refresh":2401,"self_refresh_7d":1,"total_requests":44184},"qwen":{"color":"#615ced","company":"Alibaba","first_seen":"2026-07-18 23:47:24.476302+00","last_seen":"2026-10-19 15:10:06.757866+00","mcp_calls_30d":3,"mcp_calls_30d_including_self_traffic":3,"name":"Qwen","requests_30d":27,"requests_7d":2,"total_requests":29},"smithery":{"color":"#f59e0b","company":"Smithery","first_seen":"2026-03-08 09:59:25.775501+00","last_seen":"2026-04-13 01:07:16.043521+00","mcp_calls_30d":1279,"mcp_calls_30d_including_self_traffic":1279,"name":"Smithery","requests_7d":0,"total_requests":6},"webmcp":{"color":"#f4b400","company":"In-page agents (Chrome origin trial)","first_seen":"2026-07-12 04:38:39.41372+00","last_seen":"2026-10-08 01:40:14.041442+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"WebMCP","requests_30d":3,"requests_7d":0,"total_requests":20},"windsurf":{"color":"#00d4aa","company":"Codeium","first_seen":"2026-03-08 09:59:25.477802+00","last_seen":"2026-03-08 09:59:25.477802+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Windsurf","requests_7d":0,"total_requests":0},"you":{"color":"#6c5ce7","company":"You.com","first_seen":"2026-03-08 09:59:25.70207+00","last_seen":"2026-10-19 17:53:44.606544+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"You.com","requests_30d":2465,"requests_7d":202,"requests_7d_net_of_self_refresh":182,"self_refresh_7d":20,"total_requests":8429},"zai":{"color":"#5f6dff","company":"Zhipu AI","first_seen":"2026-07-18 23:47:24.570656+00","last_seen":"2026-10-19 22:00:37.900189+00","mcp_calls_30d":0,"mcp_calls_30d_including_self_traffic":0,"name":"Z.ai","requests_30d":24,"requests_7d":1,"total_requests":25}},"platforms_active":20,"reach_definition":"crawler & citation requests by AI-platform user-agent (NOT agent tool calls). NO externality filter is applied to this figure: DC Hub's own instructed fetches are included. \u2605 2026-09-05 \u2014 an earlier version of this definition said the self-traffic component could not be removed. That was wrong and is withdrawn (the wording is not restated here: this payload is machine-read, and quoting a false clause leaves it extractable). One large, named component CAN be subtracted and now is: each platform in chart_data carries self_refresh_7d (its requests to endpoints only our own dashboards poll, per ai_tracking.FEED_SELF_REFRESH_ENDPOINTS) and requests_7d_net_of_self_refresh. Measured that day this was 24.7% of claude, 17.1% of you, 12.6% of copilot and 11.3% of gemini \u2014 and 0.0% of perplexity, 0.1% of chatgpt. \u2605 2026-09-05, SEPARATE CORRECTION, and a DISCONTINUITY a reader must not mistake for a collapse: plain Googlebot no longer attributes to `gemini`. Measured that day, 837 of 837 gemini rows in 7d were `Googlebot/2.1` \u2014 Google SEARCH's crawler \u2014 with Google-Extended and GoogleOther at zero, so that bar was entirely SEO crawl volume under an AI platform's name. Googlebot now resolves to seo_bot and is dropped. CONSEQUENCE: gemini's forward reach falls to roughly zero while its all-time and historical daily figures keep the OLD basis \u2014 those rows are already written and are not revised. A drop here is this attribution change, NOT Gemini leaving. \u2605 2026-09-08, A SECOND DISCONTINUITY of the same kind, and it reverses the sentence that stood here: Bingbot no longer attributes to `copilot`. It now has its own `bing` bucket. The note here previously said Copilot was deliberately NOT narrowed because it crawls as Bingbot and has no other surface \u2014 still true, and the reason this is a RENAME of the only Copilot-adjacent signal rather than a discovery. What forced it: the edge beacon now records Bingbot on CONTENT pages, thousands of page fetches a day against the ~12/day of /api traffic the Flask hook saw, and pouring a search-index crawl of that size into an assistant's bar is the gemini failure at ~100x volume. CONSEQUENCE: `copilot` forward reach falls to roughly zero while its all-time and historical daily figures keep the OLD basis. A drop there is this attribution change, NOT Microsoft leaving. `copilot` keeps its Copilot marker, so a real Copilot-branded UA still attributes the moment one appears. `bing` is NOT in ai_platform_canon._VENDOR_ALIASES, so it is measured without being counted as an AI platform. \u2605 GEMINI SERIES BREAKS TWICE \u2014 figures across these dates are NOT comparable. (1) 2026-09-05: Googlebot (Google Search) removed, as above. (2) 2026-09-26: Google's user-triggered Gemini fetchers are counted \u2014 Google-Agent, Google-NotebookLM and Google-GeminiNotebook (the user agents Google documents for fetches a Gemini user's request triggers). Googlebot stays excluded. A rise in `gemini` from 2026-09-26 is this attribution change, not a sudden Gemini adoption. (3) 2026-09-30: a request whose whole user agent is the bare string `Google` is counted too. It is the agent seen on a Gemini user's /llms.txt fetch (Google network, ASN 15169); two such requests were observed, so treat the attribution as inferred. What is still NOT subtracted is instructed-fetch traffic on ordinary content and API paths; crawler_split_7d answers that by path. Read both before quoting this figure.","real_tool_use_7d":{"agents_7d":66,"basis":"COUNT(DISTINCT agent_id) / COUNT(*) FROM mcp_calls_identity WHERE is_public_ip AND is_real_external, rolling window ending now. Identity: agent_id = md5(first public X-Forwarded-For token), NULL for Cloudflare POP ranges (edge proxies never count as agents); is_public_ip drops private/CGNAT ranges. Exclusions: is_real_external = this module's real_calls_predicate() rendered into the view, plus the view's internal-IP and scripted-UA backstops \u2014 crawlers, probes, QA harnesses and self-traffic are OUT. calls counts every real-external call (including CF-POP rows that carry no agent identity). An IP-derived PROXY for agents: NAT under-counts, rotating egress over-counts.","calls_7d":370,"net_of_top_caller":{"agents":65,"calls":299,"concentration_flag":false,"top_caller_calls":71,"top_caller_pct":19.2}},"recent_activity":[{"color":"#7c3aed","endpoint":"/api/v1/site/stats","platform":"Claude","platform_key":"claude","time_ago":"4m ago","timestamp":"2026-10-20T01:47:30.268658+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/ada-infrastructure-ada-infrastructure-docklands-ea53f8ff","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"7m ago","timestamp":"2026-10-20T01:45:03.101365+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/vodafone-winterton-cable-landing-station-69576eef","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"7m ago","timestamp":"2026-10-20T01:44:48.341153+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/africa-data-centres-africa-data-centres-lagos-los1-lagos-b2f5cd61","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"7m ago","timestamp":"2026-10-20T01:44:43.789755+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/acer-edc-acer-edc-fa8a2f78","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:23.330102+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/keppel-data-centres-1-net-north-data-center-62e25be7","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:14.784421+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/1-telecom-servicos-de-internet-ltda-1-telecom-caruaru-c7b1b9c6","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:13.061649+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/afranet-tehran-b03f4948","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:12.010352+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/adyl-telecom-adyl-telecom-porto-alegre-a881ecbf","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:08.970041+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/quality-technology-services-qts-ashburn-lockridge-60ffc0bc","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:07.164836+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/360-tcs-llc-73d0b34d","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:06.200618+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/3-habour-view-philipsburg-3-habour-view-philipsburg-d50180ac","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:03.299415+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/adaniconnex-adaniconnex-vishakhapatnam-51bb30d3","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:44:01.953430+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/digital-realty-digital-realty-none-ac5e7db5","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:43:59.752776+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/amazon-web-services-amazon-data-svcs-inc-pne100-febb5d71","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:43:59.018134+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/asia-isp-co-limited-asia-isp-shanghai-d6f0e9ce","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:43:56.240903+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/alliance-site-4a37fdae","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:43:53.404159+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/adeodc-adeo-datacenter-9fbea123","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:43:51.131319+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/amazon-web-services-amazon-data-services-inc-iad-550-louisa-reb-b36c7273","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:43:49.400125+00:00"},{"color":"#10a37f","endpoint":"/api/v1/facility/365-data-centers-herndon-9b6d1beb","platform":"ChatGPT","platform_key":"chatgpt","time_ago":"8m ago","timestamp":"2026-10-20T01:43:48.599899+00:00"}],"requests_7d":67958,"requests_7d_daily":67959,"requests_daily_avg_7d":9708,"requests_prior_7d_daily":47389,"source":"railway","success":true,"total_requests_all_time":710818,"total_requests_today":9708,"total_requests_today_is_actually":"7-day daily average (requests_7d / 7)","tracking":"persistent","wow_pct":43.4,"wow_unavailable_reason":null}
