{
  "schema": "ocp.agent_analytics.v0",
  "sample": false,
  "missing": false,
  "free": true,
  "generated_at": "2026-10-24T12:36:50.041Z",
  "generated_at_et": "2026-10-24 08:36:50 ET",
  "source_file": "caddy-access-log",
  "source_window": {
    "start": "2026-10-14T17:19:58.889Z",
    "end": "2026-10-24T12:36:49.088Z",
    "tz": "UTC",
    "start_et": "2026-10-14 13:19:58 ET",
    "end_et": "2026-10-24 08:36:49 ET",
    "note": "Read-only caddy-access-log: 11 file(s). Query strings dropped. User-Agent classified then discarded."
  },
  "totals": {
    "requests": 168278,
    "distinct_masked_visitors": 1990,
    "agent_requests": 128980,
    "browser_requests": 12877,
    "unknown_requests": 26421,
    "agent_share_vs_browsers": 0.909
  },
  "status_mix": {
    "http_2xx": 45800,
    "http_402": 79062,
    "http_404": 41337,
    "other": 2079
  },
  "families": [
    {
      "name": "axios",
      "requests": 61634
    },
    {
      "name": "curl",
      "requests": 32257
    },
    {
      "name": "unknown",
      "requests": 26421
    },
    {
      "name": "x402-list",
      "requests": 20980
    },
    {
      "name": "browsers",
      "requests": 12877
    },
    {
      "name": "x402-observer",
      "requests": 5049
    },
    {
      "name": "ZeroBot",
      "requests": 3532
    },
    {
      "name": "hermes-contact-discovery",
      "requests": 2943
    },
    {
      "name": "BrickBlueBot",
      "requests": 853
    },
    {
      "name": "agentprobe",
      "requests": 280
    },
    {
      "name": "Googlebot",
      "requests": 212
    },
    {
      "name": "x402watch",
      "requests": 209
    }
  ],
  "doors": [
    {
      "name": "/other",
      "requests": 119212
    },
    {
      "name": "/",
      "requests": 2184
    },
    {
      "name": "/api/v1/pipecheck",
      "requests": 1559
    },
    {
      "name": "/.well-known/x402",
      "requests": 1433
    },
    {
      "name": "/api/v1/settleproof",
      "requests": 1417
    },
    {
      "name": "/api/v1/listseat",
      "requests": 1307
    },
    {
      "name": "/api/v1/pulse",
      "requests": 1217
    },
    {
      "name": "/api/v1/buyerwatch",
      "requests": 1197
    },
    {
      "name": "/api/v1/paytohealth",
      "requests": 1195
    },
    {
      "name": "/api/v1/geocode",
      "requests": 1188
    },
    {
      "name": "/api/v1/facdiff",
      "requests": 1184
    },
    {
      "name": "/api/v1/listcheck",
      "requests": 1182
    }
  ],
  "daily": [
    {
      "day": "2026-10-18",
      "requests": 15853
    },
    {
      "day": "2026-10-19",
      "requests": 19653
    },
    {
      "day": "2026-10-20",
      "requests": 12471
    },
    {
      "day": "2026-10-21",
      "requests": 18593
    },
    {
      "day": "2026-10-22",
      "requests": 18861
    },
    {
      "day": "2026-10-23",
      "requests": 17637
    },
    {
      "day": "2026-10-24",
      "requests": 10499
    }
  ],
  "family_rules": [
    "own-team: UA contains jmm-desk, openclaw-desk, ocp-self, or cos-box-probe",
    "StillOS: UA contains StillOS",
    "x402-observer: UA contains x402-observer",
    "x402-list: UA contains x402-list",
    "x402watch: UA contains x402watch",
    "BrickBlueBot: UA contains BrickBlueBot",
    "agentprobe: UA contains agentprobe",
    "PerplexityBot: UA contains PerplexityBot",
    "ClaudeBot: UA contains ClaudeBot",
    "GPTBot: UA contains GPTBot",
    "Googlebot: UA contains Googlebot",
    "Bingbot: UA contains bingbot",
    "Twitterbot: UA contains Twitterbot",
    "ZeroBot: UA contains ZeroBot",
    "hermes-contact-discovery: UA contains hermes-contact-discovery",
    "decixa: UA contains decixa.ai/bot",
    "rill-directory-probe: UA contains rill-directory-probe",
    "python-requests: UA contains python-requests",
    "httpx: UA contains httpx/",
    "aiohttp: UA contains aiohttp",
    "curl: UA contains curl/",
    "wget: UA starts with wget or contains Wget/",
    "axios: UA contains axios/",
    "Go-http-client: UA contains Go-http-client",
    "okhttp: UA contains okhttp",
    "node: UA is node, or contains node-fetch / undici",
    "browsers: Mozilla + Chrome/Firefox/Safari/Edg/OPR, and the UA does not contain bot",
    "unknown: empty UA or no rule matched. The page never stores or shows the raw User-Agent."
  ],
  "caveats": [
    "Caddy JSON access log only. No paid calls. No outbound requests.",
    "Raw IPs are never stored. Distinct visitors are a count of masked client_ip values.",
    "Only the User-Agent header is read. Other headers and query strings are dropped.",
    "The page shows family names and route groups, never raw UAs or original URIs.",
    "listed=true is never invented."
  ]
}
