{"today":{"days":1,"from":"2026-09-23","to":"2026-09-23","detail_days":1,"data_days_available":1,"coverage":"complete","hits_total":4914,"hits_excluding_internal":4910,"by_class":{"seo_crawler":1692,"search_crawler":880,"ai_agent":434,"browser":1231,"unknown":136,"other_bot":512,"sdk_client":25,"internal":4},"ai_agent_by_family":{"OAI-SearchBot":39,"PerplexityBot":14,"YouBot":34,"ChatGPT-User":58,"Amazonbot":165,"Claude-User":15,"ClaudeBot":53,"Claude-Code":51,"Bytespider":3,"GPTBot":1,"DuckAssistBot":1},"ai_agent_by_trigger":{"total":434,"user_initiated":124,"automated":309,"ambiguous":1,"unattributed":0,"automated_by_kind":{"search_index":252,"training":57}},"top_routes_by_class":{"seo_crawler":[{"route":"/alternative-to/:slug","hits":734},{"route":"/vendor/:slug","hits":434},{"route":"/compare/:slug","hits":319},{"route":"/best/:slug","hits":70},{"route":"/trends/:slug","hits":42},{"route":"__other_pages__","hits":34},{"route":"/robots.txt","hits":9},{"route":"/this-week","hits":9},{"route":"/category/:slug","hits":7},{"route":"/digest/:slug","hits":4}],"search_crawler":[{"route":"/vendor/:slug","hits":635},{"route":"/alternative-to/:slug","hits":75},{"route":"__other_pages__","hits":44},{"route":"/compare/:slug","hits":24},{"route":"/best/:slug","hits":16},{"route":"/llm-api-pricing","hits":8},{"route":"/shutdowns","hits":8},{"route":"/robots.txt","hits":6},{"route":"/hetzner-pricing-2026","hits":6},{"route":"/ai-coding-tools-pricing","hits":6}],"ai_agent":[{"route":"/vendor/:slug","hits":146},{"route":"/alternative-to/:slug","hits":121},{"route":"/compare/:slug","hits":24},{"route":"/hetzner-pricing-2026","hits":20},{"route":"/robots.txt","hits":16},{"route":"/","hits":10},{"route":"/sitemap.xml","hits":8},{"route":"/gcp-free-tier-2026","hits":8},{"route":"__other_pages__","hits":8},{"route":"/category/:slug","hits":7}],"browser":[{"route":"/vendor/:slug","hits":632},{"route":"/compare/:slug","hits":109},{"route":"/alternative-to/:slug","hits":84},{"route":"__other_pages__","hits":58},{"route":"/","hits":45},{"route":"/category/:slug","hits":27},{"route":"/ai-coding-tools-pricing","hits":23},{"route":"/best/:slug","hits":20},{"route":"/gcp-free-tier-2026","hits":19},{"route":"/free-llm-apis","hits":17}],"unknown":[{"route":"/","hits":57},{"route":"__other_pages__","hits":36},{"route":"/vendor/:slug","hits":22},{"route":"/robots.txt","hits":6},{"route":"/api/docs","hits":4},{"route":"/api/newest","hits":4},{"route":"/api-development-alternatives","hits":2},{"route":"/email-comparison-2026","hits":1},{"route":"/category/:slug","hits":1},{"route":"/changes","hits":1}],"other_bot":[{"route":"/vendor/:slug","hits":274},{"route":"__other_pages__","hits":64},{"route":"/alternative-to/:slug","hits":44},{"route":"/category/:slug","hits":36},{"route":"/compare/:slug","hits":21},{"route":"/robots.txt","hits":14},{"route":"/","hits":7},{"route":"/storage-comparison-2026","hits":6},{"route":"/ai-coding-tools-pricing","hits":5},{"route":"/reports/:slug","hits":3}],"sdk_client":[{"route":"__other_pages__","hits":11},{"route":"/","hits":4},{"route":"/vendor/:slug","hits":4},{"route":"/api/changes","hits":2},{"route":"/security-alternatives","hits":1},{"route":"/github-actions-alternatives","hits":1},{"route":"/testing-free-tier-comparison-2026","hits":1},{"route":"__unmatched__","hits":1}],"internal":[{"route":"__other_pages__","hits":4}]},"not_found_total":298,"not_found_by_class":{"unknown":162,"seo_crawler":11,"browser":85,"other_bot":3,"search_crawler":6,"sdk_client":30,"ai_agent":1,"internal":0},"redirect_total":72,"redirects_by_class":{"search_crawler":9,"unknown":4,"browser":37,"seo_crawler":6,"other_bot":12,"ai_agent":3,"sdk_client":1,"internal":0},"pre_split_dates":[]},"last_7d":{"days":7,"from":"2026-09-17","to":"2026-09-23","detail_days":7,"data_days_available":7,"coverage":"complete","hits_total":175177,"hits_excluding_internal":174884,"by_class":{"seo_crawler":12144,"search_crawler":21890,"ai_agent":10834,"browser":44445,"unknown":75145,"other_bot":8376,"sdk_client":2050,"internal":293},"ai_agent_by_family":{"OAI-SearchBot":704,"PerplexityBot":2067,"YouBot":229,"ChatGPT-User":1034,"Amazonbot":3171,"Claude-User":253,"ClaudeBot":2411,"Claude-Code":618,"Bytespider":108,"GPTBot":8,"DuckAssistBot":19,"meta-externalagent":42,"MistralAI-User":9,"cohere-ai":1,"CCBot":160},"ai_agent_by_trigger":{"total":10834,"user_initiated":1914,"automated":8901,"ambiguous":19,"unattributed":0,"automated_by_kind":{"search_index":6171,"training":2730}},"top_routes_by_class":{"seo_crawler":[{"route":"/vendor/:slug","hits":5235},{"route":"/alternative-to/:slug","hits":3069},{"route":"__other_pages__","hits":2269},{"route":"/compare/:slug","hits":930},{"route":"/best/:slug","hits":203},{"route":"/trends/:slug","hits":153},{"route":"/robots.txt","hits":85},{"route":"/category/:slug","hits":73},{"route":"/digest/:slug","hits":38},{"route":"/this-week","hits":23}],"search_crawler":[{"route":"/vendor/:slug","hits":15383},{"route":"__other_pages__","hits":2820},{"route":"/compare/:slug","hits":1051},{"route":"/alternative-to/:slug","hits":659},{"route":"/category/:slug","hits":215},{"route":"/best/:slug","hits":208},{"route":"/robots.txt","hits":109},{"route":"/","hits":99},{"route":"/llm-api-pricing","hits":91},{"route":"/trends/:slug","hits":77}],"ai_agent":[{"route":"__other_pages__","hits":3749},{"route":"/vendor/:slug","hits":3462},{"route":"/alternative-to/:slug","hits":1869},{"route":"/hetzner-pricing-2026","hits":355},{"route":"/compare/:slug","hits":228},{"route":"/category/:slug","hits":157},{"route":"/","hits":142},{"route":"/best/:slug","hits":110},{"route":"/robots.txt","hits":102},{"route":"/trends/:slug","hits":65}],"browser":[{"route":"/search","hits":19521},{"route":"/vendor/:slug","hits":8004},{"route":"__other_pages__","hits":7034},{"route":"/alternative-to/:slug","hits":3260},{"route":"/compare/:slug","hits":1782},{"route":"/","hits":1254},{"route":"/category/:slug","hits":481},{"route":"/badge/:slug","hits":298},{"route":"/this-week","hits":238},{"route":"/ai-coding-tools-pricing","hits":226}],"unknown":[{"route":"__other_pages__","hits":37224},{"route":"/vendor/:slug","hits":10878},{"route":"/compare/:slug","hits":6761},{"route":"/alternative-to/:slug","hits":3835},{"route":"/api/changes","hits":3415},{"route":"/category/:slug","hits":2124},{"route":"/best/:slug","hits":1525},{"route":"/api/newest","hits":1303},{"route":"/api/categories","hits":1293},{"route":"/digest/:slug","hits":963}],"other_bot":[{"route":"__other_pages__","hits":3643},{"route":"/vendor/:slug","hits":3513},{"route":"/alternative-to/:slug","hits":532},{"route":"/compare/:slug","hits":257},{"route":"/best/:slug","hits":102},{"route":"/robots.txt","hits":59},{"route":"/category/:slug","hits":39},{"route":"/","hits":27},{"route":"/monitoring-comparison-2026","hits":16},{"route":"/sitemap.xml","hits":15}],"sdk_client":[{"route":"__other_pages__","hits":1072},{"route":"__unmatched__","hits":405},{"route":"/vendor/:slug","hits":162},{"route":"/","hits":153},{"route":"/trends/:slug","hits":62},{"route":"/criteria","hits":41},{"route":"/monitoring-comparison-2026","hits":28},{"route":"/llm-api-pricing","hits":21},{"route":"/api/offers","hits":17},{"route":"/pricing-changes","hits":12}],"internal":[{"route":"/health","hits":134},{"route":"__other_pages__","hits":81},{"route":"/api/pageviews","hits":27},{"route":"/api/traffic","hits":27},{"route":"/api/query-log","hits":18},{"route":"__unmatched__","hits":3},{"route":"/robots.txt","hits":3}]},"not_found_total":11857,"not_found_by_class":{"unknown":1962,"seo_crawler":141,"browser":8245,"other_bot":443,"search_crawler":202,"sdk_client":175,"ai_agent":689,"internal":0},"redirect_total":1681,"redirects_by_class":{"search_crawler":89,"unknown":213,"browser":596,"seo_crawler":98,"other_bot":327,"ai_agent":305,"sdk_client":53,"internal":0},"pre_split_dates":[]},"last_30d":{"days":30,"from":"2026-08-25","to":"2026-09-23","detail_days":7,"data_days_available":30,"coverage":"complete; hits_total still includes non-resolving requests on 2026-08-25, recorded before the outcome split on 2026-08-25","hits_total":585174,"hits_excluding_internal":575939,"by_class":{"seo_crawler":39913,"search_crawler":78550,"ai_agent":50748,"browser":141913,"unknown":204289,"other_bot":29994,"sdk_client":30532,"internal":9235},"ai_agent_by_family":{"OAI-SearchBot":704,"PerplexityBot":2067,"YouBot":229,"ChatGPT-User":1034,"Amazonbot":3171,"Claude-User":253,"ClaudeBot":2411,"Claude-Code":618,"Bytespider":108,"GPTBot":8,"DuckAssistBot":19,"meta-externalagent":42,"MistralAI-User":9,"cohere-ai":1,"CCBot":160},"ai_agent_by_trigger":{"total":50748,"user_initiated":1914,"automated":8901,"ambiguous":19,"unattributed":39914,"automated_by_kind":{"search_index":6171,"training":2730}},"top_routes_by_class":{"seo_crawler":[{"route":"/vendor/:slug","hits":5235},{"route":"/alternative-to/:slug","hits":3069},{"route":"__other_pages__","hits":2269},{"route":"/compare/:slug","hits":930},{"route":"/best/:slug","hits":203},{"route":"/trends/:slug","hits":153},{"route":"/robots.txt","hits":85},{"route":"/category/:slug","hits":73},{"route":"/digest/:slug","hits":38},{"route":"/this-week","hits":23}],"search_crawler":[{"route":"/vendor/:slug","hits":15383},{"route":"__other_pages__","hits":2820},{"route":"/compare/:slug","hits":1051},{"route":"/alternative-to/:slug","hits":659},{"route":"/category/:slug","hits":215},{"route":"/best/:slug","hits":208},{"route":"/robots.txt","hits":109},{"route":"/","hits":99},{"route":"/llm-api-pricing","hits":91},{"route":"/trends/:slug","hits":77}],"ai_agent":[{"route":"__other_pages__","hits":3749},{"route":"/vendor/:slug","hits":3462},{"route":"/alternative-to/:slug","hits":1869},{"route":"/hetzner-pricing-2026","hits":355},{"route":"/compare/:slug","hits":228},{"route":"/category/:slug","hits":157},{"route":"/","hits":142},{"route":"/best/:slug","hits":110},{"route":"/robots.txt","hits":102},{"route":"/trends/:slug","hits":65}],"browser":[{"route":"/search","hits":19521},{"route":"/vendor/:slug","hits":8004},{"route":"__other_pages__","hits":7034},{"route":"/alternative-to/:slug","hits":3260},{"route":"/compare/:slug","hits":1782},{"route":"/","hits":1254},{"route":"/category/:slug","hits":481},{"route":"/badge/:slug","hits":298},{"route":"/this-week","hits":238},{"route":"/ai-coding-tools-pricing","hits":226}],"unknown":[{"route":"__other_pages__","hits":37224},{"route":"/vendor/:slug","hits":10878},{"route":"/compare/:slug","hits":6761},{"route":"/alternative-to/:slug","hits":3835},{"route":"/api/changes","hits":3415},{"route":"/category/:slug","hits":2124},{"route":"/best/:slug","hits":1525},{"route":"/api/newest","hits":1303},{"route":"/api/categories","hits":1293},{"route":"/digest/:slug","hits":963}],"other_bot":[{"route":"__other_pages__","hits":3643},{"route":"/vendor/:slug","hits":3513},{"route":"/alternative-to/:slug","hits":532},{"route":"/compare/:slug","hits":257},{"route":"/best/:slug","hits":102},{"route":"/robots.txt","hits":59},{"route":"/category/:slug","hits":39},{"route":"/","hits":27},{"route":"/monitoring-comparison-2026","hits":16},{"route":"/sitemap.xml","hits":15}],"sdk_client":[{"route":"__other_pages__","hits":1072},{"route":"__unmatched__","hits":405},{"route":"/vendor/:slug","hits":162},{"route":"/","hits":153},{"route":"/trends/:slug","hits":62},{"route":"/criteria","hits":41},{"route":"/monitoring-comparison-2026","hits":28},{"route":"/llm-api-pricing","hits":21},{"route":"/api/offers","hits":17},{"route":"/pricing-changes","hits":12}],"internal":[{"route":"/health","hits":134},{"route":"__other_pages__","hits":81},{"route":"/api/pageviews","hits":27},{"route":"/api/traffic","hits":27},{"route":"/api/query-log","hits":18},{"route":"__unmatched__","hits":3},{"route":"/robots.txt","hits":3}]},"not_found_total":44022,"not_found_by_class":{"unknown":5946,"seo_crawler":831,"browser":24886,"other_bot":3760,"search_crawler":892,"sdk_client":4056,"ai_agent":3294,"internal":357},"redirect_total":8047,"redirects_by_class":{"search_crawler":276,"unknown":807,"browser":2325,"seo_crawler":523,"other_bot":1118,"ai_agent":2586,"sdk_client":238,"internal":174},"pre_split_dates":["2026-08-25"]},"web_vs_mcp":{"today":{"window_days":1,"web_hits":4910,"ai_agent_hits":434,"mcp_tool_calls":43,"web_to_mcp_ratio":114.2,"ai_agent_to_mcp_ratio":10.1},"last_7d":{"window_days":7,"web_hits":174884,"ai_agent_hits":10834,"mcp_tool_calls":1101,"web_to_mcp_ratio":158.8,"ai_agent_to_mcp_ratio":9.8},"last_30d":{"window_days":30,"web_hits":575939,"ai_agent_hits":50748,"mcp_tool_calls":1662,"web_to_mcp_ratio":346.5,"ai_agent_to_mcp_ratio":30.5}},"available":true,"error":null,"since_boot_by_class":{"internal":14,"ai_agent":1039,"search_crawler":2034,"seo_crawler":3006,"other_bot":949,"sdk_client":49,"browser":3205,"unknown":503},"since_boot_not_found":1010,"since_boot_redirects":185,"not_found_sample":[{"ts":"2026-09-23T09:45:51.771Z","client_class":"unknown","status":404,"path":"/feed/"},{"ts":"2026-09-23T09:45:50.723Z","client_class":"unknown","status":404,"path":"/wp-json/wp/v2/posts"},{"ts":"2026-09-23T09:41:18.504Z","client_class":"unknown","status":404,"path":"/api/v1/models"},{"ts":"2026-09-23T09:41:18.266Z","client_class":"unknown","status":404,"path":"/openai/v1/models"},{"ts":"2026-09-23T09:41:17.996Z","client_class":"unknown","status":404,"path":"/v1"},{"ts":"2026-09-23T09:41:17.747Z","client_class":"unknown","status":404,"path":"/models"},{"ts":"2026-09-23T09:41:17.481Z","client_class":"unknown","status":404,"path":"/v1/models"},{"ts":"2026-09-23T09:21:24.458Z","client_class":"browser","status":404,"path":"/vendor/rancher-desktop"},{"ts":"2026-09-23T09:15:53.859Z","client_class":"seo_crawler","status":404,"path":"/compare/heroku-for-startups-program-vs-vault"},{"ts":"2026-09-23T09:15:48.756Z","client_class":"unknown","status":404,"path":"/feed/"},{"ts":"2026-09-23T09:15:47.895Z","client_class":"unknown","status":404,"path":"/wp-json/wp/v2/posts"},{"ts":"2026-09-23T09:05:17.312Z","client_class":"other_bot","status":404,"path":"/vendor/pyup"},{"ts":"2026-09-23T08:45:46.305Z","client_class":"unknown","status":404,"path":"/feed/"},{"ts":"2026-09-23T08:45:45.658Z","client_class":"unknown","status":404,"path":"/wp-json/wp/v2/posts"},{"ts":"2026-09-23T08:34:12.414Z","client_class":"browser","status":404,"path":"/vendor/self-hosted-connect-apps"},{"ts":"2026-09-23T08:33:48.425Z","client_class":"unknown","status":404,"path":"/wp-admin/install.php"},{"ts":"2026-09-23T08:26:02.976Z","client_class":"sdk_client","status":404,"path":"/.ssh/id_ed25519"},{"ts":"2026-09-23T08:26:02.956Z","client_class":"sdk_client","status":404,"path":"/backup.tar.gz"},{"ts":"2026-09-23T08:26:02.845Z","client_class":"sdk_client","status":404,"path":"/.svn/wc.db"},{"ts":"2026-09-23T08:26:02.810Z","client_class":"sdk_client","status":404,"path":"/backup.zip"},{"ts":"2026-09-23T08:26:02.789Z","client_class":"sdk_client","status":404,"path":"/actuator/heapdump"},{"ts":"2026-09-23T08:26:02.742Z","client_class":"sdk_client","status":404,"path":"/database_backup.sql"},{"ts":"2026-09-23T08:26:02.679Z","client_class":"sdk_client","status":404,"path":"/.npmrc"},{"ts":"2026-09-23T08:26:02.581Z","client_class":"sdk_client","status":404,"path":"/.bash_history"},{"ts":"2026-09-23T08:26:02.561Z","client_class":"sdk_client","status":404,"path":"/.vscode/sftp.json"},{"ts":"2026-09-23T08:26:02.511Z","client_class":"sdk_client","status":404,"path":"/server.key"},{"ts":"2026-09-23T08:26:02.494Z","client_class":"sdk_client","status":404,"path":"/.env.production"},{"ts":"2026-09-23T08:26:02.393Z","client_class":"sdk_client","status":404,"path":"/secrets.json"},{"ts":"2026-09-23T08:26:02.376Z","client_class":"sdk_client","status":404,"path":"/docker-compose.yml"},{"ts":"2026-09-23T08:26:02.339Z","client_class":"sdk_client","status":404,"path":"/phpinfo.php"},{"ts":"2026-09-23T08:26:02.329Z","client_class":"sdk_client","status":404,"path":"/api/.env"},{"ts":"2026-09-23T08:26:02.201Z","client_class":"sdk_client","status":404,"path":"/.env"},{"ts":"2026-09-23T08:26:02.192Z","client_class":"sdk_client","status":404,"path":"/.git/HEAD"},{"ts":"2026-09-23T08:26:02.169Z","client_class":"sdk_client","status":404,"path":"/wp-admin/setup-config.php"},{"ts":"2026-09-23T08:26:02.161Z","client_class":"sdk_client","status":404,"path":"/_vti_pvt/service.pwd"},{"ts":"2026-09-23T08:26:02.021Z","client_class":"sdk_client","status":404,"path":"/user_secrets.yml"},{"ts":"2026-09-23T08:26:02.015Z","client_class":"sdk_client","status":404,"path":"/backup.sql"},{"ts":"2026-09-23T08:26:01.990Z","client_class":"sdk_client","status":404,"path":"/dump.sql"},{"ts":"2026-09-23T08:26:01.979Z","client_class":"sdk_client","status":404,"path":"/config.php"},{"ts":"2026-09-23T08:26:01.835Z","client_class":"sdk_client","status":404,"path":"/config.xml"},{"ts":"2026-09-23T08:26:01.831Z","client_class":"sdk_client","status":404,"path":"/database.sql"},{"ts":"2026-09-23T08:26:01.818Z","client_class":"sdk_client","status":404,"path":"/storage/logs/laravel.log"},{"ts":"2026-09-23T08:26:01.806Z","client_class":"sdk_client","status":404,"path":"/.ssh/id_rsa"},{"ts":"2026-09-23T08:15:49.302Z","client_class":"unknown","status":404,"path":"/feed/"},{"ts":"2026-09-23T08:15:48.448Z","client_class":"unknown","status":404,"path":"/wp-json/wp/v2/posts"},{"ts":"2026-09-23T08:10:42.323Z","client_class":"browser","status":404,"path":"/vendor/teamhood"},{"ts":"2026-09-23T08:02:42.922Z","client_class":"browser","status":404,"path":"/vendor/amazon-neptune"},{"ts":"2026-09-23T08:01:13.323Z","client_class":"browser","status":404,"path":"/vendor/amazon-workspaces"},{"ts":"2026-09-23T07:56:52.884Z","client_class":"browser","status":404,"path":"/vendor/google-workspace-enterprise-plus"},{"ts":"2026-09-23T07:55:20.861Z","client_class":"unknown","status":404,"path":"/mcp/.well-known/openid-configuration"}],"sessions":{"daily":[{"date":"2026-08-26","sessions":244},{"date":"2026-08-27","sessions":2218},{"date":"2026-08-28","sessions":2161},{"date":"2026-08-29","sessions":2233},{"date":"2026-08-30","sessions":2583},{"date":"2026-08-31","sessions":2089},{"date":"2026-09-01","sessions":1975},{"date":"2026-09-02","sessions":1949},{"date":"2026-09-03","sessions":1969},{"date":"2026-09-04","sessions":1956},{"date":"2026-09-05","sessions":1955},{"date":"2026-09-06","sessions":1948},{"date":"2026-09-07","sessions":1985},{"date":"2026-09-08","sessions":1970},{"date":"2026-09-09","sessions":1968},{"date":"2026-09-10","sessions":1973},{"date":"2026-09-11","sessions":1958},{"date":"2026-09-12","sessions":1990},{"date":"2026-09-13","sessions":2051},{"date":"2026-09-14","sessions":2073},{"date":"2026-09-15","sessions":2030},{"date":"2026-09-16","sessions":2110},{"date":"2026-09-17","sessions":1866},{"date":"2026-09-18","sessions":652},{"date":"2026-09-19","sessions":1073},{"date":"2026-09-20","sessions":2112},{"date":"2026-09-21","sessions":835},{"date":"2026-09-22","sessions":750},{"date":"2026-09-23","sessions":311}],"today":311,"recording_since":"2026-08-26","all_time":76472,"retention_days":90},"ai_agent_trigger_families":{"user_initiated":["ChatGPT-User","Claude-Code","Claude-User","MistralAI-User","Perplexity-User"],"search_index":["Amazonbot","Claude-SearchBot","OAI-SearchBot","PerplexityBot","YouBot"],"training":["Applebot-Extended","Bytespider","CCBot","ClaudeBot","GPTBot","Gemini","Google-Extended","cohere-ai","meta-externalagent","other-ai-crawler"],"ambiguous":["DuckAssistBot","agent-scraper"]},"notes":["`internal` covers requests to observability endpoints (/api/pageviews, /api/query-log, /api/traffic, /api/metrics, /health) plus anything carrying an agentdeals-internal user agent. Excluded from hits_excluding_internal and from web_vs_mcp.","A maintainer running a bare `curl` against a normal page is indistinguishable from any other scripted client and is counted as `sdk_client`, not `internal`, so it inflates web_hits. Coding agents are not: `Claude-Code` and `agent-scraper` are agent tooling classified `ai_agent`, and the automation that maintains this project uses them, so its own requests are inside ai_agent_hits. Read those two families as an upper bound on outside demand rather than a measure of it.","ai_agent_by_trigger regroups the same ai_agent hits by what each vendor documents as the trigger for a fetch: user_initiated where a person's request causes it, automated for crawling on the vendor's own schedule, ambiguous where the vendor documents both. automated_by_kind splits automated into search_index and training. unattributed is the remainder — hits older than detail_days carry a class but no family, and a family with no rule cannot be assigned. The four groups sum to total, which is by_class.ai_agent, so a split that drops hits is arithmetically visible.","`sdk_client` is deliberately not folded into `ai_agent`: undici/python-httpx traffic may be an agent or a scraper, and overclaiming it would make the headline number unquotable.","These counters store only the class and a bounded family label from a fixed table: the user agent and the address a request arrived with are read to derive them and are not persisted into these counters. That is a statement about this endpoint, not about the site — /api/query-log persists and publishes the user agent string itself, and /privacy is the document that describes the whole service.","Attribution starts from the deploy that introduced it — windows longer than that are short by however much history predates it, not wrong.","Class totals are retained for 30 days; the per-family and per-route breakdowns only for 7. Each window states its own detail_days rather than presenting 7 days of detail as 30.","hits_total, hits_excluding_internal, by_class and top_routes_by_class count requests we answered with content (2xx). Requests that did not resolve are in not_found_*, and 3xx answers are in redirect_* — a client that only ever 404s is not a client that read our pages (#1029).","not_found carries no route breakdown: an unmatched path has no route by definition. not_found_sample carries the actual paths, sanitized and truncated, for the last 50.","Each window states data_days_available alongside days. Where they differ the window is arithmetically correct and shorter than its label — read coverage before quoting it.","sessions.daily counts MCP sessions opened per UTC day and survives a deploy. It starts at sessions.recording_since; there is no measurement before that date, so a chart must start the line there rather than draw zero. sessions.all_time predates the series and cannot be split across dates."],"storage":{"configured":true,"last_write_at":"2026-09-23T09:50:32.309Z","last_write_error":null,"last_write_error_at":null,"last_read_error":null,"last_read_error_at":null,"write_failures":0,"read_failures":0,"quota_exhausted":false,"commands_since_boot":3464,"uptime_seconds":78885,"estimated_commands_per_day":3794,"estimated_commands_per_month":113820,"monthly_command_budget":300000,"over_budget":false,"pending_page_view_keys":16,"pending_request_log_entries":5,"request_log_dropped":0,"last_flush_at":"2026-09-23T09:50:32.309Z","flush_interval_seconds":60},"vendor_series":{"recording_date":"2026-09-23","slugs_today":1120,"clients_today":2101,"dedup_tracked":2101,"dedup_suppressed":0,"slug_overflow":0,"capped_slugs":0,"pending_write":true,"last_write_at":"2026-09-23T09:46:32.264Z","last_write_error":null,"write_failures":0,"writes":264,"carry_over_days":0,"dropped_days":0,"configured":true,"write_interval_seconds":300,"retention_days":90,"published":false}}