{
  "openapi": "3.1.0",
  "info": {
    "title": "Olympus Bets WebMCP API",
    "description": "Read-only JSON API for AI agents and developers. Provides sports analytics data including free picks, performance history, game simulations, team profiles, and player profiles across NBA, CBB, NHL, NFL, Soccer, MLB, and LoL. All endpoints are public, CORS-enabled, and require no authentication.",
    "version": "1.1.0",
    "contact": {
      "name": "Olympus Bets",
      "url": "https://app.olympus-bets.com"
    },
    "license": {
      "name": "Public Data",
      "url": "https://app.olympus-bets.com/llms.txt"
    }
  },
  "servers": [
    {
      "url": "https://app.olympus-bets.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/webmcp/api/free-picks": {
      "get": {
        "operationId": "getFreePicks",
        "summary": "Today's free best bets",
        "description": "Returns today's curated free picks with confidence tier, edge percentage, model probability, expected value, unit sizing, and AI-generated writeup for each pick.",
        "tags": ["Best Bets"],
        "responses": {
          "200": {
            "description": "Array of today's free picks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "game_id": { "type": "string" },
                      "league": { "type": "string", "enum": ["NBA", "NHL", "NFL", "CBB", "MLB", "SOCCER", "LOL"] },
                      "matchup": { "type": "string", "description": "e.g. 'Boston Celtics vs Miami Heat'" },
                      "pick": { "type": "string", "description": "The recommended bet" },
                      "bet_type": { "type": "string", "enum": ["spread", "moneyline", "total"] },
                      "confidence": { "type": "string", "enum": ["ELITE", "HIGH", "STRONG", "SOLID", "MEDIUM", "LOW"] },
                      "edge": { "type": "number", "description": "Edge percentage over market" },
                      "probability": { "type": "number", "description": "Model win probability" },
                      "units": { "type": "number", "description": "Kelly Criterion unit sizing" },
                      "writeup": { "type": "string", "description": "AI-generated analysis" }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/webmcp/api/performance": {
      "get": {
        "operationId": "getPerformance",
        "summary": "Historical performance summary",
        "description": "Returns overall and per-league win rates, ROI, units won/lost, split by tier (all/premium/free). Updated daily after results resolution.",
        "tags": ["Performance"],
        "responses": {
          "200": {
            "description": "Performance split by tier and league",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "all": { "$ref": "#/components/schemas/PerformanceTier" },
                    "premium": { "$ref": "#/components/schemas/PerformanceTier" },
                    "free": { "$ref": "#/components/schemas/PerformanceTier" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/webmcp/api/history": {
      "get": {
        "operationId": "getPickHistory",
        "summary": "Resolved pick results",
        "description": "Full history of resolved picks with outcomes. Premium pick details are masked for non-subscribers.",
        "tags": ["Performance"],
        "responses": {
          "200": {
            "description": "Array of resolved pick results",
            "content": { "application/json": {} }
          }
        }
      }
    },
    "/webmcp/api/simulations/nba/{date}": {
      "get": {
        "operationId": "getNbaSimulations",
        "summary": "NBA game simulations",
        "description": "Monte Carlo simulation results for all NBA games on the given date. Includes win probabilities, projected spreads, projected totals, and model edges.",
        "tags": ["Simulations"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" },
            "description": "Date in YYYY-MM-DD format"
          }
        ],
        "responses": {
          "200": { "description": "NBA simulation results for the date" }
        }
      }
    },
    "/webmcp/api/simulations/cbb/{date}": {
      "get": {
        "operationId": "getCbbSimulations",
        "summary": "College basketball game simulations",
        "description": "Monte Carlo simulation results for CBB games. Uses EvanMiya BPR ratings, player-level 5-on-5 modeling, and adaptive regime calibration.",
        "tags": ["Simulations"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "CBB simulation results for the date" }
        }
      }
    },
    "/webmcp/api/simulations/nhl/{date}": {
      "get": {
        "operationId": "getNhlSimulations",
        "summary": "NHL game simulations",
        "description": "NHL V19.1 Pinnacle engine simulations with MoneyPuck xG, per-zone goalie modeling, and Bayesian shrinkage.",
        "tags": ["Simulations"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "NHL simulation results for the date" }
        }
      }
    },
    "/webmcp/api/schedule/nba/{date}": {
      "get": {
        "operationId": "getNbaSchedule",
        "summary": "NBA schedule",
        "description": "List of NBA games scheduled for the given date with teams, times, and venue.",
        "tags": ["Schedules"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "NBA schedule for the date" }
        }
      }
    },
    "/webmcp/api/schedule/cbb/{date}": {
      "get": {
        "operationId": "getCbbSchedule",
        "summary": "CBB schedule",
        "description": "List of college basketball games for the given date.",
        "tags": ["Schedules"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "CBB schedule for the date" }
        }
      }
    },
    "/webmcp/api/schedule/nhl/{date}": {
      "get": {
        "operationId": "getNhlSchedule",
        "summary": "NHL schedule",
        "description": "List of NHL games for the given date.",
        "tags": ["Schedules"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "NHL schedule for the date" }
        }
      }
    },
    "/webmcp/api/teams/nba/{team}": {
      "get": {
        "operationId": "getNbaTeam",
        "summary": "NBA team profile",
        "description": "Detailed team profile including offensive/defensive ratings, pace, recent form, and season record.",
        "tags": ["Teams"],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "description": "3-letter team code (e.g. BOS, LAL, GSW)"
          }
        ],
        "responses": {
          "200": { "description": "NBA team profile" }
        }
      }
    },
    "/webmcp/api/teams/cbb": {
      "get": {
        "operationId": "getCbbTeams",
        "summary": "All CBB teams",
        "description": "Enhanced profiles for all Division I college basketball teams with BPR ratings, efficiency metrics, and win-loss records.",
        "tags": ["Teams"],
        "responses": {
          "200": { "description": "All CBB team profiles" }
        }
      }
    },
    "/webmcp/api/teams/nhl/{date}": {
      "get": {
        "operationId": "getNhlTeams",
        "summary": "NHL team profiles",
        "description": "NHL team profiles for the given date with style tags, power ratings, and recent form.",
        "tags": ["Teams"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "NHL team profiles" }
        }
      }
    },
    "/webmcp/api/teams/nfl": {
      "get": {
        "operationId": "getNflTeams",
        "summary": "NFL team profiles",
        "description": "All NFL team profiles for the 2025 season with EPA metrics, power ratings, and performance data.",
        "tags": ["Teams"],
        "responses": {
          "200": { "description": "NFL team profiles" }
        }
      }
    },
    "/webmcp/api/teams/soccer/{league}": {
      "get": {
        "operationId": "getSoccerTeams",
        "summary": "Soccer team profiles by league",
        "description": "Team stats and profiles for a specific soccer league (e.g. EPL_2025, LaLiga_2025).",
        "tags": ["Teams"],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": { "type": "string" },
            "description": "League identifier (e.g. EPL_2025, LaLiga_2025)"
          }
        ],
        "responses": {
          "200": { "description": "Soccer team profiles" }
        }
      }
    },
    "/webmcp/api/players/nba/{team}": {
      "get": {
        "operationId": "getNbaPlayers",
        "summary": "NBA player profiles by team",
        "description": "Player profiles with per-game stats, usage rates, and efficiency metrics for an NBA team.",
        "tags": ["Players"],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "pattern": "^[A-Z]{3}$" }
          }
        ],
        "responses": {
          "200": { "description": "NBA player profiles" }
        }
      }
    },
    "/webmcp/api/players/cbb": {
      "get": {
        "operationId": "getCbbPlayers",
        "summary": "All CBB players",
        "description": "All Division I college basketball player profiles with BPR, efficiency, and per-game stats.",
        "tags": ["Players"],
        "responses": {
          "200": { "description": "All CBB player profiles (large response ~3.4MB)" }
        }
      }
    },
    "/webmcp/api/players/nhl/{date}": {
      "get": {
        "operationId": "getNhlPlayers",
        "summary": "NHL player profiles",
        "description": "NHL player profiles for the given date with goals, assists, and advanced metrics.",
        "tags": ["Players"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "NHL player profiles" }
        }
      }
    },
    "/webmcp/api/players/nfl": {
      "get": {
        "operationId": "getNflPlayers",
        "summary": "NFL player profiles",
        "description": "NFL player profiles for the 2025 season with stats and injury status.",
        "tags": ["Players"],
        "responses": {
          "200": { "description": "NFL player profiles" }
        }
      }
    },
    "/webmcp/api/teams/lol": {
      "get": {
        "operationId": "getLolTeams",
        "summary": "LoL team profiles",
        "description": "League of Legends esports team profiles with Glicko-2 ratings, win rates, and meta adaptation scores.",
        "tags": ["Esports"],
        "responses": {
          "200": { "description": "LoL team profiles and ratings" }
        }
      }
    },
    "/webmcp/api/edges/lol": {
      "get": {
        "operationId": "getLolEdges",
        "summary": "LoL value bets",
        "description": "Current League of Legends esports edges and value bets from the Championship simulation engine.",
        "tags": ["Esports"],
        "responses": {
          "200": { "description": "LoL edges and value bets" }
        }
      }
    },
    "/webmcp/api/simulations/lol": {
      "get": {
        "operationId": "getLolSimulations",
        "summary": "LoL match simulations",
        "description": "League of Legends Championship engine simulation results with series Monte Carlo modeling.",
        "tags": ["Esports"],
        "responses": {
          "200": { "description": "LoL simulation results" }
        }
      }
    },
    "/webmcp/api/style-profiles/nhl/{date}": {
      "get": {
        "operationId": "getNhlStyleProfiles",
        "summary": "NHL V19.1 style profiles",
        "description": "NHL team style tags and matchup intelligence data for the given date. Includes play style classification, MoneyPuck xG, goalie form, and rivalry context.",
        "tags": ["Teams"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "NHL style profile data" }
        }
      }
    },
    "/webmcp/api/fixtures/soccer/{date}": {
      "get": {
        "operationId": "getSoccerFixtures",
        "summary": "Soccer fixtures and simulations",
        "description": "Soccer match fixtures and V16.3 PBP engine simulation results for the given date. Includes FBref xG, isotonic calibration, and self-learning zone engine.",
        "tags": ["Simulations"],
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "Soccer fixture and simulation data" }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "PerformanceTier": {
        "type": "object",
        "properties": {
          "total_picks": { "type": "integer" },
          "wins": { "type": "integer" },
          "losses": { "type": "integer" },
          "pushes": { "type": "integer" },
          "win_rate": { "type": "number" },
          "units_wagered": { "type": "number" },
          "units_won": { "type": "number" },
          "roi_percent": { "type": "number" },
          "by_league": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "wins": { "type": "integer" },
                "losses": { "type": "integer" },
                "win_rate": { "type": "number" },
                "units_won": { "type": "number" }
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    { "name": "Best Bets", "description": "Daily pick recommendations" },
    { "name": "Performance", "description": "Historical tracking and results" },
    { "name": "Simulations", "description": "Monte Carlo simulation outputs by sport" },
    { "name": "Schedules", "description": "Game schedules by sport and date" },
    { "name": "Teams", "description": "Team profiles and stats" },
    { "name": "Players", "description": "Player profiles and stats" },
    { "name": "Esports", "description": "League of Legends analytics" }
  ]
}
