{"sources":[{"id":"espn","name":"ESPN public endpoints","host":"site.api.espn.com","roles":["scores","schedule","standings","game","team"],"leagues":"all","licence":"grey","needs_key":null,"key_optional":false,"configured":true,"premium_keyed":null,"attribution":"Data via ESPN public endpoints (espn.com)","note":"Undocumented public JSON endpoints; broad multi-league coverage. Facts only (scores / status / standings / box numbers); odds and editorial are stripped."},{"id":"mlb","name":"MLB Stats API","host":"statsapi.mlb.com","roles":["scores","schedule","standings","game","team"],"leagues":["mlb"],"licence":"grey","needs_key":null,"key_optional":false,"configured":true,"premium_keyed":null,"attribution":"Data via MLB Stats API (statsapi.mlb.com)","note":"Official MLB public JSON API. Copyright notice restricts bulk/commercial reuse of the FEED; the underlying scores/standings are non-copyrightable facts we retransmit with attribution (NBA v. Motorola)."},{"id":"nhl","name":"NHL Web API","host":"api-web.nhle.com","roles":["scores","schedule","standings","game","team"],"leagues":["nhl"],"licence":"grey","needs_key":null,"key_optional":false,"configured":true,"premium_keyed":null,"attribution":"Data via NHL Web API (nhle.com)","note":"Official NHL public JSON API (undocumented, no explicit licence). Facts only, retransmitted with attribution."},{"id":"thesportsdb","name":"TheSportsDB","host":"www.thesportsdb.com","roles":["scores","schedule","standings","team"],"leagues":"all","licence":"commercial-clean","needs_key":"X402_THESPORTSDB_KEY","key_optional":true,"configured":true,"premium_keyed":false,"attribution":"Data via TheSportsDB (thesportsdb.com)","note":"Community sports database. The PREMIUM keyed tier is commercial-clean and is used as the anchor when X402_THESPORTSDB_KEY is set; the keyless free tier is a best-effort fallback flagged license_note:non_commercial."}],"leagues":[{"key":"mlb","name":"MLB","sport":"baseball"},{"key":"nhl","name":"NHL","sport":"hockey"},{"key":"nfl","name":"NFL","sport":"football"},{"key":"nba","name":"NBA","sport":"basketball"},{"key":"epl","name":"English Premier League","sport":"soccer"}],"routes":["/sports/scores","/sports/schedule","/sports/standings","/sports/game","/sports/team"],"invariants":["facts-only","no-odds","attribution-required","per-call-fetch","no-daemon","fixed-hosts-ssrf-safe","partial-on-failure-never-500"],"note":"Provenance, licensing and coverage of the sports-FACT sources the paid /sports/* routes fuse. Official league APIs + ESPN are the keyless core; TheSportsDB is the commercial-clean anchor when X402_THESPORTSDB_KEY is set.","disclaimer":"Sports FACTS (scores, status, schedules, standings, box-score numbers, rosters) fused from public/official sources with attribution. Informational only; not affiliated with, endorsed by, or a licensed feed of any league, team or data provider. No betting odds. Live figures may lag the source."}