{"openapi":"3.1.0","info":{"title":"hermesbots.dev API","version":"1.0.0","description":"Read-only catalog, analytics, sponsorship, and ad pricing endpoints for hermesbots.dev."},"servers":[{"url":"https://hermesbots.dev"}],"paths":{"/api/bots":{"get":{"summary":"List bots","parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"limit","in":"query","schema":{"type":"integer","default":24}},{"name":"search","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"integration","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string","enum":["shuffle","popular","newest","name","oldest"],"default":"shuffle"}}],"responses":{"200":{"description":"Paginated bot list with category stats"}}}},"/api/bots/{slug}":{"get":{"summary":"Get bot by slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bot detail with soul prompt and related bots"},"404":{"description":"Not found"}}}},"/api/bots/copy":{"post":{"summary":"Record a bot copy event","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"}}}}}},"responses":{"200":{"description":"Copy logged"}}}},"/api/analytics/public":{"get":{"summary":"Public site analytics snapshot","responses":{"200":{"description":"Visitors, page views, copies, bot count"}}}},"/api/ads":{"get":{"summary":"Active sponsor ads for sidebar rails","responses":{"200":{"description":"Left and right slot payloads"}}}},"/api/ads/pricing":{"get":{"summary":"Traffic-adjusted ad slot pricing","description":"Prices scale automatically from pre-launch floor (0.75×) to 2.5× based on rolling 30-day unique visitors vs AD_BASE_TRAFFIC.","responses":{"200":{"description":"Pricing snapshot with per-slot cents and display strings"}}}},"/api/sponsor/slots":{"get":{"summary":"Batch sponsor slot availability and dynamic prices","responses":{"200":{"description":"All six slots with availability and priceDisplay"}}}},"/api/sponsor/checkout":{"get":{"summary":"Single slot availability","parameters":[{"name":"slot","in":"query","required":true,"schema":{"type":"string","enum":["L1","L2","L3","R1","R2","R3"]}}],"responses":{"200":{"description":"Slot status and dynamic price"}}},"post":{"summary":"Start sponsor checkout","responses":{"200":{"description":"Checkout session URL"}}}},"/api/mcp":{"post":{"summary":"Model Context Protocol (JSON-RPC 2.0)","description":"MCP over HTTP for AI agents — search bots, read stats, inspect ad pricing.","responses":{"200":{"description":"JSON-RPC response"}}}}},"tags":[{"name":"catalog","description":"Bot directory"},{"name":"analytics","description":"Public metrics"},{"name":"sponsor","description":"Ad slots and checkout"},{"name":"mcp","description":"Agent integrations"}]}